Memetakan ulang Caps Lock dengan xmodmap tidak berfungsi

10

Ketika saya memprogram saya suka menukar kunci ini:

EscTab CtrlCapsLock

Di ~/.xmodmap, saya telah menentukan pemetaan ulang ini:

keycode 66 = Control_L
keycode 37 = Caps_Lock
keycode 23 = Escape
keycode 9 = Tab

The Escapedan Tabkunci swap, tidak ada masalah, tapi bukannya Caps_Lockdan Control_Lswapping, baik orang-orang kunci menjadi Caps_Lock.

Apa pun yang saya coba lakukan, tombol Kontrol tidak ditugaskan Caps_Lock(kode 66). Jika saya meninggalkan keycode 66 =, kuncinya tidak ditetapkan, tetapi ketika saya menetapkan Control_Latau Control_R, itu tidak berfungsi. Tetapi, jika saya menetapkan beberapa kunci lain, misalnya keycode 66 = Tab, itu ditugaskan, tidak ada masalah.

Seperti xmodmap, hanya tidak ingin Caps Lock dan tombol kontrol ditukar. Benar-benar membuat frustrasi. Bantuan / petunjuk apa pun akan sangat membantu.

PS: Saya menggunakan Archlinux.

Aby James
sumber

Jawaban:

8

The xmodmap (1) halaman manual memiliki contoh untuk persis ini

   !
   ! Swap Caps_Lock and Control_L
   !
   remove Lock = Caps_Lock
   remove Control = Control_L
   keysym Control_L = Caps_Lock
   keysym Caps_Lock = Control_L
   add Lock = Caps_Lock
   add Control = Control_L

tetapi jika Anda ingin selesai melakukannya dengan cara Anda mulai, saya pikir Anda perlu menambahkan setidaknya removedan addgaris

   remove Lock = Caps_Lock
   remove Control = Control_L
   keycode 37 = Caps_Lock
   keycode 66 = Control_L
   add Lock = Caps_Lock
   add Control = Control_L

Saya kira itulah masalahnya berdasarkan paragraf ini

   add MODIFIERNAME = KEYSYMNAME ...
           This adds all keys containing the given keysyms  to  the  indi‐
           cated  modifier  map.  The keysym names are evaluated after all
           input expressions are read to make it easy to write expressions
           to swap keys (see the EXAMPLES section).

yang membuatnya terdengar seperti perubahan pengubah (shift, control, dll.) tidak diterapkan sampai Anda menjalankannya juga.

(Dan secara logis sama dengan remove)

Mikel
sumber
Saya memang membaca halaman manual, dan menempatkan kembali tombol Caps_Lock dan Control_L mengikuti contoh. Tapi, saya penasaran mengapa pemetaan ulang kunci cara yang disebutkan dalam OP tidak bekerja. Apakah itu bug atau semacamnya?
Aby James
Sepertinya memang begitulah seharusnya bekerja. Lihat jawaban saya yang diperbarui.
Mikel
4

Jawaban yang terkait longgar: Saya ingin memetakan kembali kunci caps lock ke kontrol kiri, membiarkan kontrol kiri yang sebenarnya tidak tersentuh. Halaman manual xmodmap juga menawarkan solusi:

    keycode 66 = Control_L
    clear Lock
    add Control = Control_L
Clément B.
sumber