Comment puis-je faire en sorte que le retour arrière agisse comme un d'échappement à l'aide de setxkbmap?

8

Il semble y avoir plusieurs options pour setxkbmap, par exemple, faire -option caps:backspacedes majuscules un retour arrière. Cependant, je n'arrive pas à trouver une option qui fasse du retour arrière une touche d'échappement. Comment créer une seule commande setxkbmap qui change la clé de retour arrière en une touche d'échappement?

Alice Ryhl
la source

Réponses:

13

Vous devrez définir une nouvelle option.
Créez d'abord un nouveau fichier de symboles /usr/share/X11/xkb/symbols/bkspavec par exemple le contenu suivant:

partial alphanumeric_keys
xkb_symbols "bksp_escape" {
    key <BKSP> { [ Escape ] };
};

Créez ensuite la nouvelle option comme ceci:

bksp:bksp_escape  =   +bksp(bksp_escape)

(où bkspest le nom du fichier de symboles et bksp_escapele nom du groupe qui a été défini dans ce fichier) et ajoutez-le à la liste d'options dans l'ensemble de règles que vous utilisez - en supposant evdev- alors placez-le /usr/share/X11/xkb/rules/evdevsous ! option = symbols:

! option    =   symbols
  bksp:bksp_escape  =   +bksp(bksp_escape)
  ...........
  grp:shift_toggle  =   +group(shifts_toggle)
  altwin:menu       =   +altwin(menu)

Ajoutez-le également /usr/share/X11/xkb/rules/evdev.lst(avec une brève description) sous ! option(par exemple juste avant ctrl):

! option
  ........
  bksp                 Backspace key behavior
  bksp:bksp_escape     Backspace as Escape
  ctrl                 Ctrl key position
  ctrl:nocaps          Caps Lock as Ctrl

Vous pouvez ensuite exécuter, en tant qu'utilisateur régulier:

setxkbmap -layout us -option bksp:bksp_escape

pour activer l'option et faire BKSPse comporter comme ESC.
Vous pouvez également vérifier si:

setxkbmap -query

rapports:

rules:      evdev
model:      pc104
layout:     us
options:    bksp:bksp_escape

et si

setxkbmap -print

les sorties:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)+bksp(bksp_escape)" };
    xkb_geometry  { include "pc(pc104)" };
};

Dans Gnome 3, vous pouvez rendre l'option permanente via dconf(ou gsettingsdans le terminal), par exemple, ajoutez 'bksp:bksp_escape'à l' organisation> gnome> bureau> sources d'entrée> clé xkb-options (notez que dansdconf valeurs sont séparées par une virgule + espace).


Enfin, notez que les deux evdevet evdev.lstseront remplacés lors des futures mises à niveau (mais pas votre bkspfichier de symboles personnalisé ), vous devrez donc les modifier à nouveau à chaque fois que le package qui les possède est mis à niveau (sur archlinux, c'est xkeyboard-config). Il est plus facile d'écrire un script qui fait cela, par exemple

sed '/! option[[:blank:]]*=[[:blank:]]*symbols/a\
  bksp:bksp_escape  =   +bksp(bksp_escape)
' /usr/share/X11/xkb/rules/evdev

sed '/! option/a\
  bksp                 Backspace key behavior\
  bksp:bksp_escape     Backspace as Escape
' /usr/share/X11/xkb/rules/evdev.lst

Si vous êtes satisfait du résultat, utilisez sed -i(ou -i.baksi vous voulez faire des copies de sauvegarde) pour réellement éditer ces fichiers sur place .

don_crissti
la source