Ho un programma X11 che afferra il blocco delle maiuscole e lo usa. Il problema è che voglio disabilitare la normale commutazione del blocco maiuscole, ma così facendo sembra disabilitare la chiave.
Quindi, qualunque cosa X11 ottenga per la pressione di un tasto maiuscole, deve ancora ottenere (senza disabilitare la chiave o rimapparla su un'altra chiave), ma senza che nulla traduca la pressione di un tasto in un interruttore di maiuscole (che potrebbe essere a livello del kernel? ).
Ho provato a cambiare lo scancode, ma questo ha appena rimappato la chiave.
Ho rimosso la voce capslock con xmodmap
anche questo, ma questo ha anche disabilitato i maiuscoli.
Come posso dire al kernel di ignorare il tasto maiuscole (rispetto alla sua normale funzionalità), ma continuare a trasmettere il messaggio a X?
Solo per aggiungere un po' più di dettaglio:
Il "programma" che sto cercando di eseguire è umanizzato "enso". Quando non ci sono errori, posso usare enso con caps, ma sofar non ha capito come disabilitare la funzionalità caps mentre enso è ancora in grado di ottenerlo.
Risposta accettata:
Penso di avere una tecnica per disabilitare la commutazione del Capslock chiave ma non disabilitando completamente il tasto insieme o rimappandolo su un altro tasto sulla tastiera.
Se usi il comando:
setxkbmap -option caps:none
La tastiera non si attiverà più. L'ho confermato sul mio laptop con Fedora 14, il LED non si accende più e il normale Capslock la funzionalità è scomparsa.
Tuttavia, l'utilizzo di xev mostra ancora che il tasto è stato premuto:
$ 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
...
Quindi gli eventi del tasto premuto vengono ancora lasciati intatti per essere prelevati da altre applicazioni.
imposta mappa xkb
Il file /usr/share/X11/xkb/rules/xorg.lst
contiene l'elenco completo delle opzioni che puoi dare a setxkbmap
.
Scorrendo questo file per "cap" ho notato questa riga:
caps:none CapsLock is disabled
Ci sono altri valori in questo file, quindi se questo non è quello che stai cercando, forse uno di quei valori alternativi si adatterebbe invece.
$ 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
Riferimenti
- Disabilita Caps Lock e rimappa il menu su Super_R con xmodmap non funziona più
- Disabilita e abilita Caps Lock in Ubuntu
- Disabilita il tasto Caps Lock in Linux
- Tastiera:modifica o disattiva Caps Lock