Man console_codes (4): تسلسلات الهروب والهروب لوحدة تحكم Linux. إدارة وحدة تحكم Linux

24.04.2019
تحتوي وحدة تحكم Linux على مجموعة كبيرة من عناصر التحكم لمحطات VT102 وECMA-48/ISO 6429/ANSI X364، بالإضافة إلى عدد من التسلسلات الفردية لتغيير لوحة الألوان، وتحويل مجموعة الأحرف، وما إلى ذلك. في الجداول أدناه (في العمود الثاني)، تتم الإشارة إلى الرمز ذاكري ECMA-48 أو DEC (إذا تم تعيين الأخير إلى DEC) لهذه الوظيفة. التسلسلات التي لا تحتوي على رمز ذاكري لا تنتمي إلى ECMA-48 أو VT102.

العملية الأولى التي تحدث بعد العملية العادية لإخراج المعلومات وإرسال دفق من أحرف وحدة التحكم إلى برنامج التشغيل (للإخراج الفعلي) هي ترجمة الرموز المستخدمة أثناء التشغيل العادي إلى رموز تستخدم للطباعة.

إذا كانت وحدة التحكم تعمل في وضع UTF-8، فسيتم تنظيم البايتات الواردة أولاً في Unicode 16 بت. وبخلاف ذلك، يتم تحويل كل بايت وفقًا لجدول البحث الحالي (الذي يحول البيانات إلى Unicode). انظر القسم مجموعات الأحرفأقل).

عادةً، يتم تحويل قيم Unicode إلى فهرس الخطوط، الذي يتم تخزينه في ذاكرة الفيديو بحيث تظهر الصورة المقابلة (الموجودة في ذاكرة القراءة فقط للفيديو) على الشاشة. لاحظ أن العمل مع Unicode (وأجهزة الكمبيوتر الحالية) يسمح فقط باستخدام 512 صورة مختلفة في وقت واحد.

إذا كانت قيمة Unicode الحالية عبارة عن حرف تحكم، أو إذا كان تسلسل الهروب قيد المعالجة حاليًا، فسيتم التعامل مع القيمة بشكل مختلف. بدلاً من تحويل القيمة إلى خط وعرضها كصورة، سيؤدي ذلك إلى تنفيذ إجراء محدد (مثل تحريك المؤشر) أو وظيفة تحكم أخرى. انظر القسم أدناه إدارة وحدة تحكم Linux.

من غير الصحيح تحديد تسلسل أجهزة التحكم الطرفية بشكل صريح في البرامج. يدعم Linux قاعدة الوظائف الطرفية com.terminfo(5). بدلاً من إدخال تسلسلات الهروب يدويًا، قد ترغب في استخدام مكتبة تستخدم معلومات المصطلحات أو أدوات مساعدة أخرى للقيام بهذه المهمة، مثل ncurses(3), tput(1) أو إعادة ضبط(1).

إدارة وحدة تحكم Linux

يصف هذا القسم جميع أحرف التحكم وتسلسلات الهروب التي تنفذ أوامر خاصة (أي أي شيء آخر غير مجرد طباعة حرف في موضع المؤشر الحالي) على وحدة تحكم Linux.

أحرف التحكم

يعتبر الحرف حرف تحكم إذا كان (قبل التحويل وفقًا لجدول التحويل) يحتوي على واحد من 14 رمزًا: 00 (NUL)، 07 (BEL)، 08 (BS)، 09 (HT)، 0a (LF)، 0b (VT)، 0c (FF)، 0d (CR)، 0e (SO)، 0f (SI)، 18 (CAN)، 1a (SUB)، 1b (ESC)، 7f (DEL). يمكنك ضبط وضع "إظهار أحرف التحكم" (انظر أدناه)، وفي هذه الحالة سيتم عرض الأحرف 07، 09، 0b، 18، 1a، 7f على الشاشة كصور. من ناحية أخرى، في وضع UTF-8، يتم التعامل مع جميع الرموز من 00 إلى 1f كأحرف تحكم، بغض النظر عن وضع "إظهار أحرف التحكم".

في حالة مواجهة حرف تحكم، يتم أخذه في الاعتبار على الفور وليس له أي تأثير آخر (حتى لو كان في منتصف تسلسل الهروب)، ويستمر تسلسل التحكم من الحرف التالي. ومع ذلك، من المحتمل أن يؤدي حرف ESC الذي يبدأ تسلسل هروب جديد إلى إلغاء تسلسل سابق غير مكتمل، ومن المؤكد أن الأحرف CAN وSUB ستنهي أي تسلسل هروب. أحرف التحكم المعترف بها هي: BEL، BS، HT، LF، VT، FF، CR، SO، SI، CAN، SUB، ESC، DEL، CSI. يقومون بتنفيذ الإجراءات القياسية لهم:

بيل (0x07، ^ ج) يصدر صوتًا؛ بكالوريوس (0x08، ^ ح) يحذف الحرف السابق (ينتقل إلى اليسار بعمود واحد، ولكن ليس أبعد من بداية السطر)؛ HT(0x09, ^ أنا) ينتقل إلى علامة الجدولة التالية أو إلى نهاية السطر إذا لم يتم تعيين علامات جدولة من قبل؛ لف (0x0A، ^ ج)، فاتو (0x0B، ^ ك) وFF (0x0C، ^ ل) قم بتعيين تغذية سطر، ويقوم LF/NL (في وضع السطر الجديد) بإجراء إرجاع إلى السطر؛ كر (0x0D، ^ م) يحدد حرف الإرجاع؛ لذا (0x0E، ^ ن) يقوم بتنشيط مجموعة الأحرف G1؛ سي (0x0F، ^ يا) لتشغيل مجموعة الرموز G0؛ يمكن (0x18، ^X) وSUB (0x1A، ^ ض) يقطع تسلسل الفحص؛ إيسك (0x1B، ^[ ) بدء تسلسل الفحص؛ يتم تجاهل DEL (0x7F)؛ CSI (0x9B) يعادل ESC [.

ESC ولكن ليس تسلسلات CSI

إي إس سي جريسإعادة ضبط.
إي إس سي دإندياناترجمة الخط.
إي إس سي إينيلخط جديد.
إي إس سي حهيئة تحرير الشامقم بتعيين علامة الجدولة في العمود الحالي.
إي إس سي مر.تغذية الخط العكسي.
إي إس سي زقررتعريف محدد لـ DEC. تقوم النواة بإرجاع السلسلة ESC [ ؟ 6 ج بدعوى أنه VT102.
إي إس سي 7ديسكحفظ الحالة الحالية (إحداثيات المؤشر، والسمات، ومجموعات الأحرف المحددة بواسطة G0، G1).
إي إس سي 8DECRCاستعادة آخر حالة محفوظة لـ ESC 7.
خروج [منظمة التضامن المسيحي الدوليةبداية تسلسل التحكم
خروج ٪ابدأ التسلسل باختيار مجموعة الأحرف
خروج ٪ @التحديد الافتراضي (ISO 646/ISO 8859-1)
إي إس سي % جيحدد UTF-8
إي إس سي % 8حدد UTF-8 (قديم)
إي إس سي رقم 8ديكالناختبار محاذاة شاشة DEC: يملأ الشاشة بأحرف E.
خروج (ابدأ التسلسل مع تحديد مجموعة الأحرف G0
إي إس سي (بالتحديد الافتراضي (تحويل ISO 8859-1)
إي إس سي (0اختيار إعادة ترميز الرسم VT100
إي إس سي (يوبدون إعادة ترميز --- مباشرة إلى ذاكرة القراءة فقط (ROM) الخاصة بالأحرف
إي إس سي (كإعادة ترميز المستخدم --- البطاقة
محملة بواسطة المرافق خرائط(8).
خروج)ابدأ التسلسل مع تحديد مجموعة الأحرف G1
(متبوعًا بأحد الرموز B، 0، U، K، كما هو الحال مع G0).
إي إس سي>ديكبنماضبط وضع إدخال الأرقام للوحة المفاتيح الإضافية
إيسك =ديكبامضبط وضع التحكم للوحة المفاتيح الإضافية
خروج]O.S.C.(يجب أن يكون: أمر نظام التشغيل، OSC) ESC ] P com.nrrggbb: قم بتعيين اللوحة، تحدد المعلمة 7 أحرف سداسية عشرية بعد آخر P:-(.هنا نيضبط اللون (0-15)، وفي rggbbيشار إلى القيم الحمراء / الخضراء / الزرقاء (0-255). ESC ] R: إعادة تعيين لوحة الألوان

تسلسلات ECMA-48 CSI

يتبع CSI (أو ESC[) سلسلة من المعلمات، وهي عبارة عن أرقام عشرية مفصولة بفواصل منقوطة (أكبرها NPAR(16)). المعلمة الفارغة أو المفقودة تساوي الصفر. يمكن أن يبدأ تسلسل المعلمات بعلامة استفهام واحدة.

ومع ذلك، بعد CSI [ (أو ESC [])، تتم قراءة حرف واحد ويتم تجاهل بقية التسلسل. (الهدف من ذلك هو عدم عرض مفتاح الوظيفة.)

يتم تحديد نتيجة تسلسل CSI من خلال طابع النهاية الخاص بها.

@ التراث الثقافي غير الماديأدخل حرف N فارغًا.
أCUUحرك المؤشر لأعلى خطوط N.
بCUD
جCUF
دالشبلحرك المؤشر إلى أعمدة N اليسرى.
هCNLحرك المؤشر لأسفل خطوط N إلى العمود 1.
FCPLحرك المؤشر لأعلى خطوط N إلى العمود 1.
زتشا
حكوبحرك المؤشر إلى الصف والعمود المحددين (ابدأ عند 1،1).
جالضعف الجنسيمسح الشاشة (افتراضيًا من المؤشر إلى نهاية الشاشة).
ESC [ 1 J: مسح من البداية إلى المؤشر.
ESC [ 2 J: مسح الشاشة بأكملها.
ESC [ 3 J: مسح الشاشة بأكملها، بما في ذلك المخزن المؤقت
التمرير الخلفي (منذ Linux 3.0).
كإلمسح الخط (الافتراضي من المؤشر إلى نهاية السطر).
ESC [ 1 K: مسح من بداية السطر إلى المؤشر.
ESC [ 2 K: امسح السطر بأكمله.
لاناأدخل N أسطر فارغة.
مد.حذف صفوف N.
صDCHحذف أحرف N في السطر الحالي.
Xصدىمسح أحرف N في السطر الحالي.
أHPRحرك المؤشر إلى الأعمدة N اليمنى.
جد.أ.استجابة ESC [؟ 6 ج: "أنا محطة VT102."
دنائب الرئيس التنفيذيانقل المؤشر إلى الصف المحدد في العمود الحالي.
هVPRحرك المؤشر لأسفل خطوط N.
FHVPحرك المؤشر إلى الصف والعمود المحددين.
زسيتم تحديده لاحقًالا توجد معلمة: امسح علامة التبويب الحالية.
ESC [ 3 g: حذف كافة علامات الجدولة.
حم.وضع التثبيت (انظر أدناه).
لر.م.وضع إعادة الضبط (انظر أدناه).
مSGRتحديد السمات (انظر أدناه).
نDSRتقرير الحالة (انظر أدناه).
سديكلالتحكم في المؤشرات على لوحة المفاتيح.
ESC [ 0 q: قم بإيقاف تشغيل كافة المؤشرات
ESC [ 1 q: تمكين قفل التمرير
ESC [ 2 q: تمكين Num Lock
ESC [ 3 q: تمكين Caps Lock
صDECSTBMتعيين منطقة التمرير. ستكون المعلمات هي الخطوط العلوية والسفلية.
س? حفظ موقع المؤشر.
ش? استعادة موقع المؤشر.
` HPAانقل المؤشر إلى العمود المحدد في الصف الحالي.

ضبط خيارات الرسومات ECMA-48

تسلسل ECMA-48 SGR لأحرف التحكم ESC [ حدودم يضبط سمات الشاشة. يمكن تحديد عدة سمات في تسلسل واحد. تتم معاملة المعلمة الفارغة (بين فاصلة منقوطة أو سطر بادئ أو حرف إنهاء) على أنها صفر.

معاملنتيجة
0 إعادة تعيين كافة السمات إلى قيمها الافتراضية
1 تعيين جريئة
2 تم ضبطه على أكثر سطوعًا (تمت محاكاته حسب اللون على شاشة العرض الملونة)
4 ضبط التسطير (يتم محاكاته حسب اللون على شاشة العرض الملونة) (يتم ضبط الألوان المستخدمة لمحاكاة التغميق أو التسطير باستخدام ESC ] ...)
5 تشغيل وميض
7 تمكين عكس الفيديو
10 إعادة تعيين الترميز المحدد وعلامة التحكم في الشاشة وتبديل علامة التعريف (في ECMA-48 المحدد كـ "الخط الأساسي").
11 حدد إعادة الترميز الفارغ، واضبط علامة التحكم في الشاشة، وأعد ضبط مفتاح علامة التعريف (في ECMA-48 تم تحديده على أنه "الخط البديل الأول").
12 حدد إعادة الترميز الفارغ، واضبط علامة التحكم في الشاشة، واضبط مفتاح علامة التعريف (في ECMA-48 يتم تحديده على أنه "الخط البديل الثاني"). يؤدي تبديل علامة التعريف إلى تبديل البت الأكثر أهمية في البايت قبل إعادة ترميزه وفقًا لجدول الترجمة.
21 تمكين الكثافة العادية (في ECMA-48 المحدد بـ "شرطة سفلية مزدوجة")
22 بدوره على كثافة طبيعية
24 قم بإيقاف التسطير
25 إيقاف الخفقان
27 قم بإيقاف تشغيل الفيديو المقلوب
30 اضبط لون الحرف على اللون الأسود
31 اضبط لون الرمز على اللون الأحمر
32 اضبط لون الرمز على اللون الأخضر
33 اضبط لون الحرف على اللون البني
34 اضبط لون الرمز على اللون الأزرق
35 اضبط لون الرمز على أرجواني
36 اضبط لون الرمز على اللون الأزرق
37 اضبط لون الحرف على اللون الأبيض
38 تمكين التسطير، تعيين لون الحرف الافتراضي
39 قم بإيقاف تشغيل التسطير، وقم بتعيين لون الحرف الافتراضي
40 ضبط لون الخلفية على اللون الأسود
41 تعيين لون الخلفية باللون الأحمر
42 ضبط لون الخلفية على اللون الأخضر
43 ضبط لون الخلفية على اللون البني
44 ضبط لون الخلفية على اللون الأزرق
45 ضبط لون الخلفية على أرجواني
46 ضبط لون الخلفية على اللون الأزرق
47 ضبط لون الخلفية على اللون الأبيض
49 تعيين لون الخلفية الافتراضي

مفاتيح الوضع ECMA-48

ESC [ 3 ساعات DECCRM (إيقاف افتراضي): إظهار أحرف التحكم. ESC [ 4 ساعات DECIM (إيقاف افتراضي): تمكين وضع الإدراج. ESC [20 ساعة LF/NL (إيقاف افتراضي): إخراج رمز CR تلقائيًا بعد LF أو VT أو FF.

أوامر إخراج الحالة ECMA-48

ESC [ 5 n رسالة حالة الجهاز (DSR): الاستجابة هي ESC [ 0 n (المحطة OK). ESC [ 6 n رسالة موضع المؤشر (CPR): الاستجابة هي ESC [ ذ ; سر، حيث س، صهي إحداثيات المؤشر.

تسلسلات الوضع الخاص DEC (DECSET/DECRST)

خروج [ ؟ ساعة واحدة من DECCKM (إيقاف التشغيل الافتراضي): عند تمكينه، ترسل مفاتيح المؤشر البادئة ESC O بدلاً من ESC [. خروج [ ؟ 3 ساعات DECCOLM (الافتراضي = 80 عمودًا): وضع تبديل رقم العمود 80/132. ينص الكود المصدري لبرنامج التشغيل على أن هذا الأمر وحده لا يكفي؛ بعض أدوات المستخدم المساعدة التي تستخدم أوضاعًا غير قياسية، مثل resizecons(8)، يجب تغيير سجلات التكوين الخاصة ببطاقة فيديو وحدة التحكم. خروج [ ؟ 5 ساعات DECCNM (إيقاف التشغيل الافتراضي): تمكين وضع الفيديو المقلوب. خروج [ ؟ 6 ساعات DECOM (إيقاف افتراضي): في حالة تمكينه، يتم اعتبار إحداثيات المؤشر نسبة إلى الزاوية اليسرى العليا من منطقة التمرير. خروج [ ؟ 7 ساعات DECAWM (ممكّن افتراضيًا): تمكين وضع النقل التلقائي. في هذا الوضع، يتم نقل الحرف الرسومي الذي تم إدخاله بعد العمود 80 (أو العمود 132، إذا تم تمكين DECCOLM) إلى بداية السطر التالي. خروج [ ؟ 8 ساعات DECARM (ممكّن افتراضيًا): تمكين التكرار التلقائي للأحرف عند الدخول من لوحة المفاتيح. خروج [ ؟ 9 ساعات X10 تقرير حالة الماوس (إيقاف افتراضي): اضبط وضع تقرير حالة الماوس على 1 (أو إعادة التعيين إلى 0)، انظر أدناه. خروج [ ؟ 25 ساعة DECTECM (ممكّن افتراضيًا): جعل المؤشر مرئيًا. خروج [ ؟ 1000 ساعة X11 تقرير حالة الماوس (إيقاف افتراضي): اضبط وضع تقرير حالة الماوس على 2 (أو إعادة التعيين إلى 0)، انظر أدناه.

تسلسلات CSI الخاصة بوحدة تحكم Linux

التسلسلات التالية ليست ECMA-48 ولا VT102. وهي متوفرة فقط في برنامج تشغيل وحدة تحكم Linux. الألوان في معلمات SGR: 0 = أسود، 1 = أحمر، 2 = أخضر، 3 = بني، 4 = أزرق، 5 = أرجواني، 6 = أزرق فاتح، 7 = أبيض.

إيسك [1؛ ن ] ضبط اللون نكما تسطير اللون
إيسك [2؛ ن ] ضبط اللون نكما يتلاشى اللون
إي إس سي[8]قم بتعيين زوج الألوان الحالي كسمات افتراضية.
إيسك [9؛ ن ] أطفئ الشاشة بعد ذلك ندقائق.
إي إس سي [ 10 ; ن ] ضبط تردد الإشارة الصوتية (بالهرتز).
إيسك [11؛ ن ] اضبط مدة الإشارة الصوتية (بالملي ثانية).
إيسك [12؛ ن ] حرك وحدة التحكم المحددة أمام الآخرين.
إي إس سي [13]قم بتشغيل الشاشة.
إيسك [14؛ ن ] اضبط الفاصل الزمني لإيقاف تشغيل الطاقة وفقًا لمعايير VESA (بالدقائق).
إي إس سي [15]انقل وحدة التحكم السابقة قبل وحدات التحكم الأخرى (منذ Linux 2.6.0).
إيسك [16؛ ن ] اضبط الفاصل الزمني وميض المؤشر بالمللي ثانية (منذ Linux 4.2)

مجموعات الأحرف

تحتوي النواة على معلومات حول 4 أنواع من ترجمة البايتات إلى أحرف وحدة التحكم في الشاشة. هذه الجداول الأربعة هي: أ) Latin1 -> الكمبيوتر الشخصي، ب) رسومات VT100 -> الكمبيوتر الشخصي، ج) الكمبيوتر الشخصي -> الكمبيوتر الشخصي، د) المعرفة من قبل المستخدم.

توجد مجموعتان من الأحرف في النظام، تسمى G0 وG1، إحداهما هي مجموعة الأحرف الحالية للنظام (G0 في الأصل). يدخل ^ نيتسبب في أن تصبح المجموعة G1 حالية، ^ يايجعل مجموعة G0 الحالية.

تشير هذه المتغيرات G0 وG1 إلى جدول الترجمة ويمكن للمستخدم تغييرها. في البداية يشيرون إلى الجدولين أ) و ب) على التوالي. التسلسلات ESC(B، ESC(0، ESC(U وESC(K) تجعل G0 تشير إلى جداول الترجمة a) وb) وc) وd)، على التوالي. التسلسلات ESC) B وESC) 0 وESC) U وESC) K تجعل G1 تشير إلى جدول الترجمة a) وb) وc) وd)، على التوالي.

يقوم تسلسل ESC c بإعادة ضبط الجهاز، وهو ما تريد القيام به عندما تكون هناك رسائل غير مرغوب فيها على الشاشة. التوصية المقدمة بعد "echo ^V^O" ستجعل G0 هي المجموعة الحالية فقط، ولكن ليس هناك ضمان بأن G0 يشير إلى الجدول a). بعض التوزيعات لديها برنامج إعادة ضبط(1)، والذي ينفذ فقط الأمر "echo ^ . يتم البحث عن الصورة النقطية المطابقة لـ s في الرمز ROM ويمكن تغييرها باستخدام setfont(8).

تتبع الماوس

لتتبع نشاط الماوس، من المفترض أن يصدر النظام xterm(1)-إشارات حالة الماوس المتوافقة. نظرًا لأن برنامج تشغيل وحدة التحكم لا يتعرف على جهاز مثل الماوس (أو نوع مشابه)، يتم إرسال هذه الإشارات إلى دفق إدخال وحدة التحكم فقط عندما يتلقى برنامج تشغيل المحطة الطرفية الظاهري إشارة ioctl لتحديث حالة الماوس. يجب أن يتم إنشاء إشارات ioctl هذه بواسطة تطبيقات المستخدم التي تدعم الماوس مثل الخدمة gpm(8).

المعلمة لجميع خلقها xterm(1) ستكون تسلسلات الهروب (إشارات الماوس) عبارة عن حرف واحد، رمزه يساوي معنى+040. على سبيل المثال، "!" يتوافق مع واحد. يبدأ تقرير نظام إحداثيات الشاشة عند 1.

في وضع التوافق X10، يؤدي الضغط على الزر إلى إرسال تسلسلات هروب تقوم بتشفير كل من موقع الماوس والمعلومات حول الزر الذي تم الضغط عليه. يتم تنشيط الوضع عند ESC [؟ 9 ساعات وينطفئ عند ESC [ ? 9 لتر. عندما تضغط على الزر xterm(1) يرسل ESC [ م com.bxy(6 أحرف)، حيث b هو الزر 1، وx وy هما إحداثيات x وy عند الضغط على الزر. هذه هي نفس الرموز التي تولدها النواة وتصدرها.

في وضع تتبع الماوس العادي (الذي لم يتم تنفيذه في Linux 2.0.24)، يتم إرسال تسلسلات الهروب عند الضغط على زر الماوس وتحريره. يتم أيضًا إرسال معلومات حول المُعدِّل. يتم تنشيط الوضع عند ESC [؟ 1000 ساعة وينطفئ عند إصدار ESC [ 1000 لتر. عند الضغط على زر أو تحريره xterm(1) قضايا ESC [ م com.bxy. قطعتان أقل أهمية بتحتوي على معلومات حول الأزرار: 0=MB1 مضغوط، 1=MB2 مضغوط، 2=MB3 مضغوط، 3=محرر. تحتوي البتات الأكثر أهمية على معلومات حول المعدلات التي تم الضغط عليها عند الضغط على الزر. تتم إضافة هذه المعلومات عند الضغط على: 4=Shift، 8=Meta، 16=Control. مرة أخرى: سو ذهي إحداثيات x وy للماوس عند معالجة الحدث. تعتبر إحداثيات الزاوية اليسرى العليا (1،1).

مقارنة مع المحطات الأخرى

تم وصف العديد من الأنواع الأخرى من المحطات الطرفية، مثل وحدة تحكم Linux، على أنها متوافقة مع VT100. بعد ذلك، سنناقش الاختلافات بين وحدة تحكم Linux والنوعين الرئيسيين الآخرين --- DEC VT102 و xterm(1).

التعامل مع أحرف التحكم

يتعرف النوع VT102 أيضًا على أحرف التحكم التالية:

يتم تجاهل NUL (0x00)؛ يقوم ENQ (0x05) بتشغيل رسالة استجابة عكسية؛ DC1(0x11، ^ س، XON) يستأنف الإرسال؛ DC3 (0x13، ^ س، XOFF) يؤدي إلى تجاهل VT100 (وإيقاف الإرسال) لجميع الرموز باستثناء XOFF وXON.

يمكن تمكين معالجة DC1/DC3 المشابهة لـ VT100 في برنامج التشغيل الطرفي.

إيسك ] 0 ; رسالة قصيرةشارعقم بتعيين اسم الرمز وعنوان النافذة على رسالة قصيرة.
إي إس سي ] 1 ; رسالة قصيرةشارعتعيين اسم الرمز على قدم المساواة رسالة قصيرة.
إي إس سي ] 2 ; رسالة قصيرةشارعاضبط عنوان النافذة على رسالة قصيرة.
إي إس سي ] 4 ; رقم; رسالة قصيرةشارعضبط لون ANSI رقممتساوي رسالة قصيرة.
إي إس سي ] 10 ; رسالة قصيرةشارعاضبط لون النص الديناميكي على رسالة قصيرة.
إي إس سي ] 4 6 ; اسمشارعتغيير ملف السجل إلى اسم(عادة معطل
في خيارات التجميع)
إي إس سي ] 5 0 ; fnشارعتثبيت الخط fn.

يتم التعرف على المعلمات التالية بقيمة تم تغييرها قليلاً (يتم الحفاظ على الحالة بشكل أكبر، والسلوك أقرب إلى VT100/VT220):

إي إس سي 7 ديسكحفظ المؤشر
إي إس سي 8 ديكركاستعادة المؤشر

معترف بها أيضا

كما أنه يتعرف على ESC % ويوفر تطبيق UTF-8 أكثر اكتمالاً من وحدة تحكم Linux.

تسلسلات منظمة التضامن المسيحي الدولية

الإصدارات القديمة xterm(1)، على سبيل المثال من X11R5، اعتبر وميض SGR بمثابة سمنة SGR. تعرض الإصدارات الأحدث التي تطبق ألوان ANSI، مثل XFree86 3.1.2A من عام 1995، سمة الوميض بالألوان. في الإصدارات الحديثة من xterm، يتم تنفيذ وميض SGR كنص وميض، والذي يمكن أيضًا جعله ملونًا كبديل لعرض SGR. لم تتعرف الإصدارات الأصلية من X11R6 على إعدادات ألوان SGR حتى الإصدار X11R6.8، والذي يتضمن XFree86 xterm. جميع تسلسلات ECMA-48 CSI CSI التي يفهمها Linux مفهومة أيضًا xterm، ومع ذلك، في xterm(1) هناك العديد من تسلسلات التحكم ECMA-48 وDEC التي تم تنفيذها والتي لا يفهمها Linux.

برنامج xterm(1) يتعرف على جميع تسلسلات الوضع الخاص لـ DEC الموضحة أعلاه، ولكن لا يتعرف على أي من تسلسلات الوضع الخاص لنظام التشغيل Linux. حول أوضاعك الخاصة xterm(١) يمكن قراءته في الوثيقة تسلسلات الهروب Xterm، كتبها إدوارد موي، وستيفن جيلديا، وتوماس إي. ديكي، وهي متاحة في توزيع X. هذه الوثيقة، على الرغم من اختصارها، لا تزال أكبر بكثير من صفحة الدليل هذه. نظرة عامة تاريخية في

يصف التغييرات على xterm.

برنامج com.vttest

يوضح العديد من تسلسلات التحكم هذه. في التوزيعة الأصلية xterm(1) يحتوي أيضًا على أمثلة للنصوص البرمجية التي تعلمك كيفية العمل مع الخصائص الأخرى.

ملحوظات

لا يمكن لتسلسل ESC 8 (DECRC) استعادة مجموعة الأحرف التي تم تغييرها بواسطة ESC %.

عيوب

في الإصدار 2.0.23، مجموعة CSI غير صحيحة وغير فعالة؛ ولا يتم تجاهل NULs ضمن تسلسلات الهروب.

تقوم بعض الإصدارات الأقدم من النواة (بعد 2.0) بتحليل تسلسلات الهروب ذات 8 بت. تستخدم ("رموز التحكم C1") هذه الرموز من 128 إلى 159 لتحل محل ESC [, ESC ] وتسلسلات التحكم الأولية المماثلة ثنائية البايت. وهي موجودة جزئيًا في النوى الحديثة (أو لم يتم التعرف عليها أو تعمل بسبب دعم UTF-8)، ولم يتم تنفيذها بالكامل، ويجب اعتبارها غير موثوقة.

لا تحترم تسلسلات "الوضع الخاص" لنظام التشغيل Linux قواعد ECMA-48 لتسلسلات الهروب من الوضع الخاص. على وجه الخصوص، تنتهي بـ ] ولا تستخدم أداة الإنهاء القياسية. يعد تسلسل OSC (لوحة الألوان المحددة) مشكلة كبيرة لأنه xterm(1) يعامله على أنه تسلسل هروب يتطلب نهاية السطر (ST). على عكس التسلسلات setterm(1) والتي سيتم تجاهلها (نظرًا لأنها ليست تسلسلات تحكم صالحة)، فسيتسبب تسلسل اللوحة في حدوث تعليق xterm(1) (على الرغم من أن الضغط على مفتاح العودة سيصلح ذلك). لاستيعاب التطبيقات التي تحتوي على تسلسلات هروب Linux ذات ترميز ثابت، قم بتثبيت المورد xterm(1) com.brokenLinuxOSCيساوي صحيحا.

يفترض الإصدار القديم من هذا المستند أن Linux سيتعرف على تسلسل الهروب ECMA-48 لإخفاء النص. تم تجاهلها.

تسلسلات ESC عبارة عن مجموعات أحرف خاصة

تمثل المسافات البيضاء والأحرف غير الرسومية في السلاسل والأحرف

الثوابت.

يتضمن استخدامها النموذجي تحديد إجراءات مثل

أحرف الإرجاع وعلامات التبويب، ولتحديد التمثيلات الحرفية

أحرف، مثل علامة الاقتباس المزدوجة ("). يتكون تسلسل الهروب من

من حرف الخط المائل العكسي (\) متبوعًا بحرف وعلامات

علامات الترقيم "علامة الاقتباس المفردة" ()، "علامة الاقتباس المزدوجة" (")،" الشرطة المائلة العكسية

شريط" (\) أو مجموعة من الأرقام.

إذا كانت الشرطة المائلة العكسية تسبق حرفًا غير مدرج في هذا

القائمة، يتم تجاهل الشرطة المائلة العكسية ويتم تمثيل الحرف كـ

حرفي. على سبيل المثال، تمثل الصورة "\c" الحرف "c" بالمعنى الحرفي

ثابت السلسلة أو الحرف.

يسمح لك التسلسلان "\ddd" و"\xdd" بتحديد أي حرف في ASCII

(كود واجهة المعلومات القياسية الأمريكية) كتسلسل

ثلاثة أرقام ثمانية أو رقمين سداسي عشري. على سبيل المثال، حرف الفضاء

يمكن تحديده كـ \010 أو \x08. يمكن تحديد رمز ASCII صفر كـ \0 أو

\x0. يمكن استخدام تسلسل ESC الثماني من واحد إلى

ثلاثة أرقام ثمانية. على سبيل المثال، يمكن تحديد حرف المسافة كـ \10. بالضبط

يمكن أيضًا استخدام تسلسل ESC الست عشري من

واحد إلى رقمين سداسي عشري. لذلك، التسلسل الست عشري

يمكن تحديد حرف المسافة كـ \x08 أو \x8.

تجدر الإشارة إلى أنه عند استخدام النظام الثماني أو الست عشري

تسلسل ESC في الأسطر، فأنت بحاجة إلى تحديد جميع الأرقام بالكامل

تسلسل ESC (ثلاثة أرقام للرقم الثماني ورقمين لـ

تسلسلات ESC الست عشرية). خلاف ذلك، إذا كان الرمز مباشرة

إن اتباع تسلسل ESC سوف يتبين بطريق الخطأ أنه ثماني أو

رقم سداسي عشري، سيتم تفسيره كجزء

تسلسلات. على سبيل المثال، سيكون السطر \x7Be11 عند طباعته

يبدو مثل ell لأنه سيتم تفسير \x7B على أنه حرف متعرج أيسر

اقواس (). ستكون السلسلة \x07Be11 هي التمثيل الصحيح لجرس الحرف

تليها كلمة الجرس.

تسمح لك تسلسلات ESC بإرسال أحرف تحكم غير رسومية

إلى الأجهزة الخارجية. على سبيل المثال، يتم استخدام تسلسل ESC \033 غالبًا

كالحرف الأول لأوامر التحكم في المحطة الطرفية والطابعة. غير رسومية

يجب دائمًا تمثيل الأحرف كتسلسلات ESC لأن

سيتم الاستخدام المباشر للرموز غير الرسومية في برامج C

الحصول على نتيجة غير متوقعة.

حرف الخط المائل العكسي (\) بالإضافة إلى تحديد تسلسلات ESC

يستخدم أيضًا كحرف استمرار السطر في تعريفات المعالج المسبق.

إذا كان حرف السطر الجديد يتبع حرف الخط المائل العكسي (\)،

ثم يتم تجاهل السطر الجديد ويتم التعامل مع السطر التالي كجزء

السطر السابق.


| 2 | | | |
  • تطوير لينكس
    • درس تعليمي

    عندما يكون printf قليلًا جدًا ويكون ncurses أكثر من اللازم

    عندما يكون هناك الكثير من البيانات، فإن إخراج printf القياسي في برنامج وحدة التحكم لا يكفي. خاصة إذا كان هناك الكثير من الأحداث المختلفة وتحولت البيانات المختلفة إلى قائمة مجنونة. يمكن أن تأتي هذه البيانات من وحدة التحكم عبر UART، وليست هناك حاجة للتفكير في أي نوع من برامج واجهة المستخدم الرسومية. قد يكون هناك أيضًا برنامج نصي bash عادي تريد إرفاق نوع من الواجهة الرسومية الزائفة به.

    سأقول على الفور أنه في البداية قد يبدو الأمر وكأنه إعادة اختراع العجلة، لأن هناك مكتبة Ncurses ممتازة. أنا لا أقلل من مزاياها على الإطلاق، ولكن غالبًا ما تكون قدراتها زائدة عن الحاجة. بالإضافة إلى ذلك، فهو غير قابل للنقل بشكل جيد لوحدات التحكم وهو بالتأكيد زائد عن الحاجة هناك. ولكن يمكنك رسم بعض وحدات الماكرو والوظائف للعمل مع الرسوم الزائفة بنفسك.

    صياغة المشكلة

    غالبًا ما يستخدم أولئك الذين كانوا يبرمجون وحدات التحكم وحدة تحكم مثل UART أو UART باللغة الروسية لعرض المعلومات أثناء تصحيح الأخطاء. لقد قدمت سابقًا وصفًا لهذه الواجهة في مشاركاتي على حبري. مع وجود كمية كبيرة بما فيه الكفاية من المعلومات المتنوعة، يصبح التقاطها مستحيلا تماما. اتضح أنه سجل متعدد الصفحات، خاصة إذا كانت هناك بيانات مستمرة من بعض أجهزة الاستشعار التناظرية، بالإضافة إلى أنك تحتاج إلى مراقبة حالة المنافذ، وما إلى ذلك. ونتيجة لذلك، يبدأ الأشخاص في كتابة المعالجات الخاصة بهم على جانب الكمبيوتر ويصبح الحل غير قابل للنقل تمامًا، والأهم من ذلك، يضيع الكثير من الوقت. ولكن، في الواقع، يمكنك احتواء جميع المعلومات المتنوعة من وحدة التحكم في نافذة طرفية واحدة واستخدامها بسهولة، دون الحاجة إلى كتابة برامج تابعة لجهة خارجية. ونتيجة لذلك، يصبح حلنا محمولاً (يلزم وجود أي محطة طرفية)، ويتم توفير الكثير من ساعات عمل المبرمج أثناء تصحيح الأخطاء.

    مثال منهجي

    سيكون هذا المثال أكثر من مجرد مثال تعليمي ومنهجي، ولكن يمكنك بسهولة تكييفه مع جهازك الحقيقي على أي وحدة تحكم. أيضًا، بالقياس، سيعمل كل هذا في bash، pyton، إلخ.

    لنفترض أن لدينا وحدة تحكم حيث يتم توصيل أجهزة استشعار الاتصال بمنفذ 8 بت يمكنه قبول حالات التشغيل والإيقاف، ويوجد مستشعر تناظري ثلاثي المحاور، ويجب علينا عرض حالتهم، بالإضافة إلى أن وحدة التحكم لديها الوقت والتاريخ والوقت. نريد التحكم في عرض الوقت الصحيح؛ وأخيرًا، قد يحدث حدث ما (على سبيل المثال، انقطاع التيار الكهربائي)، حيث يتعين علينا إبلاغ المشغل على وجه السرعة. دعونا نلخص:

    • حالة 8 دبابيس للمنفذ (تشغيل / إيقاف)
    • مستشعر ثلاثي المحاور (x، y، z) - مخرج منفصل لكل محور
    • التاريخ و الوقت
    • رسالة خطأ إلى المشغل
    يمكنك على الفور تقدير أنه إذا تم إرسال هذه المعلومات بغباء عبر UART، فستكون قمامة غير قابلة للقراءة. ولكن يمكن ترتيبها، ويجب أن يبدو كل شيء على هذا النحو (رسم في محرر النصوص):


    لقد قمت بنسخ الإطارات بغباء من مولودية. يمكن لأولئك الذين يريدون الجمال أن ينظروا إلى الإطارات الموجودة في Unicode. الأرقام الموجودة في الأعلى مكتوبة خصيصًا للإحداثيات.

    يبدو أن الفكرة واضحة، ولكن كيفية تنفيذ ذلك في المحطة؟ هذا هو المكان الذي يبدأ فيه السحر الحقيقي! " والآن يجب عليك بالتأكيد أن تهب! إذا لم تنفخ، فلن تحدث معجزة!"حمياك هاكوبيان

    تسلسلات الهروب

    في البداية، خططت لتقديم محاضرة حول التحكم الطرفي باستخدام تسلسل ESC في هذا الفصل. ولكن بعد ذلك ستنمو المقالة ببساطة إلى أبعاد غير لائقة، لذلك سأقدم بعض المفاهيم فقط، ويمكن العثور على الباقي على الإنترنت أو في الأدلة.
    المحطة الطرفية هي جهاز إدخال/إخراج يسمح بإدخال البيانات وعرضها. في السابق، كانت المحطة عبارة عن شاشة ولوحة مفاتيح متصلة بالكمبيوتر عبر منفذ COM، وفي الإصدارات السابقة كانت حتى مُبرِقة.


    Teletype Model 33 (صورة من ويكيبيديا)

    اليوم، المحطة هي برنامج يمكن أن يكون محطة افتراضية، كما هو الحال في Linux، أو محطة تعمل مع منفذ COM. كل هذه المحطات، حتى HyperTerminal الكلاسيكية، تلبي معايير معينة. كما قد تتخيل، تحتاج هذه المحطات إلى الإدارة. هناك أحرف ASCII عادية يتم عرضها على الشاشة، وهناك تسلسلات خاصة من الأحرف تتيح لك ضبط إحداثيات المؤشر، ومسح الشاشة، وضبط اللون، وما إلى ذلك. في مقالاتي عن حبري وجيكتايمز، لقد تطرقت بالفعل مرارا وتكرارا إلى موضوع تسلسلات ESC. استخدمناها في التحكم في العرض (الوصف في المفسد الذي لم يقرأه أحد)، وفي مقال عنه، والذي يتم التحكم فيه أيضًا بواسطة تسلسلات ESC.

    إذا عاد أي منكم إلى أيام BBS، فسوف يتذكر كم كانت هذه اللوحات "جميلة": ملونة، والتي تحتوي على حقول معينة لإدخال/إخراج المعلومات، وما إلى ذلك. تم عرض كل هذه الفرحة بمساعدة رموز التحكم هذه. يعتبر الحرف حرف تحكم إذا كان (قبل التحويل وفقًا لجدول التحويل) يحتوي على واحد من 14 رمزًا: 00 (NUL)، 0x07 (BEL)، 0x08 (BS)، 0x09 (HT)، 0x0a (LF)، 0x0b (VT)، 0x0c (FF)، 0x0d (CR)، 0x0e (SO)، 0x0f (SI)، 0x18 (CAN)، 0x1a (SUB)، 0x1b (ESC)، 0x7f (DEL). نحن مهتمون بشكل أساسي بالرمز ESC=0x1b أو "\033" أو "\e". يمكنك قراءة المزيد عن هذه التسلسلات في أدلة man console_codes، أو على الإنترنت باللغة الروسية.

    بالإضافة إلى التحكم في المؤشر، يمكنك أيضًا طلاء الجهاز بألوان مختلفة (إذا كان ملونًا بالطبع). يمكنك التحقق من ألوان جهازك باستخدام برنامج BASH النصي البسيط:

    ل fgbg في 38 48 ; قم بعمل #Foreground/Background للون باللون (0..256) ؛ do #Colors #Display the color echo -en "\e[$(fgbg);5;$(color)m $(color)\t\e ; ثم echo # سطر جديد تم تنفيذ echo # سطر جديد تم الخروج 0
    ستكون نتيجة التنفيذ شيئًا مثل هذا:


    يمكنك قراءة المزيد من التفاصيل حول الألوان والخطوط في وحدة التحكم (وأي محطات طرفية) مع الأمثلة.

    الآن، لديك بالفعل المعلومات اللازمة لجعل بيض عيد الفصح ممتعًا في نصوص BASH، مثل الصورة الموجودة في عنوان المنشور.


    يمكنك أن تقرأ بمزيد من التفصيل كيف صنعت بيضة عيد الفصح في باش في LiveJournal الخاص بي.

    سنقوم بتنسيق كل شيء بتنسيق si

    أعطي هذا المثال في فصولي الرئيسية في البرمجة وسأقدمه هنا. لنقم بإنشاء وحدات ماكرو لتعيين سمات النص ومسح الشاشة وتحريك المؤشر إلى الزاوية العليا وتحريك المؤشر إلى موضع معين:

    #define home() printf(ESC " OSC (اختصار "أوامر نظام التشغيل")
    ESC ] P nrrggbb: اضبط اللوحة بالمعلمات،
    محدد في 7 أرقام سداسية عشرية بعد آخر P:-(.
    هنا n هو اللون 0-16 ويشير rrggbb
    لاستخدام الأحمر/الأخضر/الأزرق (0-255).
    ESC ] R: إعادة تعيين لوحة الألوان

    تسلسلات ECMA-48 CSI
    CSI (أو ESC [) متبوعًا بالتسلسل
    المعلمات، وهي أرقام عشرية مفصولة
    فاصلة منقوطة (الأكبر هو NPAR(16)).
    المعلمة "الفارغة" (أو غيابها) تعادل
    صفر. يمكن أن يبدأ تسلسل المعلمات
    علامة استفهام واحدة. ومع ذلك، بعد CSI [(أو ESC
    [ [) يقرأ حرف واحد والباقي
    يتم تجاهل التسلسلات. (معنى هذا
    لتجاهل مفتاح الوظيفة المعروض).
    يتم تحديد نتيجة تحديد تسلسل CSI من خلاله
    حرف النهاية.
    @ICH أدخل N أحرف فارغة.
    CUU حرك المؤشر لأعلى لعدد N من الصفوف.
    B CUD حرك المؤشر لأسفل لعدد N من الصفوف.
    C CUF حرك المؤشر إلى الأعمدة N اليمنى.
    D CUB حرك المؤشر إلى أعمدة N اليسرى.
    E CNL حرك المؤشر لأسفل في صفوف N، إلى العمود رقم 1.
    F CPL حرك المؤشر لأعلى في صفوف N، إلى العمود رقم 1.
    G CHA حرك المؤشر إلى العمود المحدد في الصف الحالي.
    H CUP حرك المؤشر إلى الصف والعمود المحددين (ابدأ عند 1،1).
    J ED "مسح" الشاشة (افتراضيًا من المؤشر إلى نهاية الشاشة).
    ESC [ 1 J: "مسح" من بداية العمود إلى المؤشر.
    ESC [ 2 J: "مسح" الشاشة بأكملها.
    K EL "مسح" السطر (افتراضيًا من المؤشر إلى نهايته).
    ESC [ 1 K: "مسح" من بداية السطر إلى المؤشر.
    ESC [ 2 K: "مسح" السطر بأكمله.
    L IL أدخل N أسطر فارغة.
    M DL حذف خطوط N.
    P DCH حذف (مع إزاحة السطر) N من الأحرف في السطر الحالي.
    X ECH "مسح" (بدون إزاحة سطر) N من الأحرف في السطر الحالي.
    HPR حرك المؤشر إلى الأعمدة N اليمنى.
    ج DA الرد ESC [ ؟ 6 ج: "أنا VT102".
    d VPA حرك المؤشر إلى الصف المحدد في العمود الحالي.
    e VPR حرك المؤشر لأسفل لعدد N من الصفوف.
    f HVP حرك المؤشر إلى الصف والعمود المحددين.
    g TBC لا توجد معلمات: "مسح" علامة التبويب الحالية.
    ESC [ 3 g: حذف كافة علامات الجدولة.
    h وضع التثبيت SM (انظر أدناه).
    ل وضع إعادة تعيين RM (انظر أدناه).
    m SGR قم بتعيين السمات (انظر أدناه).
    n تقرير حالة DSR (انظر أدناه).
    q DECLL اضبط أوضاع تشغيل المؤشرات الموجودة على لوحة المفاتيح.
    ESC [ 0 q: قم بإيقاف تشغيل كافة المؤشرات
    ESC [ 1 q: قم بتشغيل مؤشر "Scroll Lock".
    ESC [ 2 q: قم بتشغيل مؤشر "Num Lock".
    ESC [ 3 q: قم بتشغيل مؤشر "Caps Lock".
    r DECSTBM تعيين منطقة التمرير؛ ستكون المعلمات هي الصفوف العلوية والسفلية.
    س؟ حفظ موقع المؤشر.
    أنت؟ استعادة موقع المؤشر.
    ` HPA حرك المؤشر إلى العمود المحدد في الصف الحالي.

    ECMA-48 ضبط خيارات الرسومات
    تسلسل ECMA-48 SGR لأحرف التحكم ESC [
    م يضبط سمات الشاشة. بعض
    يمكن تحديد السمات في تسلسل واحد.

    بارام. نتيجة
    0 إعادة تعيين كافة السمات إلى قيمها الافتراضية
    1 مجموعة جريئة
    مجموعتان أكثر سطوعًا (لون محاكاة على شاشة ملونة)
    4 مجموعات من التسطير (محاكاة حسب اللون على شاشة ملونة)؛
    يتم ضبط الألوان المستخدمة لمحاكاة التغميق أو التمييز
    باستخدام إيسك] ...
    5 تشغيل وميض
    7 تمكين وضع الفيديو المقلوب
    10 إعادة تعيين التوزيع المحدد، أعلام التحكم في الشاشة
    وقم بتبديل علامة التعريف
    11 حدد التوزيع الفارغ، واضبط علامة التحكم في الشاشة،
    إعادة تعيين مفتاح علامة التعريف.
    12 حدد التوزيع الفارغ، واضبط علامة التحكم في الشاشة،
    تمكين مفتاح علامة التعريف. تبديل علامة التعريف
    يحدد تبديل البت الأكثر أهمية في البايت
    قبل تحويلها حسب جدول التوزيع.
    21 تمكين وضع الكثافة العادية (غير متوافق مع ECMA-48)
    22 قم بإيقاف تشغيل وضع الشدة العادية
    24 إيقاف التسطير
    25 إيقاف وميض
    27 إيقاف تشغيل الفيديو المقلوب
    30 مجموعة شخصية لون أسود
    31 مجموعة حرف اللون الأحمر
    32 مجموعة شخصية باللون الأخضر
    33 مجموعة شخصية لون بني
    34 مجموعة شخصية باللون الأزرق
    35 مجموعة من الشخصيات ذات اللون الأرجواني
    36 مجموعة شخصية باللون الأزرق
    37 تعيين لون الحرف إلى اللون الأبيض
    38 تمكين التسطير، تعيين لون الحرف الافتراضي
    39 قم بإيقاف التسطير وضبط لون الحرف الافتراضي
    40 تعيين لون الخلفية إلى اللون الأسود
    41 مجموعة لون الخلفية أحمر
    42 مجموعة لون الخلفية أخضر
    43 اضبط لون الخلفية على اللون البني
    44 مجموعة لون الخلفية أزرق
    45 تعيين لون الخلفية إلى أرجواني
    46 مجموعة لون الخلفية أزرق
    47 تعيين لون الخلفية إلى اللون الأبيض
    49 تعيين لون الخلفية الافتراضي

    تبديل وضع ECMA-48
    إي إس سي [ 3 ساعات
    DECCRM (إيقاف افتراضي): عرض
    شخصيات التحكم.

    إي إس سي [ 4 ساعات
    DECIM (إيقاف افتراضي): ضبط الوضع
    الإدراج / الاستبدالات.

    إي إس سي [ 20 ساعة
    LF/NL (إيقاف التشغيل الافتراضي): تلقائي
    عرض رمز CR بعد الرموز: LF أو VT أو FF.

    أوامر الإبلاغ عن الحالة ECMA-48
    إي إس سي [ 5 ن
    رسالة حالة الجهاز (DSR): الرد
    هو ESC [0 n (المحطة موافق).

    ESC [ 6 ن
    رسالة موضع المؤشر (CPR): الرد هو
    ESC[y; x R، حيث x,y هي الإحداثيات
    المؤشر.

    تسلسلات DEC للوضع الخاص (DECSET/DECRST)
    غير مشمول في ECMA-48. سيتم سرد ما يلي
    تسلسل تثبيت الوضع؛ في تسلسل
    لإعادة ضبط الأوضاع، يتم استبدال الحرف الأخير "h" بـ "l".

    خروج [ ؟ 1 ساعة
    DECCKM (تعطيل افتراضي): إذا تم تمكينه، إذن
    تنتج مفاتيح المؤشر إشارة تبدأ بـ ESC
    يا، ليس مع ESC [.

    خروج [ ؟ 3 ساعات
    DECCOLM (إيقاف التشغيل الافتراضي = 80 عمودًا):
    وضع لتبديل عدد الأعمدة إلى 80 أو
    132. في الإصدارات الأصلية من برنامج التشغيل تم تحديد ذلك
    وهذا الأمر لا يكفي؛ بعض
    المرافق المستخدم التي تستخدم
    الأوضاع غير القياسية، مثل resizecons(8)،
    يجب تغيير سجلات إعدادات وحدة التحكم
    بطاقات الفيديو.

    خروج [ ؟ 5 ساعات
    DECCNM (تعطيل افتراضي): تمكين
    وضع الفيديو المقلوب.

    خروج [ ؟ 6 ساعات
    DECOM (تعطيل افتراضي): إذا تم تمكينه، إذن
    تعتبر إحداثيات المؤشر نسبة إلى
    الزاوية اليسرى العليا في منطقة التمرير.

    خروج [ ؟ 7 ساعات
    DECAWM (ممكّن افتراضيًا): تمكين الوضع
    النقل التلقائي. في هذا الوضع، الرمز الرسومي
    تم إدخاله بعد العمود رقم 80 (أو رقم 132 إذا كان DEC-)
    تم تمكين COLM)، للانتقال إلى بداية اليوم التالي
    خطوط.

    خروج [ ؟ 8 ساعات
    DECARM (ممكّن افتراضيًا): تمكين الوضع
    تكرار الأحرف تلقائيًا عند الضغط على أحد المفاتيح
    لوحات المفاتيح.

    خروج [ ؟ الساعة 9
    تقرير حالة الماوس X10 (افتراضي
    الماوس يساوي واحد أو صفر (إعادة تعيين)، انظر أدناه.

    خروج [ ؟ 25 ساعة
    DECCM (ممكّن افتراضيًا): إنشاء المؤشر
    مرئي.

    خروج [ ؟ 1000 ساعة
    تقرير حالة الماوس X11 (افتراضي
    إيقاف): ضبط وضع تقرير الحالة
    الماوس يساوي 2 أو صفر (إعادة تعيين)، انظر أدناه.

    تسلسلات CSI الخاصة بوحدة تحكم Linux
    التسلسلات التالية ليست ECMA-48- ولا
    تسلسل VT102. هم "الأصلية" ل
    برامج تشغيل وحدة التحكم Linux. الألوان في معلمات SGR: 0 =
    أسود، 1=أحمر، 2=أخضر، 3=بني، 4=
    أزرق، 5 = أرجواني، 6 = أزرق فاتح، 7 = أبيض.
    إيسك [1؛ n] قم بتعيين اللون n كلون للتسطير
    إيسك [2؛ n] قم بتعيين اللون n كلون باهت
    ESC [ 8 ] اضبط زوج الألوان الحالي على السمات الافتراضية.
    إيسك [9؛ n ] اضبط الشاشة لبدء "التنظيف" بعد n دقيقة.
    إي إس سي [ 10 ; n ] اضبط تردد إشارة الصوت (بالهرتز).
    إيسك [11؛ n ] ضبط مدة الإشارة الصوتية بـ (ملي ثانية).
    إيسك [12؛ n ] حرك وحدة التحكم المحددة أمام الآخرين.
    ESC [ 13 ] استعادة الشاشة بعد "التنظيف".
    إيسك [14؛ n ] اضبط الفاصل الزمني لإيقاف تشغيل VESA (بالدقائق).

    مجموعات الشخصيات
    تحتوي النواة على معلومات حول 4 أنواع من ترجمة البايت
    رموز وحدة التحكم في الشاشة. هذه الجداول الأربعة
    التحويل: أ) Latin1 -> الكمبيوتر الشخصي، ب) رسومات VT100 ->
    الكمبيوتر الشخصي، ج) الكمبيوتر الشخصي -> الكمبيوتر الشخصي، د) المحدد من قبل المستخدم. في النظام
    هناك عمومًا مجموعتان من الأحرف تسمى G0 وG1،
    وأحدها هو مجموعة النظام الحالية (في الأصل
    هذا هو G0). يؤدي إدخال ^N إلى جعل المجموعة G1 حالية، و^O
    يجعل مجموعة G0 الحالية. تشير المتغيرات G0 وG1
    جداول الرموز ويمكن للمستخدم تغييرها.
    في البداية يشيرون إلى الجدولين أ) و ب)
    على التوالى. تسلسل ESC (B وESC (0 و
    يؤدي ESC(U وESC(K) إلى قيام G0 بالإشارة إلى الجداول
    الترجمات أ)، ب)، ج) و د) على التوالي.
    التسلسلات ESC) B وESC) 0 وESC) U وESC) K
    اجعل G1 يشير إلى جداول الترجمة أ) و ب) و ج) و
    د) وفقا لذلك. ينتج عن تسلسل ESC c
    إعادة تعيين المحطة، وهذا هو، إلى ما تحتاجه ومتى
    وجود "القمامة" على الشاشة. التوصية المذكورة بعد
    "echo ^V^O" سيجعل G0 المجموعة الحالية فقط، ولكن ليس كذلك
    ليس هناك ما يضمن أن G0 سيشير إلى الجدول أ). في
    تحتوي بعض الإصدارات على إعادة تعيين البرنامج (1)، والتي فقط
    ينفذ الأمر "echo ^" فقط
    يتم البحث عن الصورة المقابلة لـ s في الرمز ROM و
    يمكن تغييرها باستخدام setfont(8).

    استخدام الماوس
    يتضمن نظام تتبع نشاط الماوس الإصدار
    إشارات حالة الماوس المتوافقة مع xterm. منذ السائق
    لا تتعرف وحدة التحكم على جهاز مثل الماوس (أو جهازه
    اكتب)، ثم يتم إرسال هذه الإشارات إلى دفق الإدخال
    وحدة التحكم، فقط عندما يكون برنامج تشغيل المحطة الظاهرية
    يتلقى إشارة ioctl لتحديث حالة الماوس. هؤلاء
    يجب أن يتم إنشاء إشارات ioctls من قبل المستخدم
    التطبيقات التي تدعم الماوس (مثل
    gpm(8) الشيطان). المعلمة لجميع xterm التي تم إنشاؤها
    تسلسل ESC (إشارات حركة الماوس)
    سيكون هناك حرف واحد رمزه هو القيمة+040. على سبيل المثال،
    `!" يتوافق مع واحد. نظام إحداثيات الشاشة متى
    يعتمد تتبع الماوس على علامة الوحدة. في
    وضع التوافق X10 عند الضغط على الأزرار
    يتم إرسال تسلسلات ESC فيها
    حالة الماوس ومعلومات حول الزر الذي تم الضغط عليه. وضع
    يعمل عند ESC [ ؟ 9 ساعات وينطفئ عند
    إصدار ESC [؟ 9 لتر. عند الضغط على زر يرسل xterm
    ESC [ M bxy (6 أحرف)، حيث b هو الزر 1 وx وy
    يساوي إحداثيات x وy عند الضغط على هذا الزر. هذا
    نفس الرموز التي تولد وتخرج نواة النظام. في
    وضع تتبع الماوس العادي (والذي لم يكن كذلك
    تم تنفيذه في Linux 2.0.24) تسلسلات ESC
    يتم إرسالها عند الضغط على زر الماوس ثم تحريره.
    يتم أيضًا إرسال معلومات حول المُعدِّل. يبدأ
    الوضع عند إصدار ESC [؟ 1000 ساعة ويطفئ عند التوزيع
    إي إس سي [ 1000 لتر. عند الضغط على زر xterm والإفراج عنه
    قضايا ESC [M bxy. يحتوي الجزءان السفليان من b على معلومات
    حول الأزرار: 0=تم الضغط على MB1، 1=تم الضغط على MB2، 2=تم الضغط على MB3،
    3=مفرج عنه. تحتوي البتات الأكثر أهمية على معلومات حول أي منها
    تم إيقاف تشغيل المعدلات عند الضغط على الزر. هذا
    تتم إضافة المعلومات عند الضغط عليها: 4=Shift، 8=Meta،
    16=التحكم. مرة أخرى: x وy هما إحداثيات x وy
    الماوس عند معالجة الحدث. الإحداثيات العلوية اليسرى
    تعتبر الزوايا (1،1).

    مقارنة مع المحطات الأخرى
    يتم وصف العديد من الأنواع الأخرى من المحطات مثل
    وحدات تحكم Linux (مثل "المتوافقة مع VT100").
    الاختلافات بين وحدة تحكم Linux والاثنين الآخرين الأكثر أهمية
    الأنواع، DEC VT102 وxterm(1).

    التعامل مع أحرف التحكم
    يتعرف النوع vt102 أيضًا على أحرف التحكم التالية:

    تم تجاهل NUL (0x00)؛

    بدأت رسالة الاستجابة العكسية ENQ (0x05)؛

    DC1 (0x11، ^Q، XON) تابع الإرسال؛

    يشير DC3 (0x13، ^S، XOFF) إلى أن vt100 مطلوب
    تجاهل وإيقاف إرسال جميع الرموز لـ
    باستثناء XOFF وXON

    يمكن بدء معالجة DC1/DC3 المشابهة لـ VT100
    سائق تي تي.

    يتعرف برنامج xterm (في وضع vt100) على التحكم
    الرموز التالية: BEL، BS، HT، LF، VT، FF، CR، SO، SI،
    خروج.

    تسلسل ESC
    لم يتم تنفيذ تسلسلات وحدة التحكم VT100 في
    وحدات تحكم لينكس:

    ESC N SS2 Shift بمقدار 2. (حدد مجموعة الأحرف G2 فقط للتالي
    رمز.)
    ESC O SS3 Shift بمقدار 3. (حدد مجموعة الأحرف G3 فقط للتالي
    رمز.)
    خط التحكم في جهاز ESC P DCS (ينتهي بـ ESC\)
    ESC X SOS بداية الخط.
    ESC ^ PM رسالة خاصة (تنتهي بـ ESC\)
    ESC\ST إنهاء 0 أسطر
    ESC * ... تحديد مجموعة الأحرف G2
    ESC +... تحديد مجموعة أحرف G3
    يتعرف برنامج xterm (في وضع vt100) على: ESC c, ESC #
    8، ESC >، ESC =، ESC D، ESC E، ESC H، ESC M، ESC N، ESC O،
    ESC P ... ESC ESC Z (ينتج التسلسلات ESC [
    ؟ 1 ؛ إجابة 2C: `أنا vt100 مع تحسين
    معلمات الفيديو") وESC ^ ... ESC بنفس القيم،
    والتي تم الإشارة إليها أعلاه. مقبول: ESC (، ESC)، ESC *،
    ESC +,- متبوعًا بـ 0، A، B للأحرف الخاصة
    أوضاع DEC ورسم الخط، UK وUSASCII على التوالي.
    ESC ] مقبولة لتعيين تشغيل هذه الموارد،
    كيف:

    إيسك ] 0 ; txt BEL قم بتعيين اسم الرمز وعنوان النافذة في وضع txt.
    إي إس سي ] 1 ; txt BEL تعيين اسم الرمز في وضع txt.
    إي إس سي ] 2 ; txt BEL قم بتعيين عنوان النافذة في وضع txt.
    إي إس سي ] 4 6 ; name BEL قم بتغيير ملف السجل إلى الاسم (يتم تعطيله عادةً
    خيارات التجميع)
    إي إس سي ] 5 0 ; fn BEL قم بتعيين الخط fn.
    يتم التعرف على المعلمات التالية مع تعديل طفيف
    معنى:

    ESC F: قم بتمرير المؤشر إلى الزاوية اليسرى السفلية من الشاشة (إذا كان ممكّنًا
    الموارد hpLowerleftBugCompat)
    ESC l حظر الذاكرة (لمحطات HP).
    أقفال الذاكرة فوق المؤشر.
    ESC m يفتح الذاكرة (لمحطات HP).
    ESC n LS2 أدخل مجموعة الأحرف G2.
    ESC o LS3 أدخل مجموعة أحرف G3.
    إي إس سي | LS3R أدخل مجموعة أحرف G3 كـ GR.
    ESC ) LS2R أدخل مجموعة الأحرف G2 كـ GR.
    ليس له أي تأثير واضح في إكستيرم.
    ESC ~ LS1R أدخل مجموعة الأحرف G1 كـ GR.
    ليس له أي تأثير واضح في إكستيرم.
    لم يتم التعرف على نسبة ESC...

    تسلسلات منظمة التضامن المسيحي الدولية
    برنامج xterm (حسب XFree86 3.1.2G) لا يتعرف
    الخفقان أو وضع التخفي SGRs. إصدارات X11R6 ليست كذلك
    التعرف على إعدادات الألوان SGR. جميع ECMA-48 الأخرى
    تسلسلات CSI المعترف بها بواسطة Linux موجودة أيضًا
    يتم التعرف عليها بواسطة xterm والعكس صحيح. سوف يقوم برنامج xterm
    التعرف على جميع تسلسلات الوضع الخاص لـ DEC،
    المذكورة أعلاه، ولكن لن يتم التعرف على أي منها
    تسلسل الوضع الخاص في Linux ل
    مناقشة تسلسل الوضع الخاص لـ xterm
    قم بالرجوع إلى مستند XtermControlSequences الذي تم إنشاؤه بواسطة
    إدوارد موي وستيفن جيلديا ويرافقهما
    توزيع نظام النافذة X.

    تم العثور على أخطاء
    في الإصدار 2.0.23، مجموعة CSI غير صحيحة و
    غير صالح، ولا يتم تجاهل NUL داخليًا
    تسلسل ESC.