איך להגדיר פריסת מקלדת Colemak ב-Linux
מדריך מלא להגדרת Colemak ב-Linux עבור X11, Wayland ומסוף הטקסט. למדו איך לנהל קיצורי דרך ב-Vim, למה שרת SSH לא דורש שינוי פריסה ואיך להשתמש ב-QMK למיפוי חומרה.
היכן מוגדר פריסת המקלדת Colemak ב-Linux
ב-Linux, פריסת Colemak אינה מוגדרת כהגדרה מערכתית יחידה. הפריסה מוחלת על ידי הרכיב שקורא את המקלדת באותו רגע, לכן היא קיימת באחד משלושה מקומות: מסוף הטקסט (text console), שרת ה-X11, או ה-compositor של Wayland. הגדרה במקום הלא נכון לא תניב שום שינוי.
אפשרות רביעית עוקפת את מערכת ההפעלה לחלוטין. מקלדת שמבצעת מיפוי מחדש ב-firmware שלה, כגון לוח המריץ QMK או VIA, שולחת את הקודים של האותיות הרצויות. כך, בכל מכונה שאליה תחברו את המקלדת, היא תקליד ב-Colemak ללא צורך בהגדרה כלל, כולל במסוף של שרת או במכונה שאינה בבעלותכם. החיסרון הוא שמקלדת המחשב הנייד שלכם תמשיך להקליד ב-QWERTY.
שאר המדריך הזה מכסה את שלוש שכבות התוכנה, את הסיבה לכך ששרת מרוחק כמעט לעולם אינו זקוק לאף אחת מהן, ואת ההשפעה של המעבר על Vim ועל קיצורי הדרך ב-terminal שלכם.
בדקו מה כבר מותקן במערכת שלכם
הריצו פקודות אלו לפני ביצוע שינויים כלשהם. הן מציגות את ההגדרה הנוכחית ואת רשימת גרסאות ה-Colemak שמאגר המקלדות של X מציע.
localectl status
setxkbmap -query
localectl list-x11-keymap-variants us | grep colemakהפקודה האחרונה אמורה להציג את colemak ואת colemak_dh. פריסת Colemak קיימת ב-xkeyboard-config מזה שנים. גרסת Colemak-DH נוספה בגרסה 2.34, כך שרק הפצה ישנה מאוד תחסר אותה. נכון לאוגוסט 2026, גם Ubuntu 24.04 וגם Debian 13 כוללות גרסה חדשה יותר מזו.
אם setxkbmap -query מדווח על חוסר יכולת לפתוח תצוגה (display), סימן שאתם נמצאים ב-session של 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 פעיל ואינו כותב דבר לדיסק, מה שהופך זאת לדרך בטוחה לנסות את הפריסה למשך שעה.
כדי לשמור את ההגדרה גם לאחר אתחול (reboot):
sudo localectl set-x11-keymap us pc105 colemak
localectl statusסדר הארגומנטים הוא פריסה (layout), דגם (model), ולאחר מכן וריאציה (variant). הפקודה localectl status אמורה כעת להציג X11 Layout: us ו-X11 Variant: colemak. הכלי localectl ממיר את הבחירה גם למפת המקשים הקרובה ביותר עבור ה-console, אלא אם כן מוסיפים את הדגל --no-convert; לכן, במערכות רבות, פקודה יחידה זו מכסה גם את ה-tty. ב-Debian וב-Ubuntu, יש לבדוק את הקובץ /etc/default/keyboard לאחר מכן, כיוון שזהו הקובץ ש-console-setup קורא בעת העלייה.
הגדרת Colemak ב-Wayland
בסשן Wayland אין שרת X להגדרה. ה-compositor טוען את מפת המקלדת ומעביר אותה לכל יישום, לכן פריסת המקלדת היא הגדרה של ה-compositor. זו הסיבה שהפקודה setxkbmap נראית שם לא תקינה: היא נכשלת במציאת display, או שהיא משנה רק את XWayland, בעוד יישומי Wayland מקוריים מתעלמים ממנה.
ב-GNOME ההגדרה היא מפתח gsettings:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"השינוי חל באופן מיידי, ללא צורך ב-logout. המחרוזת 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 במסוף הטקסט
המסוף (console) הוא ה-tty מבוסס הטקסט אליו מגיעים באמצעות Ctrl+Alt+F3, והוא מנהל מפת מקשים משלו. הגדרות שבוצעו ב-X11 או במנהל חלונות אינן משפיעות עליו, עובדה שחשובה אם אתם עובדים על סביבת עבודה במסוף וירטואלי חשוף.
ב-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 כאל בדיקה ולא כאל הגדרה קבועה: השינוי נשמר עד ל-reboot, וב-Debian וב-Ubuntu, הרצת ה-setupcon בזמן ה-boot משחזרת את מה שמוגדר ב-/etc/default/keyboard.
האם שרת VPS ללא ממשק גרפי זקוק לפריסת מקלדת Colemak?
כמעט לעולם לא, והסיבה לכך חשובה להבנה. פרוטוקול SSH מעביר תווים, לא מיקומי מקשים. אמולטור הטרמינל שלכם קולט את לחיצת המקש, הפריסה המקומית שלכם מתרגמת אותה לתו, ורק התו הזה עובר בחיבור. השרת מקבל n ללא כל דרך לדעת איזה מקש פיזי יצר אותו. לכן, הפריסה שהגדרתם במחשב הנייד שלכם מלווה אתכם לכל סשן SSH, לתוך tmux, ולכל עורך טקסט שאתם מריצים מרחוק; המכונה המרוחקת אינה זקוקה לשום הגדרת מקלדת.
זכרו זאת לפני שאתם מתחילים לערוך קובצי מקלדת בשרתי ייצור. אם אתם מנהלים צי של שרתי Linux, הפריסה שייכת למכונה שלפניכם ולא לצי השרתים, ולכן אין לה מקום בתהליך ה-provisioning שלכם. עשר הדקות הראשונות ב-VPS חדש מכילות עבודה מועילה יותר מזו.
ישנם שני חריגים שכדאי להיערך עבורם. הראשון הוא קונסולה המחוברת פיזית למכונה. קונסולת הדפדפן בלוח הבקרה של ספק הענן מציגה את עצמה בדרך כלל למכונה הווירטואלית כמקלדת, כך שלחיצות המקשים מגיעות כ-scancodes ומיפוי המקשים של השרת עצמו קובע איזה תו יופיע. זהו המקום היחיד שבו פריסה המוגדרת בשרת משפיעה, וזהו גם נתיב ההצלה שלכם כאשר SSH מפסיק לעבוד; לכן, מיפוי מקשים חלקי בקונסולה כזו מהווה סיכון ממשי.
קונסולה טורית (serial console) מתנהגת אחרת, כיוון שהיא מעבירה תווים והפריסה המקומית שלכם היא זו שחלה. החריג השני הוא מכונה משותפת. מיפוי מקשים בקונסולה הוא גלובלי למערכת, לכן הגדרת Colemak על מכונה שאנשים אחרים מתחברים אליה תשנה את הפריסה גם עבורם, והם לא ינחשו מדוע.
מה קורה למקשי הניווט hjkl ב-Vim
בפריסת Colemak, המקש h אינו מזיז את הסמן. שלושת המקשים האחרים כן. המקש j נמצא תחת המיקום של Y בפריסת QWERTY, המקש k תחת N, והמקש l תחת U. כתוצאה מכך, מקשי הסמן מפוזרים על פני שלוש שורות במקום להיות מונחים תחת ארבע אצבעות.
קיימות שתי גישות מעשיות, ולשתיהן יש משתמשים רבים.
השאירו את הגדרות ברירת המחדל ולמדו מחדש את המיקומים. שום דבר בהגדרות שלכם לא יישבר, כל תוסף ימשיך לעבוד, וכל טיפ ל-Vim שנכתב על ידי אחרים ימשיך להיות רלוונטי עבורכם בדיוק כפי שנכתב.
לחלופין, בצעו מיפוי מחדש (remap) לארבעת המקשים שנמצאים תחת יד ימין שלכם, במיקום שבו היו 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 מפעיל את מצב העריכה (insert mode), והמקש k חוזר על החיפוש האחרון. בצעו את אותו תהליך עבור האותיות הגדולות (capitals), אחרת לחיצה על Shift יחד עם מקש סמן תניב תוצאה לא צפויה.
האופציה langmap ב-Vim מבצעת עבודה דומה בפחות שורות:
set langmap=nj,ek,il,li,knכל זוג נקרא כתו שאתם מקלידים ואחריו התו ש-Vim צריכה לבצע. הגדרה זו חלה על מצב רגיל (normal mode) בלבד, כך שמצב עריכה ימשיך להקליד טקסט ב-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 שומרת על ה-prefix המוגדר כברירת מחדל שלה, כיוון שהאות B אינה זזה ב-Colemak. ב-Colemak-DH, האות B עוברת לשורה העליונה וה-prefix עובר איתה; זהו הדבר הראשון שתבחינו בו אם אתם מנהלים סשן tmux ארוך על גבי VPS. הגדרה מחדש של ה-prefix למקש שנוח לכם היא שינוי של שורה אחת, וזה קל יותר מאשר לאמן מחדש את אותו רפלקס פעמיים.
קיצורי דרך בשולחן העבודה פועלים לפי אותו כלל. קיצור המוגדר כ-Super+E עובר יחד עם הפריסה, כיוון שהוא מוגדר לפי התו. קיצור המוגדר כ-Super+F1 נשאר במקומו, כיוון שמקשי פונקציות אינם ממופים מחדש על ידי הפריסה.
כמה זמן עולה המעבר
איש אינו יכול לספק מספר מדויק עבור הידיים שלכם. הקלדה עיוורת היא זיכרון מוטורי. אתם לא לומדים איפה נמצאות האותיות, אלא בונים מחדש את הרפלקס שהופך מילה לרצף תנועות אצבעות, לכן הקלט היחיד שעוזר הוא הזמן שמושקע בהקלדה.
מה שאנשים מדווחים עליו, ואלו הם יומני תרגול אישיים ולא מדידה מבוקרת, הוא שבוע ראשון שבו המהירות נמוכה בהרבה מחצי מהמהירות הקודמת, וחזרה לאותה מהירות ישנה בטווח שבין חודש לשלושה חודשים של שימוש יומיומי. השונות בין אנשים רחבה, לכן התייחסו לנתונים אלו כאל הערכת כיוון ולא כאל לוח זמנים.
שני הרגלים הופכים את התהליך לאיטי יותר. מעבר בין QWERTY לבין Colemak במהלך היום מחליש את שני הרפלקסים, לכן רוב האנשים שמסיימים את המעבר מתחייבים אליו באופן מלא במחשב הראשי שלהם. התחלה במהלך שבוע עמוס משמעותה הקלדה ברמה נמוכה תחת לחץ זמן, מה שמאמן אתכם להסתכל על המקשים.
הגדירו את דרך החזרה לפני שתזדקקו לה, כיוון שהרגע שבו תרצו לחזור ל-QWERTY הוא הרגע שבו משהו מקולקל ומישהו ממתין.
כיצד לחזור במהירות למקלדת QWERTY
בסביבת X11, הפקודה setxkbmap us משחזרת את פריסת QWERTY באופן מיידי. במסוף (console), הפקודה sudo loadkeys us מבצעת פעולה זהה. כדי לבטל את ההגדרה הקבועה, הריצו את sudo localectl set-x11-keymap us.
שימוש במתג (toggle) עדיף על פני פקודה שצריך להקליד בפריסה שעדיין אינכם מסוגלים להקליד בה:
setxkbmap -layout us,us -variant colemak, -option grp:win_space_toggleפקודה זו טוענת את Colemak כפריסה הראשונה ואת US הרגילה כפריסה השנייה, והצירוף Super+Space מאפשר לעבור ביניהן. הפסיק בסוף colemak, אינו טעות דפוס: הוא מעניק לפריסה הראשונה את הווריאציה colemak ולפריסה השנייה אין וריאציה. ב-GNOME, הוסיפו את שני מקורות הקלט בהגדרות (Settings), שם הצירוף Super+Space כבר מוגדר למעבר ביניהם.
שתי בקשות סיסמה פועלות מחוץ לסשן שולחן העבודה שלכם ודורשות התייחסות נפרדת. מסך הכניסה (greeter) עולה לפני שהגדרות הסשן שלכם מוחלות, לכן בדקו זאת על ידי יציאה מהמערכת (logout) במקום להסתמך על ההגדרה. אם הדיסק מוצפן, בקשת הסיסמה מופעלת מתוך ה-initramfs, שמחזיק עותק משלו של מפת המקלדת. ב-Debian וב-Ubuntu, בנו אותו מחדש בעזרת sudo update-initramfs -u לאחר שינוי /etc/default/keyboard, ולאחר מכן בצעו reboot פעם אחת כדי לבדוק זאת בזמן שעדיין יש לכם דרך אחרת להיכנס למכונה.
האם ניתן להשאיר תוכנה אחת בפריסת QWERTY?
פריסת המקלדת מוחלת לפני שהיישום מקבל את הקלט. שרת ה-X או ה-compositor מתרגמים scancode לתו ומעבירים אותו הלאה, לכן יישום אינו יכול לבקש פריסה שונה. הוא יכול רק לבצע מיפוי מחדש למה שהוא מקבל. זו הסיבה שהתיקון עבור Vim נמצא בקובץ התצורה של Vim, וזו הסיבה שאין אפשרות כללית להחלפת פריסה לפי חלון.
שתי גישות עובדות. הראשונה היא לפי התקן. אם ההקלדה ב-QWERTY מתבצעת במקלדת נפרדת, הגדירו את הפריסה עבור אותו התקן במקום ברמת המערכת:
xinput list
setxkbmap -device 12 -layout usקחו את ה-id מתוך xinput list, ואמתו אותו על ידי הקלדה בכל מקלדת בתורה. sway מקבל את אותן הגדרות לפי מזהה התקן קלט מתוך swaymsg -t get_inputs, ובורר ספציפי יותר גובר על type:keyboard.
הגישה השנייה היא לבצע את המיפוי מחדש בתוך היישום, כפי ש-langmap של Vim עושה. במשחקים כמעט תמיד יש מסך הגדרת מקשים, ומיפוי מחדש של מקשי התנועה שם דורש פחות זמן מאשר ניסיון לעקוף את הפריסה מבחוץ. עבור כל דבר שאין לו אף אחת מהאפשרויות הללו, הגדירו את קיצור הדרך להחלפת פריסה כפי שצוין לעיל ולחצו עליו לפני הפעלת התוכנה.
FAQ
האם עליי להגדיר Colemak בשרת ה-VPS שלי?
לא, אם הגישה אליו מתבצעת דרך SSH. פרוטוקול SSH מעביר תווים, לכן פריסת המקלדת שלך מפוענחת במחשב האישי לפני שהנתונים נשלחים, והשרת מקבל את אותם הבייטים שהיה מקבל ממשתמש QWERTY. החריג הוא מסוף הדפדפן (browser console) בלוח הבקרה של ספק השרתים, שמתחבר למכונה הווירטואלית כמקלדת פיזית ומשתמש במיפוי המקלדת של השרת עצמו. מסוף זה הוא נתיב ההצלה שלך במקרה של כשל ב-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 כדי לראות אילו מהן זמינות במערכת שלך.
מה קורה למקשי הניווט hjkl ב-Vim תחת Colemak?
המקש h נשאר במקומו. המקש j עובר למיקום של Y ב-QWERTY, המקש k למיקום של N, והמקש l למיקום של U, כך שמקשי הסמן מתפרסים על פני שלוש שורות. באפשרותך ללמוד אותם מחדש במיקומם החדש, מה ששומר על תקינותם של כל התוספים והמדריכים, או לבצע מיפוי מחדש (remap) לארבעת המקשים תחת יד ימין: h, n, e ו-i ב-Colemak, או m, n, e ו-i ב-Colemak-DH. האפשרות langmap ב-Vim מבצעת פעולה דומה עבור מצב normal, אם כי היא אינה חלה על שילובי Ctrl ועלולה לשבש מיפויים של תוספים.
כמה זמן ייקח לי לחזור למהירות ההקלדה הקודמת שלי?
צפה לשבועות ולא לימים, כיוון שמדובר בזיכרון שריר והדרך היחידה היא תרגול. יומני תרגול מדווחים בדרך כלל על שבוע ראשון במהירות הנמוכה מחצי מהמהירות המקורית, וחזרה למהירות הקודמת לאחר חודש עד שלושה חודשים של שימוש יומיומי. מעבר בין QWERTY ל-Colemak מדי יום מאריך את התהליך, כיוון שאף אחד מהרפלקסים אינו מצליח להתקבע.
מדוע הפקודה setxkbmap לא השפיעה על שולחן העבודה שלי?
כמעט בוודאות בגלל שהסשן רץ תחת Wayland. ב-Wayland ה-compositor הוא שאחראי על מיפוי המקלדת ודוחף אותו לכל יישום, לכן setxkbmap לא מצליח למצוא תצוגה או משנה רק את XWayland, בעוד היישומים המקוריים מתעלמים מכך. הגדר את הפריסה ב-compositor עצמו: מפתח ה-gsettings בשם org.gnome.desktop.input-sources ב-GNOME, הקובץ xkb_variant בהגדרות sway, או דף ה-Layouts בהגדרות המערכת של KDE Plasma.