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

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

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

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

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

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

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

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

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

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