console_codes(4)

الاسم
console_codes - تسلسلات التحكم والهروب لصدفة لينكس

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

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

إذا كانت الصدفة في وضع UTF-8، تُجمع البايتات الواردة أولاً في رموز يونيكود 16-بت. خلاف ذلك، يُحول كل بايت وفقًا لجدول التعيين الحالي (الذي يترجمه إلى قيمة يونيكود). راجع قسم Character Sets أدناه للمناقشة.

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

إذا كانت قيمة يونيكود الحالية هي محرف تحكم، أو كنا نعالج حاليًا تسلسل هروب، فستُعامل القيمة معاملة خاصة. بدلاً من تحويلها إلى فهرس خط وتصويرها كشكل، قد تؤدي إلى تحريك المؤشر أو وظائف تحكم أخرى. راجع قسم Linux Console Controls أدناه للمناقشة.

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

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

محارف التحكم

يُعد المحرف محرف تحكم إذا كان لديه (قبل التحويل وفقاً لجدول التعيين) أحد الرموز الـ 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. وهي تفعل ما هو متوقع منها:

BEL (0x07, ^G)
    يُصدر صفيراً؛

BS (0x08, ^H)
    يتراجع عموداً واحداً (ولكن ليس قبل بداية السطر)؛

HT (0x09, ^I)
    ينتقل إلى علامة الجدولة التالية أو إلى نهاية السطر إذا لم تكن هناك علامة جدولة سابقة؛

LF (0x0A, ^J)
VT (0x0B, ^K)
FF (0x0C, ^L)
    تؤدي جميعها إلى تغذية السطر، وإذا تم ضبط وضع LF/NL (سطر جديد) فإنها تؤدي أيضاً إلى إرجاع المحمل؛

CR (0x0D, ^M)
    يؤدي إلى إرجاع المحمل؛

SO (0x0E, ^N)
    يُفعل مجموعة محارف G1؛

SI (0x0F, ^O)
    يُفعل مجموعة محارف G0؛

CAN (0x18, ^X)
SUB (0x1A, ^Z)
    يُلغي تسلسلات الهروب؛

ESC (0x1B, ^[)
    يبدأ تسلسل هروب؛

DEL (0x7F)
    يُتجاهل؛

CSI (0x9B)
    يكافئ ESC [.

تسلسلات ESC- وليست CSI

ESC c | RIS | تصفير.
ESC D | IND | Linefeed.
ESC E | NEL | سطر جديد.
ESC H | HTS | اضبط علامة الجدولة عند العمود الحالي.
ESC M | RI | تغذية سطر عكسية.
ESC Z | DECID | تعريف DEC الخاص. تُعيد النواة السلسلة ESC [ ? 6 c، زاعمة أنها VT102.
ESC 7 | DECSC | احفظ الحالة الحالية (إحداثيات المؤشر، السمات، مجموعات المحارف التي تشير إليها G0 و G1).
ESC 8 | DECRC | استعد الحالة المحفوظة مؤخرًا بواسطة ESC 7.
ESC % |  | ابدأ تسلسل اختيار مجموعة المحارف
ESC % @ |  | اختر المبدئي (ISO/IEC 646 / ISO/IEC 8859-1)
ESC % G |  | اختر UTF-8
ESC % 8 |  | اختر UTF-8 (مهجور)
ESC # 8 | DECALN | اختبار محاذاة شاشة DEC - ملء الشاشة بحرف E.
ESC ( |  | ابدأ تسلسل تعريف مجموعة محارف G0 (يتبعه أحد الأحرف B، 0، U، K، كما هو موضح أدناه)
ESC ( B |  | اختر المبدئي (مطابقة ISO/IEC 8859-1).
ESC ( 0 |  | اختر مطابقة رسوميات VT100.
ESC ( U |  | اختر مطابقة فارغة - مباشرة إلى ROM المحارف.
ESC ( K |  | اختر مطابقة المستخدم - الخارطة التي تُحمّل بواسطة الأداة المساعدة mapscrn(8).
ESC ) |  | ابدأ تسلسل تعريف G1 (يتبعه أحد الأحرف B، 0، U، K، كما هو موضح أعلاه).
ESC > | DECPNM | اضبط وضع لوحة المفاتيح الرقمية
ESC = | DECPAM | اضبط وضع لوحة مفاتيح التطبيقات
ESC ] | OSC | بادئة أوامر نظام التشغيل.
ESC ] R |  | صفر لوحة الألوان.
ESC ] P |  | اضبط لوحة الألوان، مع معامل مُعطى في 7 أرقام ست عشرية nrrggbb بعد حرف P الأخير. هنا n هو اللون (0–15)، و rrggbb يشير إلى قيم الأحمر/الأخضر/الأزرق (0–255).

تسلسلات ECMA-48 CSI

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

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

يُحدد إجراء تسلسل CSI بواسطة محرفه الأخير.

@ | ICH | أدرج العدد المحدد من المحارف الفارغة.
A | CUU | حرك المؤشر للأعلى بالعدد المحدد من الصفوف.
B | CUD | حرك المؤشر للأسفل بالعدد المحدد من الصفوف.
C | CUF | حرك المؤشر لليمين بالعدد المحدد من الأعمدة.
D | CUB | حرك المؤشر لليسار بالعدد المحدد من الأعمدة.
E | CNL | حرك المؤشر للأسفل بالعدد المحدد من الصفوف، إلى العمود 1.
F | CPL | حرك المؤشر للأعلى بالعدد المحدد من الصفوف، إلى العمود 1.
G | CHA | حرك المؤشر إلى العمود المحدد في الصف الحالي.
H | CUP | حرك المؤشر إلى الصف والعمود المحددين (الأصل عند 1,1).
J | ED | امسح العرض (مبدئيًا: من المؤشر إلى نهاية العرض).
 |  | ESC [ 1 J: امسح من البداية إلى المؤشر.
 |  | ESC [ 2 J: امسح العرض بالكامل.
 |  | ESC [ 3 J: امسح العرض بالكامل بما في ذلك خبيئة التمرير للخلف (منذ لينكس 3.0).
K | EL | امسح السطر (مبدئيًا: من المؤشر إلى نهاية السطر).
 |  | ESC [ 1 K: امسح من بداية السطر إلى المؤشر.
 |  | ESC [ 2 K: امسح السطر بالكامل.
L | IL | أدرج العدد المحدد من الأسطر الفارغة.
M | DL | احذف العدد المحدد من الأسطر.
P | DCH | احذف العدد المحدد من المحارف في السطر الحالي.
X | ECH | امسح العدد المحدد من المحارف في السطر الحالي.
a | HPR | حرك المؤشر لليمين بالعدد المحدد من الأعمدة.
c | DA | الإجابة على ESC [ ? 6 c: "أنا VT102".
d | VPA | حرك المؤشر إلى الصف المحدد، والعمود الحالي.
e | VPR | حرك المؤشر للأسفل بالعدد المحدد من الصفوف.
f | HVP | حرك المؤشر إلى الصف والعمود المحددين.
g | TBC | بدون معامل: امسح علامة الجدولة عند الموضع الحالي.
 |  | ESC [ 3 g: احذف جميع علامات الجدولة.
h | SM | اضبط الوضع (انظر أدناه).
l | RM | صفر الوضع (انظر أدناه).
m | SGR | اضبط السمات (انظر أدناه).
n | DSR | تقرير الحالة (انظر أدناه).
q | DECLL | اضبط مصابيح LED للوحة المفاتيح.
 |  | ESC [ 0 q: امسح جميع المصابيح
 |  | ESC [ 1 q: اضبط مصباح قفل التمرير
 |  | ESC [ 2 q: اضبط مصباح قفل الأرقام
 |  | ESC [ 3 q: اضبط مصباح قفل الحروف الكبيرة
r | DECSTBM | اضبط منطقة التمرير؛ المعاملات هي الصف العلوي والسفلي.
s | SCOSC | احفظ موقع المؤشر.
u | SCORC | استعد موقع المؤشر.
` | HPA | حرك المؤشر إلى العمود المحدد في الصف الحالي.

ECMA-48 اختيار الأداء الرسومي

تضبط تسلسلات ECMA-48 SGR من النوع ESC [ parameters m سمات العرض. يمكن ضبط سمات متعددة في نفس التسلسل، مفصولة بفواصل منقوطة. يُفسر المعامل الفارغ (بين الفواصل المنقوطة أو بادئة السلسلة أو خاتمتها) على أنه صفر.

معلمة | result
0 | صفر جميع السمات إلى قيمها المبدئية
1 | set bold
2 | اضبط السطوع النصفي (يُحاكى بالألوان على شاشة ملونة)
3 | اضبط المائل (منذ لينكس 2.6.22؛ يُحاكى بالألوان على شاشة ملونة)
4 | اضبط التسطير (يُحاكى بالألوان على شاشة ملونة) (الألوان المستخدمة لمحاكاة الخفوت أو التسطير تُضبط باستخدام ESC ] ...)
5 | set blink
7 | set reverse video
10 | صفر المطابقة المختارة، وعلم التحكم في العرض، وعلم تبديل ميتا (تقول ECMA-48 "الخط الرئيس").
11 | اختر مطابقة فارغة، واضبط علم التحكم في العرض، وصفر علم تبديل ميتا (تقول ECMA-48 "الخط البديل الأول").
12 | اختر مطابقة فارغة، واضبط علم التحكم في العرض، واضبط علم تبديل ميتا (تقول ECMA-48 "الخط البديل الثاني"). يؤدي علم تبديل ميتا إلى تبديل البت العالي للبايت قبل إجراء ترجمة جدول المطابقة.
21 | اضبط التسطير؛ قبل لينكس 4.17، كانت هذه القيمة تضبط الكثافة العادية (كما هو متبع في العديد من المحطات الطرفية الأخرى)
22 | اضبط الكثافة العادية
23 | إيقاف المائل (منذ لينكس 2.6.22)
24 | underline off
25 | blink off
27 | reverse video off
30 | اجعل الواجهة سوداء
31 | اجعل الواجهة حمراء
32 | اجعل الواجهة خضراء
33 | اجعل الواجهة بنية
34 | اجعل الواجهة زرقاء
35 | اجعل الواجهة أرجوانية
36 | اجعل الواجهة سماوية
37 | اجعل الواجهة بيضاء
38 | يتبع لون واجهة 256/24 بت، محشور في 16 لونًا أساسيًا (قبل لينكس 3.16: تفعيل التسطير، ضبط لون الواجهة المبدئي)
39 | اضبط لون الواجهة المبدئي (قبل لينكس 3.16: إيقاف التسطير، ضبط لون الواجهة المبدئي)
40 | اجعل الخلفية سوداء
41 | اجعل الخلفية حمراء
42 | اجعل الخلفية خضراء
43 | اجعل الخلفية بنية
44 | اجعل الخلفية زرقاء
45 | اجعل الخلفية أرجوانية
46 | اجعل الخلفية سماوية
47 | اجعل الخلفية بيضاء
48 | يتبع لون خلفية 256/24 بت، محشور في 8 ألوان أساسية
49 | اضبط لون الخلفية المبدئي
90..97 | اجعل الواجهة نسخًا زاهية من 30..37
100..107 | اجعل الخلفية مماثلة لـ 40..47 (الزاهية غير مدعومة)

تتطلب الأوامر 38 و 48 وسائط إضافية:

;5;x | لون 256: القيم 0..15 هي IBGR (أسود، أحمر، أخضر، ...، أبيض)، 16..231 مكعب ألوان 6x6x6، و 232..255 تدرج رمادي
;2;r;g;b | لون 24 بت، مكونات r/g/b في النطاق 0..255

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

ESC [ 3 h
    DECCRM (مبدئيًا موقف): اعرض محارف التحكم.

ESC [ 4 h
    DECIM (مبدئيًا موقف): اضبط وضع الإدراج.

ESC [ 20 h
    LF/NL (مبدئيًا موقف): اتبع صدى LF أو VT أو FF بـ CR آليًا.

أوامر تقرير حالة ECMA-48

ESC [ 5 n
    تقرير حالة الجهاز (DSR): الإجابة هي ESC [ 0 n (المحطة الطرفية سليمة).

ESC [ 6 n
    تقرير موقع المؤشر (CPR): الإجابة هي ESC [ y ; x R، حيث x,y هو موقع المؤشر.

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

لم توصف هذه في ECMA-48. نسرد تسلسلات ضبط الوضع؛ ويُحصل على تسلسلات تصفير الوضع باستبدال حرف 'h' الأخير بـ 'l'.

ESC [ ? 1 h
    DECCKM (مبدئيًا موقف): عند ضبطه، ترسل مفاتيح المؤشر البادئة ESC O بدلًا من ESC [.

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

ESC [ ? 5 h
    DECSCNM (مبدئيًا موقف): اضبط وضع الفيديو العكسي.

ESC [ ? 6 h
    DECOM (مبدئيًا موقف): عند ضبطه، يكون عنونة المؤشر نسبية للزاوية اليسرى العليا لمنطقة التمرير.

ESC [ ? 7 h
    DECAWM (مبدئيًا مفعل): فعل الالتفاف الآلي. في هذا الوضع، يؤدي ظهور محرف رسومي بعد العمود 80 (أو العمود 132 إذا كان DECCOLM مفعلًا) إلى فرض التفاف إلى بداية السطر التالي أولًا.

ESC [ ? 8 h
    DECARM (مبدئيًا مفعل): فعل التكرار الآلي للوحة المفاتيح.

ESC [ ? 9 h
    تقرير فأرة X10 (مبدئيًا موقف): اضبط وضع التقرير على 1 (أو صفره إلى 0) —انظر أدناه—.

ESC [ ? 25 h
    DECTECM (مبدئيًا مفعل): اجعل المؤشر مرئيًا.

ESC [ ? 1000 h
    تقرير فأرة X11 (مبدئيًا موقف): اضبط وضع التقرير على 2 (أو صفره إلى 0) —انظر أدناه—.

تسلسلات CSI الخاصة بطرفية لينكس

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

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

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

توجد مجموعتان من المحارف، تُسمى 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 تشير إلى الجدول أ). يوجد في بعض التوزيعات برنامج reset(1) يقوم فقط بـ "echo ^[c". إذا كان إدخال terminfo الخاص بك للطرفية صحيحًا (ويحتوي على الإدخال rs1=\Ec)، فإن "tput reset" سيعمل أيضًا.

يمكن ضبط جدول المطابقة المعرف من المستخدم باستخدام mapscrn(8). نتيجة المطابقة هي أنه إذا طُبع رمز c، فسيُرسل الرمز s = map[c] إلى ذاكرة الفيديو. توجد الصورة النقطية المقابلة لـ s في ROM المحارف، ويمكن تغييرها باستخدام setfont(8).

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

تُرمّز تسلسلات هروب تتبع الفأرة المولدة بواسطة xterm(1) المعاملات الرقمية في محرف واحد كـ value+040. على سبيل المثال، '!' هي 1. نظام إحداثيات الشاشة يبدأ من 1.

يرسل وضع توافق X10 تسلسل هروب عند الضغط على زر يرمز الموقع وزر الفأرة المكبوس. يُفعل بإرسال ESC [ ? 9 h ويُعطل بـ ESC [ ? 9 l. عند الضغط على زر، يرسل xterm(1) التسلسل ESC [ M bxy (6 محارف). هنا b هو الزر-1، و x و y هما إحداثيات x و y للفأرة عند الضغط على الزر. هذا هو نفس الكود الذي تنتجه النواة أيضًا.

يرسل وضع التتبع العادي (غير مُنفذ في لينكس 2.0.24) تسلسل هروب عند كل من ضغط الزر وإفلاته. تُرسل معلومات المغير أيضًا. يُفعل بإرسال ESC [ ? 1000 h ويُعطل بـ ESC [ ? 1000 l. عند ضغط الزر أو إفلاته، يرسل xterm(1) التسلسل ESC [ M bxy. تُرمّز البتتان الدنيا من b معلومات الزر: 0=MB1 مضغوط، 1=MB2 مضغوط، 2=MB3 مضغوط، 3=إفلات. تُرمّز البتات العليا المغيرات التي كانت مضغوطة عند ضغط الزر وتُجمع معًا: 4=Shift، 8=Meta، 16=Control. مرة أخرى، x و y هما إحداثيات x و y لحدث الفأرة. الزاوية اليسرى العليا هي (1,1).

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

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

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

NUL (0x00)
    تُجوهل؛

ENQ (0x05)
    أطلق رسالة رد؛

DC1 (0x11, ^Q, XON)
    استأنف الإرسال؛

DC3 (0x13, ^S, XOFF)
    تسبب في تجاهل VT100 (وإيقاف إرسال) جميع الأكواد باستثناء XOFF و XON.

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

يتعرف برنامج xterm(1) (في وضع VT100) على محارف التحكم BEL، BS، HT، LF، VT، FF، CR، SO، SI، ESC.

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

تسلسلات طرفية VT100 غير المنفذة في طرفية لينكس:

ESC N | SS2 | التبديل الفردي 2. (اختر مجموعة محارف G2 للمحرف التالي فقط.)
ESC O | SS3 | التبديل الفردي 3. (اختر مجموعة محارف G3 للمحرف التالي فقط.)
ESC P | DCS | سلسلة التحكم في الجهاز (تنتهي بـ ESC \)
ESC X | SOS | بداية السلسلة.
ESC ^ | PM | رسالة خصوصية (تنتهي بـ ESC \)
ESC \ | ST | خاتمة السلسلة
ESC * ... |  | عين مجموعة محارف G2
ESC + ... |  | عين مجموعة محارف G3

يتعرف برنامج xterm(1) (في وضع 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 ; 2 c، "أنا VT100 مع خيار فيديو متقدم") و ESC ^ ... ESC \ بنفس المعاني الموضحة أعلاه. يقبل ESC (، ESC )، ESC *، ESC + متبوعة بـ 0، A، B لمحارف DEC الخاصة ومجموعة رسم الخطوط، و UK، و US-ASCII، على التوالي.

يمكن للمستخدم ضبط xterm(1) للاستجابة لتسلسلات تحكم خاصة بـ VT220، وسيعرف نفسه كـ VT52، VT100، وما فوق اعتمادًا على طريقة ضبطه وتهيئته.

يقبل ESC ] (OSC) لضبط موارد معينة. بالإضافة إلى خاتمة السلسلة (ST) لـ ECMA-48، يقبل xterm(1) حرف BEL لإنهاء سلسلة OSC. هذه بعض تسلسلات تحكم OSC التي يتعرف عليها xterm(1):

ESC ] 0 ; txt ST | اضبط اسم الأيقونة وعنوان النافذة إلى txt.
ESC ] 1 ; txt ST | اضبط اسم الأيقونة إلى txt.
ESC ] 2 ; txt ST | اضبط عنوان النافذة إلى txt.
ESC ] 4 ; num; txt ST | اضبط لون ANSI رقم num إلى txt.
ESC ] 10 ; txt ST | اضبط لون النص الديناميكي إلى txt.
ESC ] 4 6 ; name ST | غير ملف السجل إلى name (عادةً ما يُعطل بخيار وقت التصريف).
ESC ] 5 0 ; fn ST | اضبط الخط إلى fn.

يتعرف على ما يلي بمعانٍ معدلة قليلاً (حفظ حالة أكثر، والتصرف بشكل أقرب إلى VT100/VT220):

ESC 7 DECSC | احفظ المؤشر
ESC 8 DECRC | استعد المؤشر

ويتعرف أيضًا على

ESC F |  | المؤشر إلى الزاوية اليسرى السفلى من الشاشة (إذا فُعل بواسطة مورد hpLowerleftBugCompat الخاص بـ xterm(1)).
ESC l |  | قفل الذاكرة (حسب محطات HP الطرفية). يقفل الذاكرة فوق المؤشر.
ESC m |  | إلغاء قفل الذاكرة (حسب محطات HP الطرفية).
ESC n | LS2 | استدعِ مجموعة محارف G2.
ESC o | LS3 | استدعِ مجموعة محارف G3.
ESC | | LS3R | استدعِ مجموعة محارف G3 كـ GR.
ESC } | LS2R | استدعِ مجموعة محارف G2 كـ GR.
ESC ~ | LS1R | استدعِ مجموعة محارف G1 كـ GR.

يتعرف أيضًا على ESC % ويوفر تنفيذًا لـ UTF-8 أكثر اكتمالًا من طرفية لينكس.

تسلسلات CSI

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

يتعرف برنامج xterm(1) على جميع تسلسلات وضع DEC الخاص المدرجة أعلاه، ولكن لا يتعرف على أي من تسلسلات وضع لينكس الخاص. لمناقشة تسلسلات وضع xterm(1) الخاص، ارجع إلى وثيقة Xterm Control Sequences بواسطة Edward Moy و Stephen Gildea و Thomas E. Dickey المتوفرة مع توزيعة X. تلك الوثيقة، رغم إيجازها، أطول بكثير من صفحة الدليل هذه. لنظرة عامة زمنية،

    http://invisible-island.net/xterm/xterm.log.html

تفاصيل التغييرات في xterm(1).

برنامج vttest(1)

    http://invisible-island.net/vttest/

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

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

العلل
في لينكس 2.0.23، CSI معطل، ولا يُتجاهل NUL داخل تسلسلات الهروب.

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

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

ألمحت نسخة قديمة من هذه الوثيقة إلى أن لينكس يتعرف على تسلسل تحكم ECMA-48 للنص غير المرئي. الحقيقة أنه يُتجاهل.

انظر أيضًا
ioctl_console(2), charsets(7)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.