Cara Tukar Susun Atur Papan Kekunci Colemak di Linux
Ketahui cara menetapkan Colemak pada konsol Linux, X11, dan Wayland. Panduan ini menjelaskan kesan terhadap pintasan Vim hjkl serta mengapa pelayan SSH tidak memerlukannya.
Lokasi susun atur Colemak pada Linux
Colemak pada Linux bukanlah satu tetapan sistem tunggal. Susun atur ini digunakan oleh mana-mana perisian 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 adalah dengan melangkau sistem pengendalian sepenuhnya. Papan kekunci yang memetakan semula dalam perisian tegar (firmware) sendiri, seperti papan kekunci yang menjalankan QMK atau VIA, akan 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 panduan yang seterusnya 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 apa yang sudah ada pada sistem anda
Jalankan arahan ini sebelum anda mengubah apa-apa. Ia 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 tersedia 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 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 dan mengekalkan sepuluh kekunci asal, termasuk Z, X, C dan V, supaya pintasan untuk buat asal (undo), potong (cut), salin (copy) dan tampal (paste) kekal di tempat yang dijangkakan oleh tangan kiri anda. Keserasian tersebut merupakan sebab utama susun atur ini direka sedemikian rupa.
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 ke 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 proses 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.
Menetapkan Colemak dalam X11 dengan 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 statusUrutan argumen ialah susun atur, kemudian 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 kecuali 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 natif anda mengabaikannya.
Pada GNOME, tetapan tersebut adalah 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 semakan 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 peta kekuncinya sendiri. Tiada apa-apa yang anda tetapkan dalam X11 atau dalam komposit mencapai konsol ini, 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 peta kekunci konsol dengan ckbcomp, jadi konsol dan X berkongsi satu deskripsi pada sistem ini.
Pada pengedaran yang menggunakan peta 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, arahan setupcon semasa but akan memulihkan apa sahaja yang dinyatakan oleh /etc/default/keyboard.
Adakah VPS tanpa kepala (headless) memerlukan susun atur Colemak?
Hampir tidak pernah, dan sebabnya perlu difahami. SSH membawa aksara, bukan kedudukan kekunci. Emulator terminal anda menerima tekanan kekunci, susun atur tempatan anda menukarkannya menjadi 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 dari jauh, dan mesin jauh tidak memerlukan konfigurasi papan kekunci langsung.
Ingat perkara ini sebelum anda mula menyunting fail papan kekunci pada kotak pengeluaran. Jika anda mengurus sekumpulan pelayan Linux, susun atur itu adalah milik mesin di hadapan anda dan bukan milik kumpulan pelayan tersebut, jadi ia tidak perlu ada dalam peruntukan (provisioning) anda. Sepuluh minit pertama pada VPS baharu mengandungi kerja yang lebih berguna daripada ini.
Dua pengecualian perlu dirancang. Yang pertama ialah konsol yang disambungkan terus ke mesin tersebut. Konsol pelayar dalam panel pembekal biasanya mempersembahkan dirinya 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 berkuat kuasa, dan ia juga merupakan laluan penyelamat anda apabila SSH berhenti berfungsi, jadi peta kekunci konsol yang tidak lengkap di sana merupakan risiko sebenar.
Konsol bersiri berkelakuan berbeza, kerana ia membawa aksara dan susun atur tempatan anda yang diguna pakai. Pengecualian kedua ialah mesin yang dikongsi. Peta kekunci konsol adalah untuk seluruh sistem, jadi menetapkan Colemak pada kotak yang orang lain log masuk akan mengubahnya untuk mereka juga, dan mereka tidak akan meneka sebabnya.
Apa yang berlaku kepada kekunci hjkl Vim
Pada Colemak, h tidak bergerak. Tiga yang lain berfungsi. j terletak di bawah Y pada QWERTY, k terletak di bawah N pada QWERTY, dan l terletak di bawah U pada QWERTY, jadi kekunci kursor tersebar merentasi tiga baris dan bukannya terletak di bawah empat jari.
Terdapat dua jawapan yang boleh digunakan, dan kedua-duanya mempunyai pengguna sebenar.
Kekalkan tetapan lalai dan pelajari semula kedudukannya. Tiada apa-apa lagi dalam persediaan anda yang akan rosak, setiap pemalam terus berfungsi, dan setiap petua Vim yang ditulis oleh orang lain masih terpakai kepada anda tepat seperti yang ditulis.
Atau buat pemetaan semula (remap) empat kekunci yang terletak di bawah tangan kanan anda di tempat hjkl berada sebelum ini. Pada Colemak, kekunci tersebut memberikan h, n, e dan i. Pada Colemak-DH, empat kekunci fizikal yang sama memberikan m, n, e dan i, kerana DH menukar H dengan M.
noremap n j
noremap e k
noremap i l
noremap l i
noremap k nn kini bergerak ke bawah, e bergerak ke atas, i bergerak ke kanan, dan h sememangnya sudah berada di kiri. Dua baris terakhir mengembalikan perintah yang anda alihkan: l memulakan mod sisipan (insert mode), dan k mengulangi carian terakhir. Berikan layanan yang sama kepada huruf besar, atau Shift ditambah kekunci kursor akan mengejutkan anda.
Pilihan langmap dalam Vim melakukan tugas yang serupa dalam baris yang lebih sedikit:
set langmap=nj,ek,il,li,knSetiap pasangan dibaca sebagai aksara yang anda taip diikuti dengan aksara yang sepatutnya ditindaklanjuti oleh Vim. Ia hanya terpakai pada mod normal, jadi mod sisipan masih menaip teks Colemak seperti biasa. Dua had didokumenkan dalam bantuan Vim sendiri: langmap tidak terpakai pada kombinasi Ctrl atau Alt, dan pemetaan pemalam yang ditulis berdasarkan kekunci lalai boleh berkelakuan pelik di bawahnya.
Walau apa pun yang anda pilih, pilih sekali sahaja. Pemetaan semula yang anda tinggalkan selepas sebulan akan merugikan anda 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 kedudukannya, kerana Colemak sengaja mengekalkan Z, X, C dan V di tempat yang sama seperti pada QWERTY.
Empat pintasan yang anda gunakan setiap hari memang berpindah. 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 lalainya, kerana B tidak berpindah 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 pada Super+E berpindah mengikut susun atur, kerana ia ditakrifkan oleh aksara. Ikatan pada Super+F1 kekal di tempatnya, kerana kekunci fungsi tidak dipetakan semula oleh susun atur tersebut.
Berapa lama masa yang diambil untuk bertukar
Tiada sesiapa boleh memberikan angka tepat untuk kemahiran tangan anda. Menaip sentuh (touch typing) 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 merupakan log latihan kendiri dan bukannya pengukuran terkawal, ialah kelajuan pada minggu pertama adalah jauh di bawah separuh daripada kelajuan asal mereka. Kelajuan asal biasanya kembali 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 akan melemahkan kedua-dua refleks tersebut. Oleh itu, kebanyakan orang yang berjaya melakukan pertukaran ini akan komited sepenuhnya pada mesin utama mereka. Memulakan latihan semasa minggu yang sibuk bermakna anda terpaksa menaip dengan teruk di bawah tekanan masa, yang melatih anda untuk melihat papan kekunci.
Sediakan cara untuk kembali ke tetapan asal sebelum anda memerlukannya. Ini kerana saat anda mahukan QWERTY semula adalah saat sesuatu perkara rosak dan ada orang yang sedang menunggu.
Cara untuk kembali ke QWERTY dengan pantas
Dalam X11, setxkbmap us memulihkan QWERTY 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 wujud 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 berjalan 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 input kekunci. Pelayan X atau compositor menukar scancode kepada aksara dan menyerahkan aksara tersebut, jadi aplikasi tidak boleh meminta susun atur yang berbeza. Aplikasi hanya boleh memetakan semula apa yang diterimanya. Itulah sebabnya pembetulan Vim terletak dalam konfigurasi Vim, dan tiada penukar susun atur umum bagi setiap tetingkap yang boleh digunakan.
Dua pendekatan boleh dilakukan. Pendekatan 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 memetakan semula kekunci pergerakan di situ mengambil masa yang lebih singkat berbanding melawan susun atur dari luar. Bagi aplikasi 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 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 penyelamat anda apabila SSH gagal, jadi ubah tetapan itu 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 tempat asalnya. j beralih ke bawah Y pada QWERTY, k di bawah N pada QWERTY, dan l di bawah U pada QWERTY, jadi kekunci kursor tersebar merentasi tiga baris. Anda boleh mempelajari semula kedudukan baharunya, yang mengekalkan keserasian 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 asal saya semula?
Jangkakan dalam tempoh beberapa 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 daripada kelajuan asal, dan kembali ke kelajuan asal selepas satu hingga tiga bulan penggunaan harian. Bertukar antara QWERTY dan Colemak setiap hari akan melambatkan proses ini, kerana tiada refleks yang dapat disepadukan sepenuhnya.
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.