GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Mencegah Efek Toggle Caps-lock, Tanpa Memetakan Ulang Atau Menonaktifkannya?

Saya memiliki program X11 yang mengambil caps-lock, dan menggunakannya. Masalahnya adalah, saya ingin menonaktifkan tombol caps-lock biasa, tetapi melakukannya sepertinya menonaktifkan kuncinya.

Jadi, apa pun yang didapat X11 untuk penekanan tombol caps-lock, ia harus tetap mendapatkan (tanpa menonaktifkan kunci, atau memetakannya kembali ke beberapa kunci lain), tetapi tanpa apa pun menerjemahkan penekanan tombol menjadi caps-toggle (yang mungkin berada di level kernel? ).

Saya mencoba mengubah kode pindaian, tetapi ini hanya memetakan ulang kuncinya.
Saya telah menghapus entri capslock dengan xmodmap juga, tetapi ini juga menonaktifkan batas.

Bagaimana saya bisa memberi tahu kernel untuk mengabaikan caps-key (dengan fungsi regulernya), tetapi tetap meneruskan pesan ke X?

Hanya untuk menambahkan sedikit lebih detail:

'Program' yang saya coba jalankan adalah 'enso' yang dimanusiakan.
Ketika tidak ada kunci, saya mendapatkan kesalahan "CRITICAL:root:Couldn't find quasimode key". Ketika tidak ada kesalahan, saya dapat menggunakan enso dengan huruf besar, tetapi sejauh ini belum menemukan cara menonaktifkan fungsi huruf besar sementara enso masih bisa melakukannya.

Jawaban yang Diterima:

Saya rasa saya memiliki teknik untuk menonaktifkan toggling Capslock tombol tetapi tidak sepenuhnya menonaktifkan tombol secara bersamaan, atau memetakannya kembali ke tombol lain di keyboard.

Jika Anda menggunakan perintah:

setxkbmap -option caps:none

Keyboard tidak akan lagi beralih. Saya sudah mengkonfirmasi ini di laptop saya yang menjalankan Fedora 14, LED tidak lagi menyala, dan Capslock normal fungsionalitas hilang.

Namun menggunakan xev masih menunjukkan bahwa tombol sedang ditekan:

$ xev
...
...
KeyPress event, serial 35, synthetic NO, window 0x6800001,
    root 0xb1, subw 0x0, time 261504852, (167,-15), root:(353,268),
    state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 35, synthetic NO, window 0x6800001,
    root 0xb1, subw 0x0, time 261504971, (167,-15), root:(353,268),
    state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
    ...

Jadi, peristiwa tombol yang ditekan tetap dibiarkan utuh agar aplikasi lain dapat mengambilnya.

setxkbmap

File /usr/share/X11/xkb/rules/xorg.lst berisi daftar lengkap opsi yang dapat Anda berikan ke setxkbmap .

Mengambil file ini untuk "cap" Saya perhatikan baris ini:

caps:none            CapsLock is disabled

Ada nilai lain dalam file ini, jadi jika ini bukan yang Anda cari, mungkin salah satu dari nilai alternatif tersebut akan sesuai.

$ grep cap /usr/share/X11/xkb/rules/xorg.lst
  grp:caps_switch      CapsLock (while pressed), Alt+CapsLock does the original capslock action
  grp:caps_toggle      CapsLock
  grp:shift_caps_toggle Shift+CapsLock
  grp:shift_caps_switch CapsLock (to first layout), Shift+CapsLock (to last layout)
  grp:alt_caps_toggle  Alt+CapsLock
  lv3:caps_switch      CapsLock
  lv3:caps_switch_latch CapsLock (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)
  ctrl:nocaps          Make CapsLock an additional Ctrl
  ctrl:swapcaps        Swap Ctrl and CapsLock
  grp_led:caps         CapsLock
  caps                 CapsLock key behavior
  caps:internal        CapsLock uses internal capitalization. Shift "pauses" CapsLock
  caps:internal_nocancel CapsLock uses internal capitalization. Shift doesn't affect CapsLock
  caps:shift           CapsLock acts as Shift with locking. Shift "pauses" CapsLock
  caps:shift_nocancel  CapsLock acts as Shift with locking. Shift doesn't affect CapsLock
  caps:capslock        CapsLock toggles normal capitalization of alphabetic characters
  caps:numlock         Make CapsLock an additional NumLock
  caps:swapescape      Swap ESC and CapsLock
  caps:escape          Make CapsLock an additional ESC
  caps:backspace       Make CapsLock an additional Backspace
  caps:super           Make CapsLock an additional Super
  caps:hyper           Make CapsLock an additional Hyper
  caps:shiftlock       CapsLock toggles Shift so all keys are affected
  caps:none            CapsLock is disabled
  compose:caps         CapsLock
  shift:breaks_caps    Shift cancels CapsLock
  shift:both_capslock  Both Shift-Keys together toggle CapsLock
  shift:both_capslock_cancel Both Shift-Keys together activate CapsLock, one Shift-Key deactivates

Referensi

  • Nonaktifkan Caps Lock &remap Menu ke Super_R dengan xmodmap tidak lagi berfungsi
  • Menonaktifkan dan Mengaktifkan Caps Lock di Ubuntu
  • Nonaktifkan Caps Lock Key di Linux
  • Keyboard – Memodifikasi atau Menonaktifkan Caps Lock
Terkait:Memutuskan font, dan menentukan notasi yang tepat?
Linux
  1. Bagaimana mengubah nama host mesin Linux Anda tanpa perlu me-restart

  2. Bagaimana Mengaktifkan Atau Mematikan Pilihan Teks yang Dikirim ke Clipboard?

  3. Bagaimana Cara Mendaftar File Termuda N (tanpa Parsing Ls!)?

  1. Bagaimana Cara Mematikan Tanpa Konfirmasi Konfirmasi?

  2. Bagaimana cara meneruskan kata sandi ke su/sudo/ssh tanpa mengesampingkan TTY?

  3. Bagaimana saya bisa membuat daftar file dalam arsip zip tanpa mendekompresinya?

  1. Bagaimana Mencegah `ls` Dari Menyortir Output?

  2. Bagaimana Mencegah Eksekusi Perintah Rm -r * yang tidak disengaja?

  3. Cara menghapus jutaan file tanpa mengganggu server