¿Cómo puedo hacer que el retroceso actúe como escape usando setxkbmap?

8

Parece que hay varias opciones setxkbmap, como la -option caps:backspaceque hace que las mayúsculas sean un retroceso. Sin embargo, parece que no puedo encontrar una opción que haga que el retroceso sea una tecla de escape. ¿Cómo creo un solo comando setxkbmap que cambia la tecla de retroceso a una tecla de escape?

Alice Ryhl
fuente

Respuestas:

13

Tendrás que definir una nueva opción.
Primero, cree un nuevo archivo de símbolos, por ejemplo, /usr/share/X11/xkb/symbols/bkspcon el siguiente contenido:

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

Luego cree la nueva opción como esta:

bksp:bksp_escape  =   +bksp(bksp_escape)

(donde bkspestá el nombre del archivo de símbolos y bksp_escapeel nombre del grupo que se definió en este archivo) y agréguelo a la lista de opciones en el conjunto de reglas que está utilizando, suponiendo evdev, así que colóquelo /usr/share/X11/xkb/rules/evdevdebajo de ! option = symbols:

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

Agréguelo también a /usr/share/X11/xkb/rules/evdev.lst(con una breve descripción) debajo ! option(por ejemplo, justo antes ctrl):

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

Luego puede ejecutar, como usuario habitual:

setxkbmap -layout us -option bksp:bksp_escape

para habilitar la opción y hacer que se BKSPcomporte como ESC.
También puedes verificar si:

setxkbmap -query

informes:

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

y si

setxkbmap -print

salidas:

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)" };
};

En Gnome 3 puede hacer que la opción sea permanente a través de dconf(o gsettingsen la terminal), por ejemplo, agregar 'bksp:bksp_escape'a la clave org> gnome> escritorio> input-sources> xkb-options (tenga en cuenta que en los dconfvalores están separados por coma + espacio).


Por último, cabe destacar que tanto evdevy evdev.lstserá sobrescrita en futuras actualizaciones (pero no su encargo bksparchivo de símbolos) por lo que tendrá que volver edición ellas cada vez que el paquete que es su propietario se actualiza (en archlinux es xkeyboard-config). Es más fácil escribir un guión que haga eso, por ej.

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 está satisfecho con el resultado, use sed -i(o -i.baksi desea hacer copias de seguridad) para editar esos archivos en el lugar .

don_crissti
fuente