تبديل تخطيط Colemak على Linux: X11 وWayland وVim
اضبط Colemak في وحدة تحكم Linux وX11 وWayland، وافهم لماذا لا يحتاج خادم SSH إلى تخطيط، وما الذي يتغير في Vim مع hjkl ومفاتيح Ctrl.
مكان إعداد تخطيط Colemak على Linux
لا يوجد تخطيط Colemak كإعداد واحد على مستوى النظام في Linux. يطبّق التخطيط المكوّن الذي يقرأ لوحة المفاتيح في تلك اللحظة، ولذلك يوجد في أحد ثلاثة أماكن: وحدة التحكم النصية، أو خادم X11، أو مدير النوافذ Wayland لديك. إذا ضبطته في المكان الخطأ، فلن يحدث أي شيء ظاهرياً.
يوجد خيار رابع يتجاوز نظام التشغيل بالكامل. ترسل لوحة المفاتيح التي تعيد تعيين المفاتيح في firmware الخاص بها، مثل لوحة تعمل باستخدام QMK أو VIA، الرموز الخاصة بالحروف التي تريدها. لذلك تكتب Colemak على كل جهاز توصلها به من دون أي إعداد، بما في ذلك وحدة تحكم الخادم وجهاز لا تملكه. لكن لوحة مفاتيح الحاسوب المحمول ستظل تكتب QWERTY.
يغطي الجزء المتبقي من هذا الدليل طبقات البرامج الثلاث، وسبب أن الخادم البعيد لا يحتاج إلى أي منها تقريباً، وتأثير التبديل في Vim واختصارات الطرفية.
تحقّق مما هو متوفر مسبقاً على نظامك
نفّذ هذه الأوامر قبل تغيير أي شيء. تطبع الأوامر الإعداد الحالي وقائمة متغيرات Colemak التي توفرها قاعدة بيانات لوحة مفاتيح X لديك.
localectl status
setxkbmap -query
localectl list-x11-keymap-variants us | grep colemakيجب أن يطبع الأمر الأخير colemak وcolemak_dh. أُدرج Colemak في xkeyboard-config منذ سنوات. أُضيف Colemak-DH في الإصدار 2.34، لذلك لن يكون مفقوداً إلا في إصدار قديم. اعتباراً من August 2026، يأتي Ubuntu 24.04 وDebian 13 بإصدار أحدث من ذلك.
إذا أبلغ setxkbmap -query عن تعذّر فتح شاشة عرض، فأنت تعمل في جلسة Wayland ويتولى compositor إدارة التخطيط. لهذه الحالة قسم مستقل أدناه.
Colemak أم Colemak-DH
ينقل Colemak سبعة عشر مفتاحاً من مواضعها في QWERTY، ويُبقي عشرة مفاتيح في مواضعها، منها Z وX وC وV. لذلك تبقى اختصارات التراجع والقص والنسخ واللصق في المواضع التي تتوقعها يدك اليسرى. هذا التوافق هو السبب الكامل وراء شكل التخطيط.
Colemak-DH تعديل على Colemak. فهو ينقل D وB وG، ويبدّل H مع M، لأن Colemak العادي يكتب كلاً من D وH بمدّ إصبع السبابة إلى العمود الأوسط من لوحة المفاتيح. يحافظ التعديل الرسمي على كل حرف باستخدام الإصبع نفسه الذي كان يستخدمه في Colemak، لذلك يواجه مستخدم Colemak عند الانتقال إلى DH تغييراً صغيراً لا تخطيطاً جديداً. متغير XKB هو colemak_dh، مع colemak_dh_iso للوحات المفاتيح التي تحتوي على مفتاح إضافي بجانب زر Shift الأيسر.
إذا كنت قادماً من QWERTY، فكل من الخيارين يتطلب إعادة تعلّم واحدة، لذلك اختر ما يريحك والتزم به. يكلف تبديل التخطيط مرة ثانية تقريباً بقدر التبديل الأول، لأن ما تعيد بناءه هو الذاكرة الحركية المرتبطة بمواضع المفاتيح.
تعيين Colemak في X11 باستخدام setxkbmap وlocalectl
setxkbmap us -variant colemak
setxkbmap -queryيجب أن يعرض setxkbmap -query الآن القيمة variant: colemak، ويجب أن تؤدي الكتابة في أي نافذة إلى إدخال أحرف Colemak. يستمر التغيير طوال مدة جلسة X ولا يكتب أي شيء على القرص، ولذلك فهو الطريقة الآمنة لتجربة التخطيط لمدة ساعة.
للاحتفاظ به بعد إعادة التشغيل:
sudo localectl set-x11-keymap us pc105 colemak
localectl statusترتيب الوسائط هو التخطيط، ثم الطراز، ثم المتغير. يجب أن يعرض localectl status الآن القيمتين X11 Layout: us وX11 Variant: colemak. يحوّل localectl الاختيار أيضاً إلى أقرب تخطيط لوحة مفاتيح لوحدة التحكم، ما لم تضف --no-convert، ولذلك يغطي هذا الأمر الواحد tty أيضاً في كثير من الأنظمة. في Debian وUbuntu، تحقّق من /etc/default/keyboard بعد ذلك، لأن console-setup يقرأ هذا الملف عند الإقلاع.
تعيين Colemak على Wayland
لا تتضمن جلسة Wayland خادم X لتكوينه. يحمّل مدير النوافذ خريطة المفاتيح ويمررها إلى كل تطبيق، لذلك يكون التخطيط إعداداً في مدير النوافذ. لهذا يبدو setxkbmap معطلاً هناك: إما أن يفشل في العثور على شاشة، أو أن يغيّر XWayland فقط، بينما تتجاهله تطبيقات Wayland الأصلية.
في GNOME، يكون الإعداد مفتاحاً في gsettings:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"يُطبَّق الإعداد فوراً دون تسجيل الخروج. تمثل السلسلة us+colemak التخطيط والمتغير، وهما متصلان بعلامة زائد.
في sway، ضعه في ~/.config/sway/config:
input type:keyboard {
xkb_layout us
xkb_variant colemak_dh
}أعد التحميل باستخدام swaymsg reload. يعرض swaymsg -t get_inputs كل جهاز إدخال مع التخطيط الذي يستخدمه. وهذا هو الأمر الذي ينبغي تشغيله عندما يتصرف أحد لوحتي المفاتيح فقط بشكل غير صحيح.
في KDE Plasma، افتح System Settings، ثم Keyboard، ثم Layouts، وأضف English (US) مع متغير Colemak.
تعيين Colemak في وحدة التحكم النصية
وحدة التحكم هي tty النصية العادية التي تصل إليها باستخدام Ctrl+Alt+F3، ولها تخطيط مفاتيح مستقل. لا ينتقل إليها أي إعداد تضبطه في X11 أو في compositor، وهذا مهم إذا كنت تعمل على محطة عمل طرفية على وحدة تحكم افتراضية مجردة.
في Debian وUbuntu، حرّر /etc/default/keyboard:
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT="colemak"
XKBOPTIONS=""ثم طبّق الإعداد:
sudo setupconاكتب في وحدة التحكم للتحقق. يحوّل console-setup وصف XKB هذا إلى تخطيط مفاتيح لوحدة التحكم باستخدام ckbcomp، ولذلك تستخدم وحدة التحكم وX الوصف نفسه في هذه الأنظمة.
في التوزيعات التي تستخدم تخطيطات kbd مباشرة، اعرض الاسم أولاً:
localectl list-keymaps | grep -i -e colemak -e latin9
sudo localectl set-keymap en-latin9توفر حزمة kbd تخطيط Colemak لوحدة التحكم باسم i386/colemak/en-latin9، لذلك يكون الاسم الذي تمرره عادةً en-latin9 وليس colemak. مرّر اسماً يظهر في القائمة، لأن الاسم غير الموجود يُرفض.
يغيّر sudo loadkeys en-latin9 وحدة التحكم الحالية فوراً، ويعيدها sudo loadkeys us إلى حالتها السابقة. تعامل مع loadkeys على أنه اختبار وليس إعداداً دائماً: فهو يستمر حتى إعادة التشغيل، وعند الإقلاع تشغّل Debian وUbuntu setupcon، فيعيدان تطبيق ما يحدده /etc/default/keyboard.
هل يحتاج VPS بلا واجهة رسومية إلى تخطيط Colemak؟
يكاد الجواب يكون دائماً لا، ومن المفيد فهم السبب. ينقل SSH الأحرف، لا مواضع المفاتيح. يستقبل محاكي الطرفية لديك ضغط المفتاح، ويحوّله تخطيط لوحة المفاتيح المحلي إلى حرف، ثم ينتقل هذا الحرف فقط عبر الاتصال. يستقبل الخادم n من دون أي طريقة لمعرفة المفتاح الفعلي الذي أنتجه. لذلك، ينتقل التخطيط الذي تضبطه على حاسوبك المحمول إلى كل جلسة SSH، وإلى tmux، وإلى كل محرر تشغّله عن بُعد، ولا يحتاج الجهاز البعيد إلى أي إعداد للوحة المفاتيح.
ضع ذلك في اعتبارك قبل أن تبدأ بتحرير ملفات لوحة المفاتيح على خوادم الإنتاج. إذا كنت تدير مجموعة من خوادم Linux، فإن التخطيط يخص الجهاز الموجود أمامك، وليس مجموعة الخوادم، ولذلك لا مكان له في إعداد الخوادم تلقائياً. يوفّر أول عشر دقائق على VPS جديد عملاً أكثر فائدة من ذلك.
يجدر التخطيط لاستثناءين. الأول هو وحدة تحكم متصلة بالجهاز نفسه. تعرض وحدة التحكم في المتصفح ضمن لوحة مزود الخدمة نفسها للجهاز الافتراضي على أنها لوحة مفاتيح عادةً، لذلك تصل ضغطات المفاتيح بصيغة scancodes، وتحدد خريطة مفاتيح وحدة التحكم الخاصة بالخادم الحرف الذي يظهر. هذا هو المكان الوحيد الذي يؤثر فيه تخطيط مضبوط على الخادم، وهو أيضاً مسار الإنقاذ عندما يتوقف SSH عن العمل، لذلك تمثل خريطة مفاتيح غير مكتملة في وحدة التحكم خطراً فعلياً.
تتصرف وحدة التحكم التسلسلية بطريقة مختلفة، لأنها تنقل الأحرف ويُطبَّق تخطيطك المحلي. الاستثناء الثاني هو الجهاز المشترك. خريطة مفاتيح وحدة التحكم عامة على مستوى النظام، لذلك يؤدي ضبط Colemak على جهاز يسجّل الآخرون الدخول إليه إلى تغييره لديهم أيضاً، ولن يعرفوا سبب ذلك.
ماذا يحدث لمفاتيح Vim hjkl
في تخطيط Colemak، لا يحرّك h المؤشر. أما المفاتيح الثلاثة الأخرى فتظل تحرّكه. يقع j تحت موضع Y في تخطيط QWERTY، ويقع k تحت موضع N، ويقع l تحت موضع U. لذلك تتوزع مفاتيح تحريك المؤشر على 3 صفوف بدلاً من أن تكون تحت 4 أصابع.
هناك إجابتان عمليتان، ولكل منهما مستخدمون فعليون.
أبقِ الإعدادات الافتراضية وتعلّم المواضع من جديد. لن يتعطل أي جزء آخر من إعدادك، وستواصل كل الإضافات العمل، وستظل كل نصيحة خاصة بـVim كتبها الآخرون قابلة للتطبيق عليك كما هي.
أو أعد تعيين المفاتيح الأربعة الموجودة تحت يدك اليمنى، في المواضع التي كانت تشغلها مفاتيح hjkl. في Colemak، تنتج هذه المفاتيح h وn وe وi. وفي Colemak-DH، تنتج المفاتيح الفعلية الأربعة نفسها m وn وe وi، لأن DH بدّل موضع H مع M.
noremap n j
noremap e k
noremap i l
noremap l i
noremap k nيحرّك n المؤشر إلى الأسفل الآن، ويحرّكه e إلى الأعلى، ويحرّكه i إلى اليمين، بينما كان h يحرّكه إلى اليسار أصلاً. يعيد السطران الأخيران الأوامر التي أزحتها: يبدأ l وضع الإدراج، ويكرر k آخر بحث. طبّق الإعداد نفسه على الأحرف الكبيرة، وإلا فقد يفاجئك الضغط على Shift مع أحد مفاتيح تحريك المؤشر.
يؤدي خيار langmap في Vim وظيفة مشابهة بعدد أسطر أقل:
set langmap=nj,ek,il,li,knتُقرأ كل زوج على أنه الحرف الذي كتبته، يليه الحرف الذي يجب أن يتصرف Vim كما لو أنك كتبته. ينطبق هذا على الوضع العادي فقط، لذلك يظل وضع الإدراج يكتب نص Colemak بصورة طبيعية. يذكر توثيق Vim نفسه حدّين: لا ينطبق langmap على تركيبات Ctrl أو Alt، وقد تتصرف تعيينات الإضافات المكتوبة وفق المفاتيح الافتراضية بصورة غير متوقعة عند استخدامه.
أيّاً كان اختيارك، التزم به مرة واحدة. إعادة تعيين تتخلى عنها بعد شهر ستكلفك شهراً آخر.
ما الذي يحدث لاختصارات الطرفية
يصدر رمز التحكم في الطرفية من الحرف، لا من المفتاح الفعلي، لذلك تنتقل كل اختصارات Ctrl مع تخطيط لوحة المفاتيح. تبقى اختصارات Ctrl+C وCtrl+Z وCtrl+X وCtrl+V في مواضعها، لأن Colemak يترك عمداً الأحرف Z وX وC وV في المواضع نفسها التي تشغلها في QWERTY.
تنتقل أربعة اختصارات تستخدمها يومياً. أصبح Ctrl+D، الذي ينهي الإدخال، في موضع الحرف G في QWERTY. وأصبح Ctrl+R، المخصص للبحث في السجل، في موضع الحرف S في QWERTY. وأصبح Ctrl+E، المخصص للانتقال إلى نهاية السطر، في موضع الحرف K في QWERTY. وأصبح Ctrl+U، الذي يمسح السطر، في موضع الحرف I في QWERTY.
يحافظ tmux على بادئة التشغيل الافتراضية، لأن B لا ينتقل في Colemak. في Colemak-DH، ينتقل B إلى الصف العلوي، وتنتقل البادئة معه. وهذا أول ما ستلاحظه إذا أبقيت جلسة tmux طويلة التشغيل على VPS. إعادة ربط البادئة بمفتاح تفضله لا تتطلب إلا تغييراً من سطر واحد، وهي أسهل من إعادة تدريب رد الفعل نفسه مرتين.
تتبع اختصارات سطح المكتب القاعدة نفسها. ينتقل الربط Super+E مع التخطيط، لأنه معرّف بالحرف. أما الربط Super+F1 فيبقى في موضعه، لأن مفاتيح الوظائف لا يعيد التخطيط تعيينها.
كلفة التحول من حيث الوقت
لا يمكن لأحد أن يحدد رقماً يناسب يديك. الكتابة باللمس تعتمد على الذاكرة الحركية. أنت لا تتعلم مواضع الأحرف، بل تعيد بناء المنعكس الذي يحوّل الكلمة إلى تسلسل من حركات الأصابع. لذلك، فالمدخل الوحيد المفيد هو الوقت الذي تقضيه في الكتابة.
تشير تجارب المستخدمين، وهي سجلات تدريب يقدّمها أصحابها وليست قياساً مضبوطاً، إلى سرعة تقل كثيراً عن نصف سرعتهم السابقة خلال الأسبوع الأول، ثم العودة إلى تلك السرعة السابقة خلال فترة تتراوح بين شهر واحد و3 أشهر من الاستخدام اليومي. ويختلف ذلك كثيراً بين الأفراد، لذا تعامل مع هذه الأرقام بوصفها نمطاً عاماً لا جدولاً زمنياً ثابتاً.
تجعلان عادتان التحول أبطأ. التبديل بين QWERTY وColemak خلال اليوم يبقي كلا المنعكسين ضعيفاً، لذلك يلتزم معظم من يكملون التحول بالتخطيط الجديد على جهازهم الرئيسي. ويعني بدء التحول خلال أسبوع مزدحم أنك ستكتب بشكل سيئ تحت ضغط الوقت، ما يدرّبك على النظر إلى المفاتيح.
أعد إعداد طريقة الرجوع قبل أن تحتاج إليها، لأن اللحظة التي ستريد فيها استخدام QWERTY مجدداً هي اللحظة التي يتعطل فيها شيء ما وينتظر منك شخص آخر حلاً.
كيفية التبديل سريعاً إلى QWERTY
في X11، يعيد setxkbmap us تخطيط QWERTY فوراً. وفي وحدة التحكم، ينفّذ sudo loadkeys us الأمر نفسه. لإلغاء الإعداد الدائم، شغّل sudo localectl set-x11-keymap us.
يكون التبديل أفضل من أمر يجب أن تكتبه باستخدام تخطيط لا يمكنك الكتابة به بعد:
setxkbmap -layout us,us -variant colemak, -option grp:win_space_toggleيحمّل هذا الأمر Colemak كتخطيط أول وUS العادي كتخطيط ثانٍ، ويبدّل Super+Space بينهما. الفاصلة اللاحقة في colemak, ليست خطأً مطبعياً؛ فهي تعطي التخطيط الأول متغير colemak، ولا تعطي التخطيط الثاني أي متغير. في GNOME، أضف مصدري الإدخال معاً من Settings، حيث يبدّل Super+Space بينهما مسبقاً.
توجد مطالبتا كلمة مرور خارج جلسة سطح المكتب، وتحتاج كل منهما إلى إعداد منفصل. تبدأ شاشة تسجيل الدخول قبل تطبيق إعدادات جلستك، لذلك اختبرها بتسجيل الخروج بدلاً من الاعتماد على الإعداد. إذا كان القرص مشفراً، فتعمل مطالبة عبارة المرور من initramfs، الذي يحتفظ بنسخته الخاصة من تخطيط لوحة المفاتيح. في Debian وUbuntu، أعد بناء initramfs باستخدام sudo update-initramfs -u بعد تغيير /etc/default/keyboard، ثم أعد التشغيل مرة واحدة للاختبار مع الاحتفاظ بوسيلة أخرى للدخول إلى الجهاز.
هل يمكنني إبقاء برنامج واحد على تخطيط QWERTY؟
يُطبَّق التخطيط قبل أن يستقبل التطبيق المفتاح. يحوّل X server أو compositor رمز المسح إلى محرف، ثم يسلّم المحرف إلى التطبيق. لذلك لا يستطيع التطبيق طلب تخطيط مختلف. يمكنه فقط إعادة تعيين ما يستلمه. ولهذا يوجد إصلاح Vim في إعدادات Vim، ولا يوجد مفتاح تبديل عام للتخطيط لكل نافذة يمكن استخدامه لهذا الغرض.
هناك طريقتان فعالتان. الأولى تخصيص التخطيط لكل جهاز. إذا كانت الكتابة بتخطيط QWERTY تتم على لوحة مفاتيح منفصلة، فاضبط التخطيط على ذلك الجهاز بدلاً من ضبطه على مستوى النظام:
xinput list
setxkbmap -device 12 -layout usخذ المعرّف من xinput list، وتحقق منه بالكتابة على كل لوحة مفاتيح بالتتابع. يقبل sway الإعدادات نفسها لكل معرّف إدخال من swaymsg -t get_inputs، ويفوز المحدد الأكثر تخصيصاً على type:keyboard.
الطريقة الثانية هي تنفيذ إعادة التعيين داخل التطبيق، كما يفعل langmap في Vim. تحتوي الألعاب تقريباً دائماً على شاشة لتعيين المفاتيح، وإعادة تعيين مفاتيح الحركة فيها تستغرق وقتاً أقل من محاولة فرض التخطيط من خارج اللعبة. أما إذا لم يتوفر ذلك، فاربط مفتاح تبديل التخطيط أعلاه واضغطه قبل تشغيل البرنامج.
FAQ
هل أحتاج إلى ضبط Colemak على VPS؟
لا، إذا كنت تصل إليه عبر SSH. ينقل SSH المحارف، لذلك يُحسم تخطيط لوحة المفاتيح على حاسوبك المحمول قبل إرسال أي شيء، ويتلقى الخادم وحدات البايت نفسها التي كان سيتلقاها من مستخدم يكتب بتخطيط QWERTY. الاستثناء هو وحدة التحكم في المتصفح ضمن لوحة مزود الخدمة، إذ تتصل بالآلة الافتراضية كلوحة مفاتيح وتستخدم تخطيط لوحة مفاتيح وحدة التحكم الخاص بالخادم. هذه الوحدة هي مسار الإنقاذ عند فشل SSH، لذلك لا تغيّر التخطيط فيها إلا إذا كنت متأكداً، واختبره ما دام SSH يعمل.
هل أتعلم Colemak أم Colemak-DH؟
كلاهما يتطلب إعادة تعلّم واحدة انطلاقاً من QWERTY، لذلك اختر بناءً على الراحة لا على تكلفة الانتقال. ينقل Colemak-DH المفاتيح D وB وG ويبدّل H مع M، لأن Colemak العادي يكتب D وH بمدّ إصبع السبابة إلى العمود الأوسط. أسماء متغيرات XKB هي colemak وcolemak_dh، مع colemak_dh_iso للوحات المفاتيح التي تحتوي على مفتاح إضافي بجانب Shift الأيسر. شغّل localectl list-x11-keymap-variants us | grep colemak لمعرفة التخطيطات التي يوفّرها نظامك.
ماذا يحدث لمفاتيح Vim hjkl مع Colemak؟
يبقى h في موضعه. ينتقل j إلى موضع Y في QWERTY، وk إلى موضع N في QWERTY، وl إلى موضع U في QWERTY، لذلك تتوزع مفاتيح تحريك المؤشر على ثلاثة صفوف. يمكنك إعادة تعلّمها في مواضعها الجديدة، وهذا يُبقي كل إضافة وكل درس صالحين، أو إعادة تعيين المفاتيح الأربعة الموجودة تحت يدك اليمنى: h وn وe وi في Colemak، وm وn وe وi في Colemak-DH. ينفذ خيار langmap في Vim المهمة نفسها في الوضع العادي، لكنه لا ينطبق على تركيبات Ctrl وقد يسبب التباساً في تعيينات الإضافات.
كم أحتاج من الوقت للكتابة بسرعتي السابقة مجدداً؟
توقع أسابيع لا أياماً، لأن الأمر يتعلق بالذاكرة الحركية، ووسيلة التدريب الوحيدة هي الممارسة. تصف سجلات التدريب التي يشاركها المستخدمون عادةً الأسبوع الأول بأنه يكون دون نصف السرعة السابقة بكثير، ثم عودة السرعة بعد شهر إلى 3 أشهر من الاستخدام اليومي. يؤدي التبديل بين QWERTY وColemak كل يوم إلى إطالة هذه المدة، لأن أياً من الاستجابتين الانعكاسيتين لا يستقر.
لماذا لم ينفذ setxkbmap أي شيء على سطح مكتبي؟
السبب شبه المؤكد هو أن الجلسة تستخدم Wayland. في Wayland، يمتلك compositing manager تخطيط لوحة المفاتيح ويدفعه إلى كل تطبيق، لذلك قد يعجز setxkbmap عن العثور على display أو يغيّر XWayland فقط، بينما تتجاهله التطبيقات الأصلية. اضبط التخطيط في compositing manager بدلاً من ذلك: باستخدام مفتاح gsettings org.gnome.desktop.input-sources في GNOME، أو xkb_variant في إعداد sway، أو من صفحة Layouts في System Settings ضمن KDE Plasma.