วิธีตั้งค่าคีย์บอร์ด Colemak บน Linux ทุกสภาพแวดล้อม
คู่มือการตั้งค่า Colemak บน Linux ทั้งในคอนโซล X11 และ Wayland พร้อมคำแนะนำการจัดการปุ่มลัด Vim และปัญหาการใช้งานผ่าน SSH โดยละเอียดเพื่อให้คุณเปลี่ยนผังแป้นพิมพ์ได้อย่างถูกต้องครบถ้วน
ตำแหน่งที่ตั้งของผังแป้นพิมพ์ Colemak บน Linux
ผังแป้นพิมพ์ Colemak บน Linux ไม่ใช่การตั้งค่าระดับระบบเพียงจุดเดียว ผังแป้นพิมพ์จะถูกนำไปใช้โดยซอฟต์แวร์ที่รับค่าจากแป้นพิมพ์ในขณะนั้น ดังนั้นตำแหน่งที่ตั้งจึงแบ่งออกเป็น 3 ส่วน ได้แก่ text console, X11 server หรือ Wayland compositor หากตั้งค่าผิดจุดจะไม่มีผลใดๆ เกิดขึ้น
ทางเลือกที่ 4 คือการข้ามระดับระบบปฏิบัติการไปเลย แป้นพิมพ์ที่สามารถ remap ค่าใน firmware ของตัวเองได้ เช่น แป้นพิมพ์ที่ใช้ QMK หรือ VIA จะส่งรหัสตัวอักษรที่คุณต้องการโดยตรง ทำให้ทุกเครื่องที่คุณนำไปเสียบใช้งานจะพิมพ์เป็น Colemak ได้ทันทีโดยไม่ต้องตั้งค่าใดๆ รวมถึงการใช้งานผ่าน server console หรือเครื่องที่คุณไม่ได้เป็นเจ้าของ แต่ข้อเสียคือแป้นพิมพ์ของแล็ปท็อปจะยังคงพิมพ์เป็น QWERTY ตามเดิม
เนื้อหาส่วนที่เหลือของคู่มือนี้จะครอบคลุมซอฟต์แวร์ทั้ง 3 เลเยอร์ เหตุผลที่ server ระยะไกลแทบไม่จำเป็นต้องตั้งค่าเหล่านี้เลย และผลกระทบของการเปลี่ยนผังแป้นพิมพ์ที่มีต่อ 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 ได้ แสดงว่าคุณกำลังใช้งานเซสชัน Wayland และ compositor เป็นผู้ควบคุมเลย์เอาต์คีย์บอร์ด ซึ่งกรณีดังกล่าวจะมีส่วนอธิบายแยกไว้ด้านล่างนี้
Colemak หรือ Colemak-DH
Colemak ย้ายตำแหน่งปุ่ม 17 ปุ่มจากตำแหน่งเดิมบน QWERTY และคงตำแหน่งเดิมไว้ 10 ปุ่ม ซึ่งรวมถึง Z, X, C และ V ทำให้ปุ่มลัดสำหรับ undo, cut, copy และ paste ยังคงอยู่ในตำแหน่งที่มือซ้ายของคุณคุ้นเคย ความเข้ากันได้นี้คือเหตุผลหลักที่ทำให้เลย์เอาต์มีหน้าตาเป็นเช่นนี้
Colemak-DH เป็นการปรับปรุงจาก Colemak โดยมีการย้ายตำแหน่ง D, B และ G และสลับตำแหน่ง H กับ M เนื่องจาก Colemak แบบมาตรฐานต้องพิมพ์ทั้ง D และ H โดยการเหยียดนิ้วชี้เข้าไปยังคอลัมน์กลางของคีย์บอร์ด การปรับปรุงอย่างเป็นทางการนี้ยังคงให้ตัวอักษรแต่ละตัวอยู่ภายใต้การควบคุมของนิ้วเดิมที่ใช้ใน Colemak ดังนั้นผู้ที่พิมพ์ Colemak อยู่แล้วเมื่อเปลี่ยนมาใช้ DH จึงต้องปรับตัวเพียงเล็กน้อยแทนที่จะต้องเรียนรู้เลย์เอาต์ใหม่ทั้งหมด ตัวแปร XKB คือ colemak_dh และมี colemak_dh_iso สำหรับคีย์บอร์ดที่มีปุ่มพิเศษอยู่ข้างปุ่ม left shift
หากเปลี่ยนมาจาก QWERTY ไม่ว่าจะเลือกแบบใดก็ถือเป็นการเรียนรู้ใหม่เพียงครั้งเดียว ดังนั้นให้เลือกตามความสบายในการใช้งานแล้วจบที่ตรงนั้น การเปลี่ยนเลย์เอาต์เป็นครั้งที่สองนั้นต้องใช้ความพยายามพอๆ กับครั้งแรก เพราะสิ่งที่คุณกำลังสร้างใหม่คือความจำของกล้ามเนื้อที่ผูกติดอยู่กับตำแหน่งของปุ่มบนคีย์บอร์ด
การตั้งค่า Colemak ใน X11 ด้วย setxkbmap และ localectl
setxkbmap us -variant colemak
setxkbmap -queryตอนนี้ setxkbmap -query ควรแสดงผลเป็น variant: colemak และการพิมพ์ในหน้าต่างใดก็ตามควรได้ตัวอักษรแบบ Colemak การเปลี่ยนแปลงนี้จะมีผลตราบเท่าที่ session ของ X ยังทำงานอยู่และไม่มีการเขียนข้อมูลลงดิสก์ ซึ่งเป็นวิธีที่ปลอดภัยที่สุดในการทดลองใช้ layout นี้เป็นเวลาหนึ่งชั่วโมง
หากต้องการให้การตั้งค่าคงอยู่หลังการรีบูต:
sudo localectl set-x11-keymap us pc105 colemak
localectl statusลำดับของอาร์กิวเมนต์คือ layout ตามด้วย model และ variant ตอนนี้ localectl status ควรแสดง X11 Layout: us และ X11 Variant: colemak นอกจากนี้ localectl จะแปลงค่าที่เลือกให้เป็น keymap ของคอนโซลที่ใกล้เคียงที่สุดโดยอัตโนมัติ เว้นแต่คุณจะเพิ่ม --no-convert เข้าไป ดังนั้นในหลายระบบ คำสั่งเดียวนี้จะครอบคลุมถึง tty ด้วย สำหรับ Debian และ Ubuntu ให้ตรวจสอบไฟล์ /etc/default/keyboard หลังจากนั้น เนื่องจากไฟล์ดังกล่าวคือสิ่งที่ console-setup อ่านในขณะบูตระบบ
การตั้งค่า Colemak บน Wayland
เซสชัน Wayland ไม่มี X server ให้กำหนดค่า ตัว compositor จะเป็นผู้โหลด keymap และส่งต่อให้แต่ละแอปพลิเคชัน ดังนั้นการตั้งค่า layout จึงขึ้นอยู่กับ compositor นี่คือสาเหตุที่คำสั่ง setxkbmap ดูเหมือนใช้งานไม่ได้ในสภาพแวดล้อมนี้ เพราะมันอาจหา display ไม่พบ หรือเปลี่ยนเฉพาะ XWayland เท่านั้น ในขณะที่แอปพลิเคชัน Wayland แท้ๆ จะเพิกเฉยต่อคำสั่งดังกล่าว
บน GNOME การตั้งค่าจะอยู่ใน gsettings key:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"การตั้งค่าจะมีผลทันทีโดยไม่ต้องออกจากระบบ สตริง us+colemak คือการรวมกันของ layout และ variant โดยใช้เครื่องหมายบวกเชื่อม
บน sway ให้ใส่ค่าลงใน ~/.config/sway/config:
input type:keyboard {
xkb_layout us
xkb_variant colemak_dh
}โหลดการตั้งค่าใหม่ด้วย swaymsg reload คำสั่ง swaymsg -t get_inputs จะแสดงรายการอุปกรณ์อินพุตทั้งหมดพร้อมกับ layout ที่ใช้งานอยู่ ซึ่งเป็นสิ่งที่ควรตรวจสอบเมื่อมีคีย์บอร์ดเพียงตัวเดียวที่ทำงานผิดปกติ
บน KDE Plasma ให้เปิด System Settings จากนั้นไปที่ Keyboard แล้วเลือก Layouts จากนั้นเพิ่ม English (US) โดยเลือก variant เป็น Colemak
การตั้งค่า Colemak บน text console
Console คือ tty แบบข้อความล้วนที่คุณเข้าถึงได้ด้วย Ctrl+Alt+F3 ซึ่งมีการจัดการ keymap แยกต่างหาก สิ่งที่คุณตั้งค่าใน X11 หรือ compositor จะไม่มีผลกับส่วนนี้ ซึ่งเป็นเรื่องสำคัญหากคุณทำงานบน terminal workbench บน bare virtual console
บน Debian และ Ubuntu ให้แก้ไขไฟล์ /etc/default/keyboard:
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT="colemak"
XKBOPTIONS=""จากนั้นให้ใช้การตั้งค่า:
sudo setupconทดสอบพิมพ์บน console เพื่อยืนยันผล console-setup จะแปลงคำอธิบาย XKB นั้นให้เป็น console keymap ด้วย ckbcomp ดังนั้น console และ X จึงใช้คำอธิบายเดียวกันบนระบบเหล่านี้
สำหรับ distribution ที่ใช้ kbd keymaps โดยตรง ให้ตรวจสอบชื่อก่อน:
localectl list-keymaps | grep -i -e colemak -e latin9
sudo localectl set-keymap en-latin9แพ็กเกจ kbd มี Colemak console map มาให้ในชื่อ i386/colemak/en-latin9 ดังนั้นชื่อที่คุณต้องระบุโดยปกติคือ en-latin9 ไม่ใช่ colemak ให้ระบุชื่อที่ปรากฏอยู่ในรายการเท่านั้น เนื่องจากชื่อที่ไม่มีอยู่จริงจะถูกปฏิเสธ
sudo loadkeys en-latin9 จะเปลี่ยนการตั้งค่า console ปัจจุบันทันที และ sudo loadkeys us จะเปลี่ยนกลับค่าเดิม ให้ถือว่า loadkeys เป็นการทดสอบมากกว่าการตั้งค่าถาวร เพราะจะมีผลจนกว่าจะรีบูตเครื่อง และบน Debian กับ Ubuntu การทำงานของ setupcon ในช่วงบูตเครื่องจะคืนค่าตามที่ระบุไว้ใน /etc/default/keyboard เสมอ
Headless VPS จำเป็นต้องใช้ผังคีย์บอร์ดแบบ Colemak หรือไม่
แทบจะไม่จำเป็นเลย และเหตุผลนั้นเป็นสิ่งที่ควรทำความเข้าใจ SSH ส่งผ่านตัวอักษรไม่ใช่ตำแหน่งของปุ่มบนคีย์บอร์ด โปรแกรม terminal emulator ของคุณจะรับการกดปุ่ม ผังคีย์บอร์ดในเครื่องของคุณจะแปลงปุ่มนั้นเป็นตัวอักษร และมีเพียงตัวอักษรนั้นเท่านั้นที่ถูกส่งผ่านการเชื่อมต่อ เซิร์ฟเวอร์จะได้รับ n โดยไม่มีทางทราบได้เลยว่าปุ่มทางกายภาพใดเป็นตัวสร้างตัวอักษรนั้นขึ้นมา ดังนั้นผังคีย์บอร์ดที่คุณตั้งค่าไว้บนแล็ปท็อปจะติดตามคุณไปในทุกเซสชัน SSH, ใน tmux และในทุกโปรแกรมแก้ไขข้อความที่คุณใช้งานจากระยะไกล โดยที่เครื่องปลายทางไม่จำเป็นต้องมีการตั้งค่าคีย์บอร์ดใดๆ เลย
โปรดจำข้อนี้ไว้ก่อนที่คุณจะเริ่มแก้ไขไฟล์คีย์บอร์ดบนเซิร์ฟเวอร์ที่ใช้งานจริง หากคุณ ดูแลกลุ่มเซิร์ฟเวอร์ Linux ผังคีย์บอร์ดเป็นเรื่องของเครื่องที่อยู่ตรงหน้าคุณ ไม่ใช่เรื่องของกลุ่มเซิร์ฟเวอร์ ดังนั้นจึงไม่มีความจำเป็นต้องรวมการตั้งค่านี้ไว้ในขั้นตอนการเตรียมระบบ สิบนาทีแรกบน VPS ใหม่ มีงานที่มีประโยชน์ให้ทำมากกว่าเรื่องนี้
มีข้อยกเว้นสองประการที่ควรวางแผนไว้ ประการแรกคือคอนโซลที่เชื่อมต่อกับตัวเครื่องโดยตรง คอนโซลผ่านเบราว์เซอร์ในแผงควบคุมของผู้ให้บริการมักจะแสดงตัวต่อเครื่องเสมือนในฐานะคีย์บอร์ด ดังนั้นการกดปุ่มจะถูกส่งไปเป็น scancode และผังคีย์บอร์ดของคอนโซลบนเซิร์ฟเวอร์จะเป็นตัวตัดสินว่าตัวอักษรใดจะปรากฏขึ้น นั่นเป็นจุดเดียวที่ผังคีย์บอร์ดที่ตั้งค่าบนเซิร์ฟเวอร์จะมีผล และยังเป็นช่องทางกู้คืนระบบของคุณเมื่อ SSH ใช้งานไม่ได้ ดังนั้นการตั้งค่าผังคีย์บอร์ดคอนโซลที่ไม่สมบูรณ์ในจุดนี้จึงถือเป็นความเสี่ยงที่แท้จริง
Serial console มีการทำงานที่แตกต่างออกไปเนื่องจากมันส่งผ่านตัวอักษรและใช้ผังคีย์บอร์ดจากเครื่องของคุณ ข้อยกเว้นประการที่สองคือเครื่องที่ใช้งานร่วมกัน ผังคีย์บอร์ดของคอนโซลมีผลทั้งระบบ ดังนั้นการตั้งค่า Colemak บนเครื่องที่มีผู้อื่นเข้าใช้งานด้วยจะทำให้การตั้งค่าของพวกเขาเปลี่ยนไปเช่นกัน และพวกเขาจะไม่ทราบสาเหตุว่าทำไมจึงเป็นเช่นนั้น
จะเกิดอะไรขึ้นกับปุ่ม hjkl ใน Vim
บนเลย์เอาต์ Colemak ปุ่ม h จะไม่เลื่อนตำแหน่ง ส่วนอีกสามปุ่มที่เหลือจะเลื่อนไป โดย j จะไปอยู่ใต้ตำแหน่ง Y ของ QWERTY, k จะอยู่ใต้ตำแหน่ง N ของ QWERTY และ l จะอยู่ใต้ตำแหน่ง U ของ QWERTY ส่งผลให้ปุ่มควบคุมเคอร์เซอร์กระจายตัวอยู่บนสามแถวแทนที่จะอยู่ใต้สี่นิ้วของคุณ
มีแนวทางที่ใช้งานได้จริงสองวิธี ซึ่งทั้งสองวิธีต่างก็มีผู้ใช้งานจริงรองรับ
วิธีแรกคือใช้ค่าเริ่มต้นและฝึกจดจำตำแหน่งใหม่ วิธีนี้จะไม่ทำให้การตั้งค่าอื่นของคุณเสียหาย ปลั๊กอินทุกตัวยังคงทำงานได้ตามปกติ และคำแนะนำเกี่ยวกับ 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 และ k จะทำซ้ำการค้นหาล่าสุด อย่าลืมตั้งค่าตัวพิมพ์ใหญ่ให้เหมือนกัน มิฉะนั้นการกด Shift พร้อมกับปุ่มเคอร์เซอร์จะทำให้คุณประหลาดใจได้
ตัวเลือก langmap ของ Vim สามารถทำงานคล้ายกันได้โดยใช้จำนวนบรรทัดที่น้อยกว่า:
set langmap=nj,ek,il,li,knแต่ละคู่จะอ่านค่าจากตัวอักษรที่คุณพิมพ์ตามด้วยตัวอักษรที่ Vim ควรดำเนินการ การตั้งค่านี้มีผลเฉพาะใน normal mode เท่านั้น ดังนั้นในโหมด insert คุณจะยังคงพิมพ์ข้อความด้วย Colemak ได้ตามปกติ มีข้อจำกัดสองประการที่ระบุไว้ในระบบช่วยเหลือของ Vim เอง คือ langmap จะไม่มีผลกับชุดคำสั่ง Ctrl หรือ Alt และการแมปของปลั๊กอินที่เขียนขึ้นโดยอ้างอิงจากปุ่มค่าเริ่มต้นอาจทำงานผิดปกติภายใต้การตั้งค่านี้
ไม่ว่าคุณจะเลือกวิธีใด ให้เลือกเพียงครั้งเดียว การ remap ที่คุณเลิกใช้หลังจากผ่านไปหนึ่งเดือนจะทำให้คุณเสียเวลาไปอีกหนึ่งเดือนในการปรับตัวใหม่
เกิดอะไรขึ้นกับทางลัดในเทอร์มินัล
รหัสควบคุมเทอร์มินัลมาจากตัวอักษร ไม่ใช่จากปุ่มกดทางกายภาพ ดังนั้นทางลัด Ctrl ทุกตัวจึงย้ายตำแหน่งไปตามเลย์เอาต์ Ctrl+C, Ctrl+Z, Ctrl+X และ Ctrl+V จะยังคงอยู่ในตำแหน่งเดิม เนื่องจาก Colemak ได้ออกแบบให้ Z, X, C และ V อยู่ในตำแหน่งเดียวกับ QWERTY โดยเจตนา
ทางลัด 4 ตัวที่คุณใช้ทุกวันจะมีการย้ายตำแหน่ง 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 session ทิ้งไว้บน VPS การตั้งค่า prefix ใหม่ให้เป็นปุ่มที่คุณต้องการสามารถทำได้โดยแก้ไขเพียงบรรทัดเดียว ซึ่งง่ายกว่าการฝึกความเคยชินใหม่ถึงสองครั้ง
ทางลัดบนเดสก์ท็อปก็ใช้กฎเดียวกัน การผูกปุ่ม Super+E จะย้ายไปตามเลย์เอาต์เพราะถูกกำหนดด้วยตัวอักษร ส่วนการผูกปุ่ม Super+F1 จะยังคงอยู่ที่เดิมเนื่องจากปุ่มฟังก์ชันไม่ได้ถูกเปลี่ยนตำแหน่งโดยเลย์เอาต์
ระยะเวลาที่ต้องใช้ในการเปลี่ยนรูปแบบการพิมพ์
ไม่มีใครสามารถระบุตัวเลขที่แน่นอนสำหรับทักษะส่วนบุคคลของคุณได้ การพิมพ์สัมผัสคือความจำของกล้ามเนื้อ คุณไม่ได้กำลังเรียนรู้ว่าตัวอักษรอยู่ที่ไหน แต่คุณกำลังสร้างการตอบสนองใหม่ที่เปลี่ยนคำให้กลายเป็นลำดับการเคลื่อนไหวของนิ้ว ดังนั้นสิ่งเดียวที่จะช่วยได้คือเวลาที่คุณใช้ในการพิมพ์
สิ่งที่ผู้คนรายงาน ซึ่งเป็นบันทึกการฝึกฝนด้วยตนเองไม่ใช่การวัดผลที่มีการควบคุม คือในช่วงสัปดาห์แรกความเร็วจะต่ำกว่าครึ่งหนึ่งของความเร็วเดิมมาก และจะกลับมาทำความเร็วได้เท่าเดิมในช่วงเวลาตั้งแต่หนึ่งถึงสามเดือนของการใช้งานทุกวัน ความแตกต่างระหว่างบุคคลนั้นมีมาก ดังนั้นให้ถือว่าตัวเลขเหล่านี้เป็นแนวทางมากกว่าจะเป็นตารางเวลาที่ตายตัว
นิสัยสองอย่างที่ทำให้การเรียนรู้ช้าลง คือการสลับไปมาระหว่าง QWERTY และ Colemak ในระหว่างวัน ซึ่งจะทำให้การตอบสนองของทั้งสองรูปแบบอ่อนแอลง ดังนั้นคนส่วนใหญ่ที่เปลี่ยนรูปแบบการพิมพ์ได้สำเร็จจึงเลือกที่จะใช้รูปแบบใหม่บนเครื่องหลักของตนอย่างเต็มตัว การเริ่มต้นในช่วงสัปดาห์ที่ยุ่งจะทำให้คุณต้องพิมพ์ด้วยความยากลำบากภายใต้แรงกดดันด้านเวลา ซึ่งจะฝึกให้คุณก้มมองแป้นพิมพ์
ควรตั้งค่าวิธีเปลี่ยนกลับไว้ก่อนที่คุณจะจำเป็นต้องใช้ เพราะช่วงเวลาที่คุณต้องการ QWERTY อีกครั้ง คือช่วงเวลาที่บางอย่างเกิดความเสียหายและมีคนกำลังรอคุณอยู่
วิธีสลับกลับเป็น QWERTY อย่างรวดเร็ว
ใน X11 คำสั่ง setxkbmap us จะคืนค่าเป็น QWERTY ทันที สำหรับบนคอนโซล คำสั่ง 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 ให้เพิ่ม input source ทั้งสองรายการใน Settings ซึ่งจะรองรับการสลับด้วย Super+Space อยู่แล้ว
การป้อนรหัสผ่านสองจุดจะอยู่นอกเหนือเซสชันเดสก์ท็อปของคุณและต้องจัดการแยกต่างหาก หน้าจอเข้าสู่ระบบ (login greeter) จะเริ่มทำงานก่อนที่การตั้งค่าเซสชันของคุณจะถูกนำไปใช้ ดังนั้นควรทดสอบโดยการออกจากระบบ (log out) แทนการเชื่อมั่นในการตั้งค่าเพียงอย่างเดียว หากมีการเข้ารหัสลับดิสก์ พรอมต์สำหรับป้อนรหัสผ่านจะทำงานจาก initramfs ซึ่งมีสำเนาของ keymap แยกต่างหาก บน Debian และ Ubuntu ให้สร้าง initramfs ใหม่ด้วยคำสั่ง sudo update-initramfs -u หลังจากแก้ไขไฟล์ /etc/default/keyboard แล้ว จากนั้นให้รีบูตเครื่องหนึ่งครั้งเพื่อทดสอบในขณะที่คุณยังคงมีช่องทางอื่นในการเข้าถึงเครื่องอยู่
ฉันสามารถคงรูปแบบ QWERTY ไว้กับโปรแกรมเดียวได้หรือไม่?
รูปแบบแป้นพิมพ์จะถูกนำไปใช้ก่อนที่แอปพลิเคชันจะได้รับข้อมูลการกดปุ่ม X server หรือ compositor จะแปลง scancode ให้เป็นอักขระแล้วส่งต่อไปยังแอปพลิเคชัน ดังนั้นแอปพลิเคชันจึงไม่สามารถร้องขอรูปแบบแป้นพิมพ์ที่แตกต่างออกไปได้ ทำได้เพียงแค่แมปปุ่มที่ได้รับมาใหม่เท่านั้น นี่คือเหตุผลว่าทำไมการแก้ไขสำหรับ Vim จึงต้องทำในไฟล์ config ของ Vim และทำไมจึงไม่มีการสลับรูปแบบแป้นพิมพ์แยกตามหน้าต่างให้ใช้งานโดยทั่วไป
มีสองวิธีที่ได้ผล วิธีแรกคือการตั้งค่าแยกตามอุปกรณ์ หากการพิมพ์แบบ QWERTY เกิดขึ้นบนคีย์บอร์ดแยกต่างหาก ให้ตั้งค่ารูปแบบแป้นพิมพ์บนอุปกรณ์นั้นแทนที่จะตั้งค่าทั้งระบบ:
xinput list
setxkbmap -device 12 -layout usให้ใช้ id จาก xinput list และยืนยันโดยการพิมพ์บนคีย์บอร์ดแต่ละตัวสลับกัน sway ยอมรับการตั้งค่าเดียวกันแยกตามตัวระบุอุปกรณ์อินพุตจาก swaymsg -t get_inputs และตัวเลือกที่ระบุเจาะจงกว่าจะถูกนำมาใช้แทน type:keyboard
วิธีที่สองคือการทำ remap ภายในแอปพลิเคชัน ดังที่ langmap ของ Vim ทำ โดยปกติแล้วเกมเกือบทุกเกมจะมีหน้าจอสำหรับตั้งค่าปุ่มกด (key binding) และการตั้งค่าปุ่มควบคุมการเคลื่อนไหวใหม่ในนั้นใช้เวลาน้อยกว่าการพยายามเปลี่ยนรูปแบบแป้นพิมพ์จากภายนอก สำหรับโปรแกรมใดที่ไม่มีทั้งสองวิธี ให้ตั้งค่าปุ่มลัดสำหรับสลับรูปแบบแป้นพิมพ์ตามที่ระบุไว้ข้างต้น แล้วกดสลับก่อนที่คุณจะเปิดโปรแกรมนั้นขึ้นมา
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 สำหรับแป้นพิมพ์ที่มีปุ่มพิเศษถัดจากปุ่ม left shift ให้รัน localectl list-x11-keymap-variants us | grep colemak เพื่อดูว่าระบบของคุณรองรับตัวเลือกใดบ้าง
ปุ่ม hjkl ของ Vim จะเป็นอย่างไรเมื่อใช้ Colemak?
h จะอยู่ที่เดิม j จะย้ายไปอยู่ใต้ตำแหน่ง Y ของ QWERTY, k อยู่ใต้ตำแหน่ง N ของ QWERTY และ l อยู่ใต้ตำแหน่ง U ของ QWERTY ทำให้ปุ่มลูกศรต้องกระจายอยู่บนสามแถว คุณสามารถเรียนรู้ตำแหน่งใหม่ของปุ่มเหล่านี้ได้ ซึ่งจะทำให้ปลั๊กอินและบทเรียนทั้งหมดใช้งานได้ตามปกติ หรือจะเลือก remap ปุ่มสี่ปุ่มที่อยู่ใต้นิ้วมือขวาของคุณก็ได้แก่ h, n, e และ i บน Colemak หรือ m, n, e และ i บน Colemak-DH ตัวเลือก langmap ของ Vim สามารถทำหน้าที่นี้ได้ในโหมดปกติ แต่จะไม่มีผลกับชุดคำสั่ง Ctrl และอาจทำให้การตั้งค่าปุ่มของปลั๊กอินสับสนได้
ต้องใช้เวลานานเท่าใดจึงจะพิมพ์ได้เร็วเท่าเดิม?
คาดการณ์ไว้ว่าเป็นสัปดาห์ไม่ใช่เป็นวัน เพราะนี่คือเรื่องของความจำกล้ามเนื้อและการฝึกฝนเท่านั้น บันทึกการฝึกฝนที่ผู้ใช้รายงานมักระบุว่าสัปดาห์แรกความเร็วจะต่ำกว่าครึ่งหนึ่งของความเร็วเดิมมาก และจะกลับมาเท่าเดิมหลังจากใช้งานทุกวันเป็นเวลาหนึ่งถึงสามเดือน การสลับไปมาระหว่าง QWERTY และ Colemak ทุกวันจะทำให้ระยะเวลานี้นานขึ้น เพราะไม่มีทักษะใดที่ถูกจดจำได้อย่างมั่นคง
ทำไม setxkbmap ถึงไม่มีผลบนเดสก์ท็อปของฉัน?
เกือบจะเป็นเพราะเซสชันของคุณเป็น Wayland ภายใต้ Wayland ตัว compositor จะเป็นผู้ควบคุมคีย์แมปและส่งต่อไปยังแต่ละแอปพลิเคชัน ดังนั้น setxkbmap จึงไม่สามารถหา display พบ หรือเปลี่ยนได้เฉพาะ XWayland เท่านั้น ในขณะที่แอปพลิเคชันแบบ native จะเพิกเฉยต่อคำสั่งนี้ ให้ตั้งค่า layout ใน compositor แทน เช่น คีย์ gsettings org.gnome.desktop.input-sources บน GNOME, xkb_variant ในไฟล์ config ของ sway หรือหน้า Layouts ใน System Settings ของ KDE Plasma