web-dev-qa-db-fra.com

Remapper le verrouillage des majuscules sur Ctrl-b

Comment xkb ou un autre outil peut-il être utilisé pour lier de façon permanente le verrouillage des majuscules à ctrl+b en terminal?

(C'est pour faire Caps Lock la clé de préfixe par défaut pour tmux. Il peut également être associé à une clé spécifique si cela est trop difficile, par exemple. une touche de fonction, qui pourrait alors être convertie en préfixe tmux.)

5
mahemoff

XKB conviendra aux interfaces graphiques Xwindows ou Wayland. Cela n'affectera pas les consoles virtuelles, mais les émulateurs de terminaux GUI iront bien. Pour le contexte XKB, je vous indiquerai certains (vue d'ensemble, système ou utilisateur) .. autres (options personnalisées) .. réponses (règles personnalisées) .

Ce qui suit vous permettra d’ajouter une nouvelle option telle que caps:myf13 à une mise en page XKB existante avec tous les outils que vous utiliseriez normalement (setxkbmap, localectl paramètres, le panneau GNOME, etc.).


Définir l'option

Les options de verrouillage XKB existantes sont répertoriées dans /usr/share/X11/xkb/rules/evdev.lst. En regardant les options correspondantes dans le fichier .../rules/evdev, vous pouvez voir qu'elles sont toutes chargées à partir du fichier .../symbols/capslock. Ce sont toutes des touches de modification, qui ne sont probablement pas le meilleur exemple, mais caps:backspace pourrait être une bonne comparaison. En regardant le fichier, nous trouvons la strophe définissant cette option:

hidden partial modifier_keys
xkb_symbols "backspace" {
    key <CAPS> { [ BackSpace ] };
};

grep dans les autres fichiers de symboles, nous pouvons voir que le symbole F13 est simplement F13. La nouvelle strophe option pourrait ressembler à ceci:

hidden partial modifier_keys
xkb_symbols "myf13" {
    key <CAPS> { [ F13 ] };
};

Comme vous pouvez le constater, nous n’avons changé que le nom de l’option et le symbole attribué à la touche.


Accrocher

La seule chose qui reste à faire est de brancher la nouvelle strophe. Sur un système Xwindows de base, en utilisant des outils en ligne de commande tels que setxkbmap et xkbcomp, un emplacement d'utilisateur personnalisé fera l'affaire; pour GNOME, KDE ou un système Wayland, vous devez apporter vos modifications à la base de données XKB du système.

À titre d'exemple pour les modifications du système (vous aurez besoin de Sudo accès pour créer ou modifier ces fichiers):

  • Placez la strophe personnalisée dans un nouveau fichier de symbole, par exemple /usr/share/X11/xkb/symbols/mycaps.

  • Ajoutez ceci à /usr/share/X11/xkb/rules/evdev juste en dessous de la ligne pour caps:backspace:

      caps:myf13   =   +mycaps(myf13)
    
  • ... ajouter à /usr/share/X11/xkb/rules/evdev.lst:

      caps:myf13      Caps Lock is F13
    
  • ... ajouter à /usr/share/X11/xkb/rules/evdev.xml:

          <option>
            <configItem>
              <name>caps:myf13</name>
              <description>Caps Lock is F13</description>
            </configItem>
          </option>
    
  • Enfin, effectuez des sauvegardes de vos fichiers .../rules/evdev* ou créez un fichier de correctif. Vos modifications seront écrasées à chaque mise à jour du package xkb-data. Si vous avez enregistré votre strophe de modification dans le fichier .../symbols/capslock, elle devra également être sauvegardée.

Une fois ces modifications effectuées, vous devriez pouvoir définir cette option comme s'il s'agissait d'une autre option XKB. Vous devrez peut-être redémarrer une session GNOME/KDE pour que les panneaux de contrôle enregistrent les modifications, mais des outils tels que setxkbmap devraient le trouver immédiatement: setxkbmap -option caps:myf13

3
quixotic