Memetakan ulang caps-lock untuk melarikan diri, dan menu untuk menulis, di konsol linux

9

Saat menjalankan XI gunakan .xmodmaprc untuk memetakan kembali kunci tertentu dengan demikian:

! Make it so that both Caps Lock and Escape do Escape
clear Lock
keysym Caps_Lock = Escape
! Remap the menu key as Compose
keysym Menu = Multi_key

Bagaimana saya bisa melakukan hal yang sama di konsol?

memperbarui

Selain solusi parsial yang diberikan dalam jawaban saya, saya telah belajar bahwa konsol memetakan CTRL- .ke Compose. Jadi saya mungkin bisa terbiasa dengan hal itu. Menyiapkan tombol Menu sebagai Compose tidak begitu mudah dilakukan, karena ada satu ton kode kunci yang ditetapkan nul dan tidak ada pesaing yang jelas untuk nama alternatif untuk Menu.

Saya juga menyadari bahwa binding binding sendiri jauh lebih terbatas daripada yang saya gunakan di bawah X, dan bahwa sebagian besar karakter khusus yang sering saya gunakan tidak ada. Mungkin ada utilitas yang akan menerjemahkan sintaks X-binding binding menjadi sesuatu yang loadkeysbisa dibaca?

intuisi
sumber
1
Secara tradisional: dengan loadkeys. Saya pikir saat ini Anda dapat membuat konsol Linux untuk membaca konfigurasi X, tetapi saya tidak tahu bagaimana ini bekerja.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

8

Anda harus mengedit keymap konsol Anda. Di konsol saya, saya telah memetakan Escape to Caps Lock dan Caps Lock to Escape. Begini cara kerjanya.

  1. Pertama, Anda perlu menemukan keymap Anda. Saya menggunakan tata letak AS standar. Di sistem saya, ini terletak di bawah /usr/share/keymaps/i386/qwerty/us.map.gz.
  2. Buat salinan file dengan nama baru, misalnya us-nocaps.map.gz.
  3. Buka kemasan file dan buka di editor teks: gunzip us-nocaps.map.gz && vim us-nocaps.map
  4. Ubah pemetaan dalam file sesuai keinginan Anda, misalnya saya punya keycode 58 = Caps_Lockyang saya ubah keycode 58 = Escape.
  5. Gzip file dan beban itu: gzip us-nocaps.map && loadkeys us-nocaps.

Satu hal lagi: Anda mungkin harus mengkonfigurasi distribusi Anda entah bagaimana untuk memastikan keymap baru selalu dimuat saat boot, jika tidak Anda harus memuat keymap Anda secara manual loadkeyssetiap saat. Cara Anda melakukannya tergantung pada distribusi apa yang Anda gunakan.

Cedric
sumber
1
Langkah gunzip sebenarnya tidak diperlukan di sini - dalam sebagian besar versi vimAnda hanya bisavim us-nocaps.map.gz
glittershark
3

Untuk distribusi Debian yang lebih baru, Anda tidak memerlukan semua ini lagi.

File keyboard menjelaskan properti keyboard. Itu dibaca oleh setupcon(1)untuk mengkonfigurasi keyboard pada konsol. Dalam sistem Debian tata letak keyboard default dijelaskan /etc/default/keyboarddan dibagi antara X dan konsol. (keyboard pria)

Di /etc/default/keyboardset XKBOPTIONS="caps:escape"dan kemudian lakukan:

~$ sudo setupcon

Deskripsi semua model, tata letak, varian, dan opsi /usr/share/X11/xkb/rules/xorg.lstkeyboard yang tersedia tersedia di . "(Keyboard manusia)

Ingo
sumber
1

Dengan bantuan dari Cedric, saya telah menemukan bahwa Ubuntu belum menginstal keymaps di mana $ man loadkeysdikatakan seharusnya ( /usr/share/keymaps). Ini adalah instalasi baru, jadi mungkin saya hanya perlu menginstal paket untuk mendapatkan keymap selain yang saya pilih saat instalasi.

Sebagai pengganti mengejar sudut itu, dan dalam upaya untuk membuat solusi sedikit lebih kuat dan nyaman, saya melakukan ini:

    $ sudo dumpkeys | sed 's/CtrlL_Lock/Escape/' | sudo loadkeys

Meskipun saya agak bingung mengapa sistem Cedric menggunakan Caps_Lockuntuk caps lock dan penggunaan saya CtrlL_Lock, itu bekerja terlepas.

intuisi
sumber
Itu menarik, saya tidak tahu ada perbedaan antara distribusi dengan keymaps itu. Secara pribadi saya menggunakan Gentoo, keymaps berasal dari paket sys-apps / kbd-1.15.
Cedric
2
Pada Ubuntu 10,04, keymaps ada dalam console-datapaket. Mereka tidak diinstal secara default. Anda dapat mengetahui paket apa yang menginstal file /usr/share/keymapsdengan menjalankan apt-file search /usr/share/keymaps.
Gilles 'SO- stop being evil'