Cara Tukar Susun Atur Papan Kekunci Colemak di Linux
Ketahui cara menetapkan Colemak pada konsol Linux, X11, dan Wayland. Panduan ini menjelaskan mengapa pelayan SSH tidak perlukan tetapan ini serta kesan pada Vim dan pintasan Ctrl.
Lokasi susun atur Colemak pada Linux
Colemak pada Linux bukanlah satu tetapan sistem yang menyeluruh. Susun atur ini digunakan oleh apa sahaja yang membaca papan kekunci pada ketika itu, jadi ia terletak di salah satu daripada tiga tempat: konsol teks, pelayan X11, atau komposit Wayland anda. Jika anda menetapkannya di tempat yang salah, tiada apa yang akan berlaku.
Pilihan keempat melangkau sistem pengendalian sepenuhnya. Papan kekunci yang memetakan semula dalam perisian tegar (firmware) sendiri, seperti papan yang menjalankan QMK atau VIA, menghantar kod untuk huruf yang anda mahukan. Oleh itu, setiap mesin yang anda sambungkan akan menaip dalam Colemak tanpa sebarang konfigurasi, termasuk konsol pelayan dan mesin yang bukan milik anda. Kekurangannya ialah papan kekunci komputer riba anda masih menaip dalam QWERTY.
Bahagian selebihnya dalam panduan ini merangkumi tiga lapisan perisian tersebut, sebab mengapa pelayan jauh hampir tidak memerlukan mana-mana lapisan ini, serta kesan pertukaran ini terhadap Vim dan pintasan terminal anda.
Semak konfigurasi sedia ada pada sistem anda
Jalankan arahan ini sebelum membuat sebarang perubahan. Arahan ini akan memaparkan tetapan semasa dan senarai varian Colemak yang ditawarkan oleh pangkalan data papan kekunci X anda.
localectl status
setxkbmap -query
localectl list-x11-keymap-variants us | grep colemakArahan terakhir sepatutnya memaparkan colemak dan colemak_dh. Colemak telah disertakan dalam xkeyboard-config selama bertahun-tahun. Colemak-DH mula disertakan dalam versi 2.34, jadi hanya keluaran lama yang tidak mempunyainya. Setakat Ogos 2026, Ubuntu 24.04 dan Debian 13 kedua-duanya membekalkan versi yang lebih baharu daripada itu.
Jika setxkbmap -query melaporkan bahawa ia tidak dapat membuka paparan, anda sedang berada dalam sesi Wayland dan kompositur mengawal susun atur tersebut. Kes itu mempunyai bahagiannya sendiri di bawah.
Colemak atau Colemak-DH
Colemak mengalihkan tujuh belas kekunci daripada kedudukan QWERTY asalnya dan mengekalkan sepuluh kekunci, termasuk Z, X, C dan V, supaya pintasan untuk undo, cut, copy dan paste kekal di tempat yang dijangkakan oleh tangan kiri anda. Keserasian tersebut merupakan sebab utama susun atur ini direka sedemikian.
Colemak-DH ialah pengubahsuaian bagi Colemak. Ia menempatkan semula D, B dan G, serta menukar kedudukan H dengan M, kerana Colemak biasa memerlukan jari telunjuk diregangkan ke lajur tengah papan kekunci untuk menaip D dan H. Ubah suai rasmi ini mengekalkan setiap huruf pada jari yang sama seperti dalam Colemak, jadi pengguna Colemak yang beralih kepada DH hanya menghadapi perubahan kecil dan bukannya susun atur yang baharu. Varian XKB ialah colemak_dh, dengan colemak_dh_iso untuk papan kekunci yang mempunyai kekunci tambahan di sebelah shift kiri.
Jika anda beralih daripada QWERTY, kedua-duanya memerlukan usaha pembelajaran semula yang sama, jadi pilihlah berdasarkan keselesaan dan kekal dengan pilihan tersebut. Menukar susun atur buat kali kedua memerlukan usaha yang hampir sama dengan kali pertama, kerana perkara yang anda bina semula ialah memori motor yang terikat pada kedudukan kekunci. Jika persoalan utama anda masih lagi sama ada perlu meninggalkan QWERTY atau tidak, selesaikan perkara itu dengan perbandingan antara Colemak, Dvorak dan QWERTY sebelum anda menghabiskan masa sebulan untuk membina semula memori motor tersebut.
Menetapkan Colemak dalam X11 menggunakan setxkbmap dan localectl
setxkbmap us -variant colemak
setxkbmap -querysetxkbmap -query kini sepatutnya melaporkan variant: colemak, dan menaip dalam mana-mana tetingkap akan menghasilkan huruf Colemak. Perubahan ini kekal selagi sesi X berlangsung dan tidak menulis apa-apa ke cakera, menjadikannya cara yang selamat untuk mencuba susun atur tersebut selama satu jam.
Untuk mengekalkannya selepas but semula:
sudo localectl set-x11-keymap us pc105 colemak
localectl statusSusunan argumen ialah susun atur (layout), diikuti model, kemudian varian. localectl status kini sepatutnya menunjukkan X11 Layout: us dan X11 Variant: colemak. localectl juga menukarkan pilihan tersebut kepada keymap konsol yang paling hampir melainkan anda menambah --no-convert, jadi pada banyak sistem, arahan tunggal ini turut meliputi tty. Pada Debian dan Ubuntu, semak /etc/default/keyboard selepas itu, kerana fail tersebut adalah apa yang dibaca oleh console-setup semasa but.
Menetapkan Colemak pada Wayland
Sesi Wayland tidak mempunyai X server untuk dikonfigurasikan. Kompositor memuatkan peta kekunci dan menyerahkannya kepada setiap aplikasi, jadi susun atur adalah tetapan kompositor. Inilah sebabnya setxkbmap kelihatan tidak berfungsi di sana: ia sama ada gagal mencari paparan, atau ia hanya mengubah XWayland, dan aplikasi Wayland asli anda mengabaikannya.
Pada GNOME, tetapan tersebut merupakan kunci gsettings:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"Ia terpakai serta-merta, tanpa perlu log keluar. Rentetan us+colemak ialah susun atur dan varian yang digabungkan dengan tanda tambah.
Pada sway, letakkannya dalam ~/.config/sway/config:
input type:keyboard {
xkb_layout us
xkb_variant colemak_dh
}Muat semula dengan swaymsg reload. swaymsg -t get_inputs menyenaraikan setiap peranti input dengan susun atur yang digunakannya, iaitu pemeriksaan yang perlu dijalankan apabila hanya satu papan kekunci yang bermasalah.
Pada KDE Plasma, buka System Settings, kemudian Keyboard, kemudian Layouts, dan tambah English (US) dengan varian Colemak.
Menetapkan Colemak pada konsol teks
Konsol ialah tty teks biasa yang anda capai dengan Ctrl+Alt+F3, dan ia mengekalkan pemetaan kekuncinya sendiri. Tiada apa-apa yang anda tetapkan dalam X11 atau dalam compositor akan sampai ke sana, yang penting jika anda bekerja pada meja kerja terminal pada konsol maya kosong.
Pada Debian dan Ubuntu, sunting /etc/default/keyboard:
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT="colemak"
XKBOPTIONS=""Kemudian gunakannya:
sudo setupconTaip pada konsol untuk mengesahkan. console-setup menukarkan deskripsi XKB tersebut kepada pemetaan kekunci konsol dengan ckbcomp, jadi konsol dan X berkongsi satu deskripsi pada sistem ini.
Pada pengedaran yang menggunakan pemetaan kekunci kbd secara terus, minta nama tersebut dahulu:
localectl list-keymaps | grep -i -e colemak -e latin9
sudo localectl set-keymap en-latin9Pakej kbd membekalkan peta konsol Colemak sebagai i386/colemak/en-latin9, jadi nama yang anda berikan biasanya en-latin9 dan bukan colemak. Berikan nama yang muncul dalam senarai, kerana nama yang tidak wujud akan ditolak.
sudo loadkeys en-latin9 menukar konsol semasa dengan serta-merta, dan sudo loadkeys us mengembalikannya semula. Anggap loadkeys sebagai ujian dan bukannya konfigurasi: ia kekal sehingga but semula, dan pada Debian dan Ubuntu, pelaksanaan setupcon semasa but akan memulihkan apa sahaja yang dinyatakan oleh /etc/default/keyboard.
Adakah VPS tanpa kepala (headless) memerlukan susun atur Colemak?
Hampir tidak perlu, dan sebabnya penting untuk difahami. SSH membawa aksara, bukan kedudukan kekunci. Emulator terminal anda menerima tekanan kekunci, susun atur tempatan anda menukarkannya kepada aksara, dan hanya aksara itu yang dihantar melalui sambungan. Pelayan menerima n tanpa cara untuk mengetahui kekunci fizikal mana yang menghasilkannya. Jadi, susun atur yang anda tetapkan pada komputer riba anda mengikut anda ke dalam setiap sesi SSH, ke dalam tmux, dan ke dalam setiap editor yang anda jalankan secara jauh, dan mesin jauh tidak memerlukan konfigurasi papan kekunci langsung.
Ingat perkara ini sebelum anda mula menyunting fail papan kekunci pada mesin pengeluaran. Jika anda mengurus sekumpulan pelayan Linux, susun atur tersebut adalah milik mesin di hadapan anda dan bukan milik kumpulan pelayan, jadi ia tidak perlu dimasukkan dalam penyediaan (provisioning) anda. Sepuluh minit pertama pada VPS baharu mengandungi kerja yang lebih berguna daripada ini.
Dua pengecualian perlu dirancang. Pertama ialah konsol yang disambungkan terus ke mesin tersebut. Konsol pelayar dalam panel pembekal biasanya dipersembahkan kepada mesin maya sebagai papan kekunci, jadi tekanan kekunci tiba sebagai scancode dan peta kekunci konsol pelayan itu sendiri menentukan aksara yang muncul. Itu adalah satu-satunya tempat di mana susun atur yang ditetapkan pada pelayan akan berkesan, dan ia juga merupakan laluan penyelamat anda apabila SSH berhenti berfungsi, jadi peta kekunci konsol yang tidak lengkap di situ merupakan risiko sebenar.
Konsol bersiri berkelakuan berbeza kerana ia membawa aksara dan susun atur tempatan anda yang digunakan. Pengecualian kedua ialah mesin yang dikongsi. Peta kekunci konsol adalah untuk seluruh sistem, jadi menetapkan Colemak pada mesin yang orang lain log masuk akan mengubahnya untuk mereka juga, dan mereka tidak akan tahu puncanya.
Apa yang berlaku kepada kekunci hjkl dalam Vim
Dalam susun atur Colemak, h tidak menggerakkan kursor. Tiga kekunci yang lain berfungsi seperti biasa. j terletak di bawah kekunci Y pada papan kekunci QWERTY, k di bawah kekunci N, dan l di bawah kekunci U. Akibatnya, kekunci kursor tersebar merentasi tiga baris dan tidak lagi terletak di bawah empat jari anda.
Terdapat dua penyelesaian yang boleh digunakan, dan kedua-duanya mempunyai pengguna tetap.
Kekalkan tetapan lalai dan pelajari semula kedudukannya. Tiada apa-apa dalam persediaan anda yang akan terjejas, setiap pemalam akan terus berfungsi, dan setiap tip Vim yang ditulis oleh orang lain masih terpakai kepada anda tepat seperti yang dinyatakan.
Atau, buat pemetaan semula (remap) empat kekunci yang terletak di bawah tangan kanan anda ke kedudukan hjkl yang asal. Dalam Colemak, kekunci tersebut menghasilkan h, n, e, dan i. Dalam Colemak-DH, empat kekunci fizikal yang sama menghasilkan m, n, e, dan i, kerana DH telah menukar kedudukan H dengan M.
noremap n j
noremap e k
noremap i l
noremap l i
noremap k nn kini menggerakkan kursor ke bawah, e ke atas, i ke kanan, dan h sememangnya sudah berada di kiri. Dua baris terakhir mengembalikan arahan yang telah anda alihkan: l memulakan mod sisipan (insert mode), dan k mengulangi carian terakhir. Lakukan perkara yang sama untuk huruf besar, jika tidak, gabungan Shift dan kekunci kursor akan memberikan hasil yang tidak dijangka.
Pilihan langmap dalam Vim melakukan tugas yang serupa dengan baris kod yang lebih sedikit:
set langmap=nj,ek,il,li,knSetiap pasangan dibaca sebagai aksara yang anda taip diikuti oleh aksara yang perlu diproses oleh Vim. Ia hanya terpakai pada mod normal, jadi mod sisipan masih menaip teks Colemak seperti biasa. Dua had telah didokumenkan dalam bantuan Vim sendiri: langmap tidak terpakai pada gabungan Ctrl atau Alt, dan pemetaan pemalam yang ditulis berdasarkan kekunci lalai mungkin berkelakuan ganjil di bawah pilihan ini.
Walau apa pun pilihan anda, buat keputusan sekali sahaja. Pemetaan semula yang anda tinggalkan selepas sebulan akan merugikan anda selama sebulan lagi.
Apa yang berlaku kepada pintasan terminal
Kod kawalan terminal datang daripada aksara, bukan daripada kekunci fizikal, jadi setiap pintasan Ctrl bergerak mengikut susun atur. Ctrl+C, Ctrl+Z, Ctrl+X dan Ctrl+V mengekalkan kedudukan masing-masing, kerana Colemak sengaja membiarkan Z, X, C dan V di tempat yang sama seperti pada QWERTY.
Empat pintasan yang anda gunakan setiap hari memang berubah kedudukan. Ctrl+D, yang menamatkan input, kini berada di tempat G pada QWERTY. Ctrl+R, carian sejarah, berada di tempat S pada QWERTY. Ctrl+E, hujung baris, berada di tempat K pada QWERTY. Ctrl+U, yang mengosongkan baris, berada di tempat I pada QWERTY.
tmux mengekalkan awalan (prefix) lalainya, kerana B tidak berubah dalam Colemak. Pada Colemak-DH, B berpindah ke baris atas dan awalan tersebut turut berpindah bersamanya, yang merupakan perkara pertama yang akan anda sedari jika anda mengekalkan sesi tmux yang berjalan lama pada VPS. Menetapkan semula awalan kepada kekunci yang anda suka hanyalah perubahan satu baris, dan ia lebih mudah daripada melatih semula refleks yang sama sebanyak dua kali.
Pintasan desktop mengikut peraturan yang sama. Ikatan (binding) pada Super+E bergerak mengikut susun atur, kerana ia ditentukan oleh aksara. Ikatan pada Super+F1 kekal di tempatnya, kerana kekunci fungsi tidak dipetakan semula oleh susun atur.
Berapa lama masa yang diambil untuk bertukar
Tiada sesiapa boleh memberikan angka tepat untuk kemahiran tangan anda. Menaip sentuh adalah memori motor. Anda bukan sedang mempelajari kedudukan huruf, sebaliknya anda sedang membina semula refleks yang menukarkan perkataan kepada urutan jari. Oleh itu, satu-satunya input yang membantu ialah masa yang diluangkan untuk menaip.
Apa yang dilaporkan oleh pengguna, dan ini adalah log latihan kendiri dan bukannya ukuran terkawal, ialah kelajuan pada minggu pertama jauh lebih rendah daripada separuh kelajuan asal mereka, dan kembali kepada kelajuan asal dalam tempoh antara satu hingga tiga bulan penggunaan harian. Perbezaan antara individu adalah besar, jadi anggap angka tersebut sebagai gambaran kasar dan bukannya jadual tetap.
Dua tabiat menjadikan proses ini lebih perlahan. Bertukar-tukar antara QWERTY dan Colemak sepanjang hari menyebabkan kedua-dua refleks menjadi lemah. Oleh itu, kebanyakan orang yang berjaya melakukan pertukaran ini akan komited sepenuhnya pada mesin utama mereka. Memulakan proses ini semasa minggu yang sibuk bermakna anda terpaksa menaip dengan buruk di bawah tekanan masa, yang melatih anda untuk melihat papan kekunci.
Sediakan jalan kembali sebelum anda memerlukannya, kerana saat anda mahukan QWERTY semula adalah saat sesuatu perkara rosak dan seseorang sedang menunggu.
Cara menukar kembali ke QWERTY dengan pantas
Dalam X11, setxkbmap us memulihkan QWERTY dengan serta-merta. Pada konsol, sudo loadkeys us melakukan perkara yang sama. Untuk membatalkan tetapan kekal, jalankan sudo localectl set-x11-keymap us.
Togol adalah lebih baik daripada arahan yang perlu anda taip dalam susun atur yang anda belum boleh taip:
setxkbmap -layout us,us -variant colemak, -option grp:win_space_toggleIni memuatkan Colemak sebagai susun atur pertama dan US biasa sebagai yang kedua, dan Super+Space akan bertukar antara keduanya. Koma di hujung dalam colemak, bukanlah kesilapan taip: ia memberikan varian colemak kepada susun atur pertama dan tiada varian kepada susun atur kedua. Pada GNOME, tambah kedua-dua sumber input dalam Settings, di mana Super+Space sudah pun menukarnya.
Dua gesaan kata laluan berada di luar sesi desktop anda dan memerlukan perhatian berasingan. Penyambut log masuk bermula sebelum tetapan sesi anda digunakan, jadi ujinya dengan log keluar dan bukannya mempercayai tetapan tersebut. Jika cakera disulitkan, gesaan frasa laluan dijalankan daripada initramfs, yang membawa salinan keymapnya sendiri. Pada Debian dan Ubuntu, bina semula dengan sudo update-initramfs -u selepas anda menukar /etc/default/keyboard, kemudian but semula sekali untuk menguji semasa anda masih mempunyai cara lain untuk masuk ke dalam mesin tersebut.
Bolehkah saya mengekalkan satu program pada QWERTY?
Susun atur (layout) digunakan sebelum aplikasi menerima kekunci tersebut. X server atau compositor menukar scancode kepada aksara dan menyerahkan aksara tersebut, jadi aplikasi tidak boleh meminta susun atur yang berbeza. Ia hanya boleh memetakan semula apa yang diterima. Itulah sebabnya pembetulan Vim terletak dalam konfigurasi Vim, dan mengapa tiada penukar susun atur umum bagi setiap tetingkap yang boleh digunakan.
Dua pendekatan boleh dilakukan. Pertama adalah mengikut peranti. Jika penaipan QWERTY dilakukan pada papan kekunci yang berasingan, tetapkan susun atur pada peranti tersebut dan bukannya pada sistem:
xinput list
setxkbmap -device 12 -layout usAmbil id daripada xinput list, dan sahkan dengan menaip pada setiap papan kekunci secara bergilir-gilir. sway menerima tetapan yang sama bagi setiap pengecam input daripada swaymsg -t get_inputs, dan pemilih yang lebih khusus akan mengatasi type:keyboard.
Pendekatan kedua adalah dengan melakukan pemetaan semula di dalam aplikasi, seperti yang dilakukan oleh langmap dalam Vim. Permainan hampir selalu mempunyai skrin ikatan kekunci (key binding), dan menetapkan semula kekunci pergerakan di sana mengambil masa yang lebih singkat daripada melawan susun atur dari luar. Bagi apa-apa yang tidak mempunyai kedua-duanya, ikat (bind) penukar susun atur di atas dan tekan ia sebelum anda melancarkan aplikasi tersebut.
FAQ
Adakah saya perlu menetapkan Colemak pada VPS saya?
Tidak, jika anda mengaksesnya melalui SSH. SSH membawa aksara, jadi susun atur anda diselesaikan pada komputer riba anda sebelum sebarang data dihantar, dan pelayan menerima bait yang sama seperti yang diterima daripada pengguna papan kekunci QWERTY. Pengecualiannya ialah konsol pelayar dalam panel pembekal anda, yang bersambung ke mesin maya sebagai papan kekunci dan menggunakan peta kekunci konsol pelayan itu sendiri. Konsol tersebut ialah laluan pemulihan anda apabila SSH gagal, jadi ubah tetapan tersebut hanya jika anda pasti, dan ujinya semasa SSH masih berfungsi.
Patutkah saya mempelajari Colemak atau Colemak-DH?
Kedua-duanya memerlukan usaha pembelajaran semula yang sama daripada QWERTY, jadi pilihlah berdasarkan keselesaan dan bukannya kos migrasi. Colemak-DH menempatkan semula D, B dan G serta menukar H dengan M, kerana Colemak biasa menaip D dan H dengan regangan jari telunjuk ke lajur tengah. Nama varian XKB ialah colemak dan colemak_dh, dengan colemak_dh_iso untuk papan kekunci yang mempunyai kekunci tambahan di sebelah shift kiri. Jalankan localectl list-x11-keymap-variants us | grep colemak untuk melihat varian yang ditawarkan oleh sistem anda.
Apakah yang berlaku kepada kekunci hjkl Vim pada Colemak?
h kekal di tempatnya. j beralih ke bawah Y pada QWERTY, k ke bawah N pada QWERTY, dan l ke bawah U pada QWERTY, jadi kekunci kursor tersebar merentasi tiga baris. Anda boleh mempelajari semula kedudukan baharunya, yang mengekalkan kesahihan setiap pemalam dan tutorial, atau memetakan semula empat kekunci di bawah tangan kanan anda: h, n, e dan i pada Colemak, serta m, n, e dan i pada Colemak-DH. Pilihan langmap dalam Vim melakukan tugas yang sama untuk mod normal, walaupun ia tidak terpakai pada kombinasi Ctrl dan boleh mengelirukan pemetaan pemalam.
Berapa lama masa yang diambil untuk menaip pada kelajuan lama saya semula?
Jangkakan dalam tempoh minggu dan bukannya hari, kerana ini melibatkan memori motor dan satu-satunya input ialah latihan. Log latihan yang dilaporkan sendiri biasanya menggambarkan minggu pertama dengan kelajuan jauh di bawah separuh kelajuan lama dan kembali ke tahap asal selepas satu hingga tiga bulan penggunaan harian. Bertukar antara QWERTY dan Colemak setiap hari akan melambatkan proses ini, kerana tiada refleks yang sempat sebati.
Mengapa setxkbmap tidak memberikan sebarang kesan pada desktop saya?
Hampir pasti kerana sesi tersebut menggunakan Wayland. Di bawah Wayland, kompositur memiliki peta kekunci dan menolaknya ke setiap aplikasi, jadi setxkbmap sama ada tidak dapat mencari paparan atau hanya mengubah XWayland sahaja, manakala aplikasi natif mengabaikannya. Tetapkan susun atur dalam kompositur sebaliknya: kunci gsettings org.gnome.desktop.input-sources pada GNOME, xkb_variant dalam konfigurasi sway, atau halaman Layouts dalam System Settings KDE Plasma.