دليل ckbcomp في أوبونتو: تحويل وتخصيص خرائط المفاتيح للطرفية

نظرة عامة

عند الانتقال للعمل داخل الطرفية الافتراضية الصرفة (Linux TTY / Virtual Console)، يواجه مسؤولو النظام صعوبة في الاستفادة من تخطيطات المفاتيح المتقدمة المعرفة لنظام XKB الرسومي. هنا يأتي دور أداة ckbcomp، التي تقوم بترجمة وتصريف هذه التخطيطات إلى صيغة تفهمها برمجيات الكونسول. يبتعد هذا الدليل العملي عن شروحات صفحات الدليل (man pages) المعقدة، ليقدم خطوات تطبيقية مباشرة تبدأ من تثبيت الأدوات الأساسية، وتمر بتعيين التخطيطات الإقليمية وتعديل وظائف المفاتيح الشائعة (مثل استبدال CapsLock بمفتاح Control)، وصولاً إلى تنشيط الإعدادات فورياً عبر loadkeys.

1. إعداد البيئة وتوليد أول خريطة مفاتيح قياسية (US)

تتطلب عملية ترجمة تخطيطات XKB وتفعيلها على كونسول النظام توفر أدوات مساعدة متخصصة. سنبدأ بتحديث مستودعات الحزم وتثبيت console-setup وkbd بالإضافة إلى تعريفات xkb-data:

تثبيت حزم console-setup وkbd وxkb-data على نظام أوبونتو

تتولى الأداة ckbcomp قراءة ملفات تعريف XKB وتحويلها إلى جدول رموز مفاتيح متوافق تماماً مع محرك loadkeys. لمعاينة البنية الناتجة لتخطيط لوحة المفاتيح الأمريكية القياسية، نقوم بتوجيه المخرجات إلى الأمر head -n 30 لعرض أول ثلاثين سطراً من التعيينات البرمجية:

⚙️ [أهم المعاملات التشغيلية للأداة]:

-model : تحديد الطراز العتادي للوحة المفاتيح المستخدمة (مثل pc105 أو pc104).
-variant : اختيار تفريعة محددة من التخطيط المعتمد (مثل dvorak أو colemak).
-option : تمرير خيارات تعديل سلوك المفاتيح (كإعادة تعيين وظيفة مفتاح القفل عبر ctrl:nocaps).
-charmap : تحديد الترميز النصي لجدول الرموز الناتج (مثل UTF-8 أو ISO-8859-1).
-compact : ضغط حجم الملف الناتج عن طريق دمج التعريفات المتطابقة للمفاتيح.
-freebsd : إنشاء جدول مفاتيح متوافق مع كونسول أنظمة FreeBSD عوضاً عن لينكس.

استعراض أسطر البداية لخريطة المفاتيح الأمريكية المولدة

2. تخصيص الطراز العتادي (-model) والتنويعات الجغرافية (-variant)

لإنشاء جدول مفاتيح مخصص للوحة مفاتيح قياسية تحوي 105 مفاتيح مع اعتماد التوزيعة الكورية، نقوم بتمرير المعاملين -model pc105 و-layout kr. يكشف الفحص السريع للمخرجات عن مصفوفة ربط أرقام المفاتيح الفعلية (Keycodes) بالرموز البرمجية وقيم اليونيكود تبعاً لحالات الضغط المتزامنة:

تصريف خريطة المفاتيح للغة الكورية بطراز pc105

في بيئات الإدخال متعددة اللغات، قد تسبب المفاتيح الميتة (Dead Keys) ارتباكاً عند إدخال الرموز؛ لذا يمكن تصريف التخطيط الألماني (-layout de) مع إبطال ميزة دمج الحركات عبر تمرير الخيار -variant nodeadkeys. تضمن هذه التهيئة إخراج الحركات وعلامات التشكيل اللاتينية فور النقر عليها دون انتظار الحرف التالي:

إنشاء جدول مفاتيح ألماني خالي من المفاتيح الميتة

3. تعديل سلوك المفاتيح برمجياً: تحويل CapsLock إلى Control

يفضل مطورو البرمجيات ومديرو الأنظمة تحويل مفتاح تثبيت الحروف الكبيرة (CapsLock) إلى مفتاح تحكم (Control) لتسهيل إرسال الاختصارات داخل الطرفية ومحررات الأكواد. نمرر المعامل -option ctrl:nocaps لإلغاء سلوك الحروف الكبيرة كلياً، ثم نتحقق بواسطة grep من عدم وجود أي مخرجات تشير إلى الرمز Caps_Lock:

تأكيد إلغاء وظيفة CapsLock واستبدالها بوظيفة مفتاح التحكم

إذا كان الهدف هو التبديل المتبادل للوظائف بين الزرين بدلاً من الإلغاء التام، نستخدم الخيار -option ctrl:swapcaps. يُظهر الاستعلام التالي نجاح إعادة التعيين، حيث يظهر الرمز Caps_Lock مرتبطاً بالرمز العتادي keycode 29 الذي يمثل في الأصل موضع مفتاح Control التقليدي:

معاينة نتيجة تبادل الوظائف بين مفتاحي Control وCapsLock

4. تخزين خريطة المفاتيح وتفعيلها آنياً بواسطة loadkeys

لتنظيم ملفات الخرائط التي سيتم إنشاؤها وتفادي الفوضى في مسار المستخدم، ننشئ دليلاً مستقلاً باستخدام الأمر mkdir -p ~/keymaps:

إنشاء مسار مخصص لتخزين خرائط المفاتيح

نقوم الآن بتصريف خريطة التوزيعة الأمريكية المتضمنة تعديل Control/CapsLock، مع إعادة توجيه الناتج (>) لحفظه في ملف نصي باسم ~/keymaps/custom_us.map:

تصدير التخطيط المخصص إلى ملف خارجي بصيغة map

تدعم أدوات الطرفية قراءة الخرائط المضغوطة لتوفير مساحة الذاكرة والتخزين؛ لذا نطبق أداة الضغط عبر الأمر gzip -fk ~/keymaps/custom_us.map مع الحفاظ على بقاء الملف الأصلي سليماً:

ضغط ملف خريطة المفاتيح عبر أداة gzip

يكشف فحص أحجام الملفات بواسطة ls -lh ~/keymaps/custom_us.map* عن انخفاض الحجم النصي الهائل من قرابة 120 كيلوبايت إلى ما يقارب 4.0 كيلوبايت فقط بعد الضغط، وهي صيغة مثالية وجاهزة للتحميل:

فحص أبعاد وملفات خريطة المفاتيح بعد اكتمال الضغط

لتفعيل التعديلات الجديدة فورياً على الكونسول الافتراضي الفعال دون الحاجة إلى إعادة تشغيل الجهاز، ننفذ الأمر sudo loadkeys ~/keymaps/custom_us.map. انتهاء التنفيذ بهدوء ودون رسائل تحذيرية يؤكد سريان خريطة المفاتيح المخصصة واستجابة الطرفية للإعدادات الجديدة بنجاح:

تفعيل جدول الرموز البرمجية المخصص داخل الكونسول بواسطة loadkeys

استعرضنا في هذا الدليل المنهجية الكاملة للاستفادة من مرونة ckbcomp في أوبونتو لترجمة تخطيطات XKB المعقدة وتطويعها لخدمة كونسول لينكس. باتباع هذه الخطوات العملية البسيطة، يمكن لأي مسؤول نظام بناء وتطبيق التوزيعات وتفضيلات المفاتيح المخصصة بسلاسة وكفاءة عالية.