איך להפוך את Caps Lock ל Escape ב Linux
פוסט זה כולל טיפ קצר על כלי עבודה בסביבת Linux. בשביל ללמוד יותר על עבודה בסביבת Linux ו Unix אני ממליץ לכם לבדוק את קורס Linux שיש לנו כאן באתר. הקורס כולל מעל 50 שיעורי וידאו והמון תרגול מעשי ומתאים גם למתחילים.
מסיבות היסטוריות מוזרות כל יצרני המקלדות מתעקשים לשים כפתור חסר ערך לחלוטין במקום טוב בשורה האמצעית ולזרוק את הכפתור הכי חשוב במקלדת לפינה השמאלית עליונה. לשמחתנו זו טעות שמאוד קל לתקן בתוכנה וב Linux אפשר למצוא שלוש גישות מרכזיות לתיקון:
1. החלפה ב Gnome Shell
משתמשי gnome יכולים להתקין כלי בשם gnome-tweaks (כך נקראת גם החבילה) ובתוכו למצוא המון התאמות מועילות למערכת. בנושא ה Caps Lock אנחנו נכנסים לתפריט Keyboard and Mouse, בוחרים Additional Layout Options ובתוכו Caps Lock Behaviour ויכולים לבחור את האפשרות הקסומה Make Caps Lock an additionsl Esc.
זאת השיטה הכי קלה להגיע לתוצאה החיסרון היחיד הוא שברגע שאתם עוזבים את gnome לטובת מנהל חלונות אחר ה Caps Lock שלכם חוזר להרגלים הישנים והפרועים שלו.
2. החלפה באמצעות xmodmap
שיטה שניה עוברת דרך פקודה בשם xmodmap. זו תוכנית עזר קטנה שמטרתה לשנות מיפויי מקשים בזמן ריצה. היא די פשוטה לשימוש, עובדת בכל מנהל חלונות והאפקט מורגש מיידית. בשביל להחליף עם xmodmap צרו קובץ באיזה שם שתחברו (אני קראתי לו disable_capslock) עם התוכן הבא:
remove lock = Caps_Lock
keycode 0x42 = Escape
ואז הפעילו xmodmap והעבירו את שם הקובץ כפרמטר:
$ xmodmap disable_capslock
זאת שיטה פשוטה שתמיד עובדת אבל יש לה חיסרון אחד מרכזי: אצלי על הלפטופ כל כניסה ל Sleep והתעוררות מחדש של המחשב כאילו ניתקה את המקלדת וחיברה אותה מחדש מה שגרם למחיקת השינויים בכל יציאה מ Sleep.
3. החלפה ב xorg.conf
שיטה שלישית שהיתה המורכבת ביותר ליישום אך עבדה לי הכי טוב היא שינוי בהגדרות X. ברוב ההפצות הגדרות אלה יושבות בתיקיית /etc/X11
אבל ב Ubuntu העדיפו לשים אותן ב /usr/share/X11/xorg.conf.d
. הקובץ 40-libinput.conf
מתיקיית ההגדרות הוא המפתח והוא שאחראי על הגדרת התקני הקלט. החלק הרלוונטי בקובץ נראה כך:
Section "InputClass"
Identifier "libinput keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
תוספת שורה אחת לקובץ זה עושה את כל ההבדל ואחרי השינוי הוא יראה כך:
Section "InputClass"
Identifier "libinput keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Option "XkbOptions" "caps:escape,terminate:ctrl_alt_bksp"
Driver "libinput"
EndSection
שינוי זה משפיע על כל מנהלי החלונות במכה אחת ונשאר פעיל גם אחרי כניסה למצב שינה. על הדרך אפשר לראות את ההגדרה terminate:ctrl_alt_bksp
שגורמת לזה שלחיצה על Ctrl+Alt+Backspace יוציאו אתכם מ X גם אם משהו במנהל החלונות תקוע.