Jawaban:
Alat untuk memanipulasi tata letak keyboard pada konsol virtual adalah loadkeys, dumpkeysdan showkey. Baca halaman manual mereka dan beri tahu diri Anda tentang seluk-beluk mereka.
Perhatikan bahwa alat ini hanya bekerja di konsol virtual, bukan di emulator terminal di lingkungan grafis seperti gnome. Pelajari perbedaannya, baca pertanyaan dan jawaban ini: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal .
Berikut ini panduan singkat untuk melakukan apa yang Anda inginkan:
Simpan tata letak keyboard Anda saat ini:
$ dumpkeys > backup.kmap
Jika terjadi kesalahan, Anda mungkin dapat memulihkan keymap menggunakan perintah:
$ sudo loadkeys backup.kmap
Jika keyboard sangat kacau sehingga Anda bahkan tidak bisa melakukan ini, maka satu-satunya pilihan Anda yang tidak melibatkan sulap kernel kuno adalah reboot.
Periksa kode kunci mana yang ditetapkan untuk kunci Anda:
$ showkey
Sekarang tekan tombol ESC dan tombol CAPSLOCK. Kode kunci harus muncul di layar. Perhatikan kode kunci. Pada sistem saya ESC memiliki kode kunci 1 dan CAPSLOCK memiliki kode kunci 58. showkeyakan berakhir setelah 10 detik tidak aktif (setidaknya itu terjadi di ubuntu 10,04 saya).
Perhatikan nama kunci ESC dan CAPSLOCK dari dumpkeys:
$ dumpkeys | grep 1
...
keycode 1 = Escape
...
$ dumpkeys | grep 58
...
keycode 58 = CtrlL_Lock
...
Perhatikan baris keymap dari dumpkeys:
$ dumpkeys | head -1
keymaps 0-127
Buat file keymap yang mengaktifkan ESC dan CAPSLOCK:
keymaps 0-127
keycode 1 = CtrlL_Lock
keycode 58 = Escape
Muat keymap:
$ sudo loadkeys swap_esc_capslock.kmap
Uji: Menguji kunci CAPSLOCK sudah jelas. Cukup tekan tombol CAPSLOCK mereka dan periksa apakah kunci lain keluar huruf besar. Untuk menguji kunci ESC Anda dapat menggunakan CTRL + V diikuti oleh ESC. Itu harus dicetak ^[. CTRL + V membuat shell mencetak kunci berikutnya kata demi kata alih-alih menafsirkannya.
Untuk mendapatkan modifikasi ini pada setiap reboot, tulis baris berikut di /etc/rc.localfile Anda :
/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap
Informasi dikumpulkan dari berbagai halaman, termasuk, tetapi tidak terbatas pada:
/usr/bin/loadkeysdalam /etc/rc.localkarena variabel lingkungan jalan tidak dijamin akan ditetapkan pada tahap ini. Dan sudotidak diperlukan di rc.local.
rc.localdijalankan setiap kali sistem melakukan boot. @ bukzor ini sudo setupconadalah tidak di rc.local, itu adalah satu kali perintah setup, yang menggantikan keymap sistem default, tanpa menambahkan kode runtime startup. Menambahkan loadkeys untuk rc.local, menambah ekstra start up kode dan duplikat apa yang sudah dilakukan oleh loadkeys sistem default. The rc.localMetode benar-benar bisa kurang aman karena tergantung pada jalur non-standar untuk keymap tersebut.
setupconmetodenya. Tambahkan jawaban Anda sendiri atau edit jawaban saya jika Anda mau.
setupcon. Tampaknya Agustus membuat asumsi bahwa sudo setupcon --saveakan masuk ke rc.localmana saya tidak berpikir itu benar, tetapi jika ya, Anda tidak perlu sudomasuk rc.local. Saya pikir kami perlu info lebih lanjut sebelum memperbarui jawaban Anda. Pertanyaan utamanya adalah "Bagaimana cara menginstal keymap yang dimodifikasi sehingga dapat dimuat secara otomatis selama proses booting?" Saya benar-benar tidak tahu mana cara yang lebih baik, rc.localatau menginstal keymap, atau bahkan jika menginstal keymap akan berhasil. Saya telah meneliti ini akhir-akhir ini dan saya akan memeriksanya kembali di sini.
Gunakan 'ctrl: nocaps' bukan 'ctrl: swapcaps' jika Anda hanya ingin memiliki dua tombol capslocks (capslock dengan nama lain masih sangat tidak berguna).
X11: (lihat juga /usr/share/X11/xkb/rules/base.lst:)
sudo vim /etc/default/keyboard
XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
sudo restart lightdm
Konsol teks: (dicuri dari setupcon)
#!/bin/sh
. /etc/default/console-setup
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
"$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
| gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
sudo setupcon --saveuntuk membuat perubahan permanen, daripada mengedit rc.local. Itu pada dasarnya sama dengandumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz