GNU/Linux >> Tutoriels Linux >  >> Linux

Comment empêcher l'effet de basculement du verrouillage des majuscules, sans le remapper ni le désactiver ?

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
En relation :Décider d'une police et déterminer la notation appropriée ?
Linux
  1. Comment changer le nom d'hôte de votre machine Linux sans avoir à redémarrer

  2. Comment tarer un répertoire sans conserver la structure du répertoire ?

  3. Comment puis-je lister les fichiers dans une archive zip sans la décompresser ?

  4. Xorg:Comment puis-je mapper AltGr sur la touche CapsLock (pour basculer les symboles de 3e niveau)

  5. Comment utiliser les gorgées au terminal pour redimensionner une image, sans upscaling ?

Comment activer l'effet de flou dans KDE Plasma 5.13

Comment activer ou désactiver la sélection de texte envoyée au presse-papiers ?

Comment répertorier le nième fichier le plus jeune (sans analyser Ls !) ?

Comment tirer une ligne particulière sans déplacer le curseur dans Vim ?

Basculer Numlock Sans La Clé - Sans Autorisations Sudo ?

Comment supprimer des millions de fichiers sans perturber le serveur