Como posso fazer o backspace agir como escape usando o setxkbmap?

7

Parece haver várias opções para setxkbmap , como -option caps:backspace , o que faz com que os limites sejam um backspace. No entanto, não consigo encontrar uma opção que faça backspace uma chave de escape. Como crio um único comando setxkbmap que altera a tecla backspace para uma chave de escape?

    
por Alice Ryhl 27.06.2015 / 14:08

1 resposta

9

Você terá que definir uma nova opção.
Primeiro, crie um novo arquivo de símbolo, por ex. /usr/share/X11/xkb/symbols/bksp com o seguinte conteúdo:

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

Em seguida, crie a nova opção assim:

bksp:bksp_escape  =   +bksp(bksp_escape)

(onde bksp é o nome do arquivo de símbolo e bksp_escape é o nome do grupo que foi definido nesse arquivo) e adicione-o à lista de opções no conjunto de regras que você está usando - assumindo evdev - coloque-o em /usr/share/X11/xkb/rules/evdev em ! option = symbols :

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

Adicione-o também a /usr/share/X11/xkb/rules/evdev.lst (com uma breve descrição) em ! option (por exemplo, antes de ctrl ):

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

Você pode executar como usuário comum:

setxkbmap -layout us -option bksp:bksp_escape

para ativar a opção e fazer com que o BKSP se comporte como ESC .
Você também pode verificar se:

setxkbmap -query

relatórios:

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

e se

setxkbmap -print

saídas:

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

No Gnome 3, você pode tornar a opção permanente via dconf (ou gsettings no terminal), por exemplo. adicione 'bksp:bksp_escape' à chave org > gnome > área de trabalho > entrada-fontes > xkb-opções (note que em dconf os valores são separados por vírgula + espaço) .

Por fim, observe que evdev e evdev.lst serão sobrescritos em atualizações futuras (mas não em seu arquivo de símbolo bksp personalizado), portanto, será necessário editá-los novamente toda vez que o pacote que os possui for atualizado (no archlinux é xkeyboard-config ). É mais fácil escrever um script que faça isso, por exemplo,

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

Se você estiver satisfeito com o resultado, use sed -i (ou -i.bak se você quiser fazer cópias de segurança) para realmente editar esses arquivos no local .

    
por 10.07.2015 / 11:42