ترميز الكاريت: فهم رموز التحكم في ASCII
ترميز الكاريت (Caret Notation)
ترميز الكاريت هو نظام لتمثيل رموز التحكم (Control Characters) في معيار ASCII، حيث يتم استخدام رمز الكاريت (^) متبوعاً بحرف أو رمز آخر لتمثيل رمز تحكم معين. يهدف هذا النظام إلى جعل الرموز غير القابلة للطباعة مرئية وسهلة الفهم للمبرمجين والمستخدمين.
كيف يعمل ترميز الكاريت؟
يعتمد الترميز على تعيين رمز ^A لرمز التحكم رقم 1، وبشكل تسلسلي حتى ^Z لرمز التحكم رقم 26. بالنسبة للرموز التي تقع خارج هذا النطاق (1-26)، يتم توسيع الترميز ليشمل الرموز غير الأبجدية المجاورة في جدول ASCII؛ على سبيل المثال، يُستخدم ^@ لتمثيل رمز التحكم رقم 0.
التفاصيل التقنية للترميز
يتكون الترميز من علامة الكاريت (^) متبوعة بحرف واحد (عادةً حرف كبير). يتم حساب رمز ASCII الخاص بالحرف المتبع للكاريت عن طريق عكس البت الذي يمثل 0x40، مما يجعل رموز التحكم من 1 إلى 26 تظهر كـ ^A إلى ^Z. هناك سبعة رموز تحكم في ASCII تقع خارج الحروف الأبجدية الكبيرة:
^@: يمثل الرمز 0 (NUL)^[: يمثل الرمز 27 (ESC)^\: يمثل الرمز 28 (FS)^]: يمثل الرمز 29 (GS)^^: يمثل الرمز 30 (RS)^_: يمثل الرمز 31 (US)^?: يمثل الرمز 127 (DEL)
على سبيل المثال، يُستخدم ^M^J لتمثيل زوج السطر الجديد (CR, LF) في نظام ويندوز، بينما يُستخدم ^[[3J لوصف تسلسل الهروب ANSI لمسح الشاشة.
تاريخ ترميز الكاريت
يعود تاريخ هذا الاصطلاح إلى عام 1964 على الأقل، حيث ظهر في جهاز PDP-6 من شركة Digital Equipment Corporation (DEC) ونظام التشغيل الخاص به. في البداية، كان يتم تمثيل رمز التحكم باستخدام سهم صغير يشير للأعلى (↑) قبل الحرف، ولكن مع الانتقال من معيار ASCII لعام 1961 إلى معيار 1968، تحول السهم إلى رمز الكاريت (^).
استمر استخدام هذا الاصطلاح في الأجهزة اللاحقة مثل PDP-10 وPDP-11، وكذلك في أنظمة تشغيل مثل TENEX وITS. وفي حين أن الإصدارات المبكرة من Unix لم تكن تستخدم هذا الترميز لعرض الرموز غير القابلة للطباعة، إلا أن أمر stty كان يقبله. لاحقاً، أضاف إصدار 4BSD وضع ctlecho الذي يسمح بعرض رموز التحكم باستخدام ترميز الكاريت، وهو ما تطور إلى echoctl في الأنظمة الشبيهة بـ Unix الحديثة.
الاستخدام في البرمجيات الحديثة
لا يزال ترميز الكاريت مستخدماً على نطاق واسع في البرامج التي تعرض مخرجات النصوص، خاصة في أنظمة Unix، حيث يظهر عند استخدام أوامر مثل more و less أو عند تحرير الملفات في محررات النصوص.
تسمح معظم أجهزة الطرفية (Terminals) ومحاكيات الطرفية للمستخدم بإدخال رمز تحكم عن طريق الضغط باستمرار على مفتاح Ctrl وكتابة الحرف المذكور في ترميز الكاريت. وغالباً ما يتم تجاهل حالة الأحرف (كبيرة أو صغيرة)، حيث يؤدي الضغط على Ctrl+a نفس نتيجة Ctrl+A.
تأثير الترميز على اختصارات لوحة المفاتيح
أثر هذا التوافق على تصميم الاختصارات في البرمجيات الحديثة. على سبيل المثال، قد يبدو من المنطقي جعل Ctrl+H اختصاراً لـ "المساعدة" (Help)، ولكن بما أن هذا الرمز هو نفسه رمز مفتاح Backspace (المسح للخلف)، فقد تم ابتكار اختصارات أخرى للمساعدة لتجنب التعارض.
أنظمة ترميز بديلة
استخدمت بعض الأنظمة بدائل لرمز الكاريت. على سبيل المثال، استخدمت واجهة برمجة تطبيقات GSTrans في أجهزة Acorn Atom وBBC Micro ونظام RISC OS رمز الخط العمودي (|) بدلاً من الكاريت. فمثلاً، |M يمثل رمز العودة إلى بداية السطر (Carriage Return) وهو ASCII 13، بينما |! يضيف 128 إلى قيمة الرمز الذي يليه لتمثيل رموز ASCII الممتدة.
أسئلة شائعة
ما هو ترميز الكاريت؟
هو نظام لتمثيل رموز التحكم غير القابلة للطباعة في معيار ASCII باستخدام رمز الكاريت (^) متبوعاً بحرف، مما يجعلها مرئية وسهلة القراءة.
كيف يتم إدخال رموز التحكم باستخدام لوحة المفاتيح؟
يتم ذلك عادةً عن طريق الضغط على مفتاح Ctrl مع الحرف المذكور في ترميز الكاريت (مثلاً Ctrl+C لتمثيل ^C).
لماذا لا يُستخدم Ctrl+H للمساعدة في العديد من البرامج؟
لأن رمز Ctrl+H في ترميز الكاريت يتطابق مع رمز مفتاح Backspace، مما قد يسبب تعارضاً في الوظائف.