SSD Nodes Learn Hosting plans →
คู่มือ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-08-28

วิธีตั้งค่าคีย์บอร์ด Colemak บน Linux ทุกสภาพแวดล้อม

คู่มือตั้งค่า Colemak บน Linux ครบทุกส่วนทั้ง Console, X11 และ Wayland พร้อมคำแนะนำเรื่องการจัดการปุ่มลัด Vim และเหตุผลที่ SSH server ไม่จำเป็นต้องเปลี่ยนเลย์เอาต์คีย์บอร์ด

ตำแหน่งการตั้งค่าเลย์เอาต์ Colemak บน Linux

การตั้งค่า Colemak บน Linux ไม่ได้เป็นเพียงการตั้งค่าระดับระบบเพียงจุดเดียว แต่เลย์เอาต์จะถูกกำหนดโดยซอฟต์แวร์ที่รับสัญญาณจากคีย์บอร์ดในขณะนั้น ดังนั้นตำแหน่งการตั้งค่าจึงแบ่งออกเป็น 3 ส่วน ได้แก่ text console, X11 server หรือ Wayland compositor หากตั้งค่าผิดจุดจะไม่มีการเปลี่ยนแปลงใดๆ เกิดขึ้น

ทางเลือกที่ 4 คือการข้ามระดับระบบปฏิบัติการไปเลย โดยใช้คีย์บอร์ดที่สามารถ remap ปุ่มได้ในระดับ firmware เช่น คีย์บอร์ดที่ใช้ QMK หรือ VIA ซึ่งจะส่งรหัสตัวอักษรที่คุณต้องการโดยตรง ทำให้ทุกเครื่องที่คุณนำไปเสียบใช้งานจะพิมพ์เป็น Colemak ได้ทันทีโดยไม่ต้องตั้งค่าใดๆ รวมถึงการใช้งานผ่าน server console หรือเครื่องที่คุณไม่ได้เป็นเจ้าของ แต่ข้อจำกัดคือคีย์บอร์ดของแล็ปท็อปจะยังคงพิมพ์เป็น QWERTY ตามเดิม

เนื้อหาส่วนที่เหลือของคู่มือนี้จะครอบคลุมซอฟต์แวร์ทั้ง 3 เลเยอร์ เหตุผลที่ remote 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 ไม่ว่าจะเลือกแบบใดก็ถือเป็นการเรียนรู้ใหม่เพียงครั้งเดียว ดังนั้นให้เลือกตามความสบายในการใช้งานแล้วจบที่จุดนั้น การเปลี่ยนเลย์เอาต์เป็นครั้งที่สองมีต้นทุนพอๆ กับครั้งแรก เพราะสิ่งที่คุณกำลังสร้างใหม่คือความจำกล้ามเนื้อที่ผูกติดกับตำแหน่งของปุ่ม หากคุณยังมีคำถามว่าควรเลิกใช้ QWERTY หรือไม่ ให้ตัดสินใจด้วยข้อมูลจาก การเปรียบเทียบระหว่าง Colemak, Dvorak และ QWERTY ก่อนที่คุณจะเสียเวลาเป็นเดือนเพื่อสร้างความจำกล้ามเนื้อนั้นขึ้นมาใหม่

การตั้งค่า Colemak ใน X11 ด้วย setxkbmap และ localectl

setxkbmap us -variant colemak
setxkbmap -query

ตอนนี้ setxkbmap -query ควรแสดงผลเป็น variant: colemak และการพิมพ์ในหน้าต่างใดก็ตามควรได้ตัวอักษรตามผัง Colemak การเปลี่ยนแปลงนี้จะมีผลตราบเท่าที่ X session ยังทำงานอยู่และไม่มีการเขียนข้อมูลลงดิสก์ ซึ่งเป็นวิธีที่ปลอดภัยที่สุดในการทดลองใช้ผังแป้นพิมพ์นี้เป็นเวลาหนึ่งชั่วโมง

หากต้องการให้การตั้งค่าคงอยู่หลังการรีบูต:

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 และส่งต่อให้กับแต่ละแอปพลิเคชัน ดังนั้นการตั้งค่าผังแป้นพิมพ์จึงเป็นหน้าที่ของ compositor นี่คือเหตุผลที่คำสั่ง setxkbmap ไม่ทำงานในสภาพแวดล้อมนี้ เนื่องจากคำสั่งจะล้มเหลวเพราะหา display ไม่พบ หรืออาจเปลี่ยนเฉพาะ XWayland เท่านั้น ในขณะที่แอปพลิเคชัน Wayland แท้ๆ จะเพิกเฉยต่อการตั้งค่าดังกล่าว

บน GNOME การตั้งค่าจะอยู่ใน gsettings key:

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"

การตั้งค่าจะมีผลทันทีโดยไม่ต้องออกจากระบบ (logout) สตริง 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 โดยตรง ให้ตรวจสอบชื่อ keymap ก่อน:

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 เสมอ

VPS แบบ headless จำเป็นต้องใช้เลย์เอาต์คีย์บอร์ดแบบ Colemak หรือไม่

แทบจะไม่จำเป็นเลย และเหตุผลนั้นเป็นสิ่งที่ควรทำความเข้าใจ SSH ส่งผ่านตัวอักษร ไม่ใช่ตำแหน่งของปุ่มบนคีย์บอร์ด Terminal emulator ของคุณจะรับการกดปุ่ม เลย์เอาต์ในเครื่องของคุณจะแปลงปุ่มนั้นเป็นตัวอักษร และมีเพียงตัวอักษรนั้นเท่านั้นที่ถูกส่งผ่านการเชื่อมต่อ เซิร์ฟเวอร์จะได้รับ n โดยไม่มีทางทราบได้เลยว่าปุ่มทางกายภาพใดที่สร้างตัวอักษรนั้นขึ้นมา ดังนั้นเลย์เอาต์ที่คุณตั้งค่าไว้บนแล็ปท็อปจะติดตามคุณไปในทุกเซสชัน SSH, ใน tmux และในทุกโปรแกรมแก้ไขข้อความที่คุณใช้งานจากระยะไกล โดยที่เครื่องปลายทางไม่จำเป็นต้องตั้งค่าคีย์บอร์ดใดๆ เลย

โปรดจำข้อนี้ไว้ก่อนที่คุณจะเริ่มแก้ไขไฟล์คีย์บอร์ดบนเครื่องที่ใช้งานจริง หากคุณ จัดการกลุ่มเซิร์ฟเวอร์ Linux เลย์เอาต์เป็นเรื่องของเครื่องที่อยู่ตรงหน้าคุณ ไม่ใช่เรื่องของกลุ่มเซิร์ฟเวอร์ ดังนั้นจึงไม่มีความจำเป็นต้องรวมการตั้งค่านี้ไว้ในขั้นตอนการเตรียมเครื่อง (provisioning) สิบนาทีแรกบน VPS เครื่องใหม่ มีงานที่มีประโยชน์ให้ทำมากกว่าเรื่องนี้

มีข้อยกเว้นสองประการที่ควรวางแผนไว้ ประการแรกคือคอนโซลที่เชื่อมต่อกับตัวเครื่องโดยตรง คอนโซลผ่านเบราว์เซอร์ในแผงควบคุมของผู้ให้บริการมักจะแสดงตัวต่อเครื่องเสมือนในฐานะคีย์บอร์ด ดังนั้นการกดปุ่มจะถูกส่งไปเป็น scancode และ keymap ของคอนโซลบนเซิร์ฟเวอร์จะเป็นตัวตัดสินว่าตัวอักษรใดจะปรากฏขึ้น นั่นเป็นจุดเดียวที่เลย์เอาต์ที่ตั้งค่าบนเซิร์ฟเวอร์จะมีผล และยังเป็นช่องทางกู้คืนระบบของคุณเมื่อ SSH ใช้งานไม่ได้ ดังนั้นการตั้งค่า keymap บนคอนโซลที่ไม่สมบูรณ์จึงมีความเสี่ยงอย่างแท้จริง

Serial console จะทำงานแตกต่างออกไป เพราะมันส่งผ่านตัวอักษรและเลย์เอาต์ในเครื่องของคุณจะมีผล ข้อยกเว้นประการที่สองคือเครื่องที่ใช้งานร่วมกัน keymap ของคอนโซลมีผลทั้งระบบ ดังนั้นการตั้งค่า 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) แทนการเชื่อมั่นในการตั้งค่าเพียงอย่างเดียว หากมีการเข้ารหัส Disk ไว้ พรอมต์สำหรับป้อนรหัสผ่านจะทำงานจาก 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 สำหรับคีย์บอร์ดที่มีปุ่มพิเศษถัดจากปุ่ม 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 สามารถทำหน้าที่นี้ได้ในโหมดปกติ (normal mode) แต่อาจไม่ครอบคลุมถึงการกดร่วมกับปุ่ม Ctrl และอาจทำให้การตั้งค่าของปลั๊กอินสับสนได้

ต้องใช้เวลานานเท่าใดจึงจะพิมพ์ได้เร็วเท่าเดิม?

คาดการณ์ว่าต้องใช้เวลาเป็นสัปดาห์ไม่ใช่แค่วันเดียว เพราะนี่คือเรื่องของความจำกล้ามเนื้อ (motor memory) และวิธีเดียวที่จะพัฒนาได้คือการฝึกฝน บันทึกการฝึกฝนของผู้ใช้งานทั่วไปมักระบุว่าสัปดาห์แรกความเร็วจะต่ำกว่าครึ่งหนึ่งของความเร็วเดิม และจะกลับมาเท่าเดิมหลังจากใช้งานทุกวันเป็นเวลาหนึ่งถึงสามเดือน การสลับไปมาระหว่าง QWERTY และ Colemak ในแต่ละวันจะทำให้ใช้เวลานานขึ้น เพราะกล้ามเนื้อไม่สามารถจดจำรูปแบบใดรูปแบบหนึ่งได้อย่างถาวร

ทำไมคำสั่ง setxkbmap ถึงไม่มีผลบนเดสก์ท็อปของฉัน?

สาเหตุเกือบทั้งหมดเป็นเพราะเซสชันของคุณทำงานบน Wayland ภายใต้ Wayland ตัว compositor จะเป็นผู้ควบคุมคีย์แมปและส่งต่อไปยังแต่ละแอปพลิเคชัน ดังนั้น setxkbmap จึงไม่สามารถหาหน้าจอแสดงผลได้ หรืออาจเปลี่ยนได้เฉพาะ XWayland เท่านั้น ในขณะที่แอปพลิเคชันแบบ native จะเพิกเฉยต่อคำสั่งนี้ ให้ตั้งค่ารูปแบบแป้นพิมพ์ใน compositor แทน เช่น ผ่านคีย์ gsettings org.gnome.desktop.input-sources บน GNOME, การตั้งค่า xkb_variant ในไฟล์ config ของ sway หรือหน้า Layouts ใน System Settings ของ KDE Plasma