J'ai un programme X11 qui saisit le verrouillage des majuscules et l'utilise. Le problème est que je veux désactiver le basculement régulier du verrouillage des majuscules, mais cela semble désactiver la clé.
Donc, tout ce que X11 obtient pour une touche de verrouillage des majuscules, il doit toujours l'obtenir (pas de désactivation de la touche ou de remappage sur une autre touche), mais sans rien traduire la pression de la touche en une bascule en majuscule (qui pourrait être au niveau du noyau ? ).
J'ai essayé de changer le scancode, mais cela n'a fait que remapper la clé.
J'ai supprimé l'entrée de verrouillage des majuscules avec xmodmap
aussi, mais cela a également désactivé les majuscules.
Comment puis-je dire au noyau d'ignorer la touche majuscule (par rapport à sa fonctionnalité habituelle), mais de toujours transmettre le message à X ?
Juste pour ajouter un peu plus de détails :
Le "programme" que j'essaie d'exécuter est "enso" humanisé.
Lorsqu'il n'y a pas de clé, j'obtiens l'erreur "CRITICAL:root:Couldn't find quasimode key". Lorsqu'il n'y a pas d'erreur, je peux utiliser enso avec des majuscules, mais jusqu'à présent, je n'ai pas compris comment désactiver la fonctionnalité des majuscules alors qu'enso est toujours capable d'y accéder.
Réponse acceptée :
Je pense avoir une technique pour désactiver le basculement du Capslock touche sans désactiver complètement la touche ou en la remappant sur une autre touche du clavier.
Si vous utilisez la commande :
setxkbmap -option caps:none
Le clavier ne basculera plus. Je l'ai confirmé sur mon ordinateur portable exécutant Fedora 14, la LED ne s'allume plus et le Capslock normal la fonctionnalité a disparu.
Cependant, l'utilisation de xev indique toujours que la touche est enfoncée :
$ 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
...
Ainsi, les événements de touche enfoncée sont toujours laissés intacts pour que d'autres applications puissent les récupérer.
setxkbmap
Le fichier /usr/share/X11/xkb/rules/xorg.lst
contient la liste complète des options que vous pouvez donner à setxkbmap
.
En parcourant ce fichier pour "cap", j'ai remarqué cette ligne :
caps:none CapsLock is disabled
Il existe d'autres valeurs dans ce fichier, donc si ce n'est pas ce que vous recherchez, peut-être que l'une de ces valeurs alternatives conviendra à la place.
$ 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
Références
- Désactiver le verrouillage des majuscules et remapper le menu sur Super_R avec xmodmap ne fonctionne plus
- Désactiver et activer le verrouillage des majuscules dans Ubuntu
- Désactiver la touche de verrouillage des majuscules sous Linux
- Clavier – Modifier ou désactiver le verrouillage des majuscules