Ubah caps-lock untuk mengontrol konsol virtual di Ubuntu 17

10

Saya ingin mengubah perilaku Caps Lock di terminal virtual (mis. Tty CtrlAltF3) sehingga berfungsi sebagai pengubah Kontrol. Idealnya, saya juga ingin bertindak sebagai Escape ketika ditekan sendirian, tetapi hanya mendapatkan perilaku Kontrol terbukti sulit.

Saya menjalankan Ubuntu 17.04. Saya telah membaca dan mencoba berbagai pendekatan untuk melakukan perubahan ini, tetapi tampaknya tidak ada yang berlaku untuk sistem saya seperti yang dijelaskan. Saya mendapatkan pengertian bahwa systemd berperan dalam hal ini, tetapi rinciannya tidak jelas.

Saya telah menulis file caps_control.kmap,, yang memetakan batas untuk mengontrol,

keymaps 0-255
keycode  58 = Control

Jika saya menjalankan loadkeys caps_control.kmapdari konsol virtual, itu berfungsi. Sekarang saya ingin memuatnya secara otomatis saat boot / login / apa pun ...

Saya menemukan referensi untuk menggunakan /etc/rc.localuntuk melakukannya, tetapi sistem saya tidak memiliki file seperti itu, meskipun tidak memiliki beberapa direktori seperti /etc/rc0.d/, /etc/rc1.d/...

Kedengarannya seperti sejak Ubuntu 17 menggunakan sytemd, saya harus menggunakan localectluntuk mengelola hal semacam ini, tetapi tidak jelas bagi saya bagaimana melakukannya. Sebagai contoh,

$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
$ localectl list-keymaps
Couldn't find any console keymaps.

Halaman manual untuk localectlmenyebutkan /etc/locale.confdan /etc/vconsole.conf, tidak ada yang ada di sistem saya.

Saya benar-benar bingung. Adakah yang bisa mengarahkan saya ke arah yang benar?

ivan
sumber
Apakah Anda perlu perubahan ini agar aktif untuk semua pengguna atau hanya Anda sendiri?
acer
@ Eacer Either way akan cocok untuk saya, karena saya benar-benar satu-satunya pengguna di mesin ini.
ivan
Hmm ... Anda menambahkan baris di ~ /. Profil dengan loadkeys caps_control.kmapyang akan dieksekusi ketika Anda masuk.
acer
@ Pelacakan Panggilan loadkeysdari ~ / .profile sepertinya bermasalah. Ketika saya masuk saya mendapatkan pesan kesalahan yang mengatakan "Tidak bisa mendapatkan deskriptor file yang merujuk ke konsol".
ivan

Jawaban:

11

Untuk mengubah Caps Lock menjadi pengubah Ctrl tambahan, yang juga efektif di tty console, terbuka /etc/default/keyboarduntuk pengeditan dan atur:

XKBOPTIONS=ctrl:nocaps

Jika Anda telah XKBOPTIONSmenetapkan, tambahkan ctrl:nocapske nilai yang ada menggunakan koma untuk pemisah, misalnya:

XKBOPTIONS="terminate:ctrl_alt_bksp,ctrl:nocaps"

Seharusnya efektif setelah reboot berikutnya atau mengeluarkan setupconperintah.

Opsi harus ada saat menjalankan localectl status:

$ localectl status | grep caps
     X11 Options: ctrl:nocaps

Dan di sesi X, cara lain untuk memverifikasi bahwa pengaturannya adalah:

$ gsettings get org.gnome.desktop.input-sources xkb-options
['ctrl:nocaps']
Gunnar Hjalmarsson
sumber
1
opsi XKB lainnya adalah "ctrl:nocaps". di X perbedaannya halus: dengan ctrlopsi, xevdan alat-alat lain akan melihat Control_Lsimbol ketika tombol CapsLock ditekan, sementara capsopsi masih akan menampilkan tombol Caps_Lock. Saya tidak yakin apakah perbedaan itu akan diterjemahkan keymap konsol virtual.
quixotic
@quixotic: Terima kasih telah menyebutkan ctrl:nocaps. Saya menambahkannya ke jawaban saya.
Gunnar Hjalmarsson
Adakah ide mengapa ini tidak berhasil untuk saya? Ini sebenarnya salah satu hal pertama yang saya coba, dan saya suka pendekatannya. Sayangnya, itu tidak berpengaruh pada sistem saya.
ivan
1
@ van: Saya baru saja menguji diri saya sendiri, dan menemukan bahwa saran pertama saya ( caps:ctrl_modifier) tidak efektif dalam tty. Namun, bagi saya (pada 17.10) ctrl:nocapsadalah. Silakan lihat jawaban saya yang diedit.
Gunnar Hjalmarsson
1
@ GunnarHjalmarsson Saya tidak terlalu terbiasa dengan metode debian / ubuntu untuk menerjemahkan peta XKB ke peta konsol (ini melibatkan ckbcomp, saya pikir?). Saya tidak ingat caps:ctrl_modifieropsi yang pertama kali Anda sebutkan, jadi mencarinya untuk membandingkan dengan yang ctrl:nocapsbiasa saya gunakan, dan berpikir perbedaannya mungkin layak disebutkan di sini. senang itu membantu.
quixotic