Como posso fazer o backspace agir como escape usando setxkbmap?

8

Parece haver várias opções para setxkbmapcomo o -option caps:backspaceque faz com que as tampas um retrocesso. No entanto, não consigo encontrar uma opção que faça do backspace uma chave de escape. Como crio um único comando setxkbmap que altera a chave de backspace para uma chave de escape?

Alice Ryhl
fonte

Respostas:

13

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

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

Em seguida, crie a nova opção como esta:

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 neste arquivo) e adicioná-lo à lista de opções nas regras definidas que você está usando - supondo evdev- para colocá-lo em /usr/share/X11/xkb/rules/evdevsob ! 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, logo antes 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 um usuário comum:

setxkbmap -layout us -option bksp:bksp_escape

para ativar a opção e fazer com que BKSPse 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 gsettingsno terminal), por exemplo, adicionar 'bksp:bksp_escape'à chave org> gnome> desktop> fontes de entrada> chave xkb-options (observe que nos dconfvalores são separados por vírgula + espaço).


Finalmente, nota que tanto evdeve evdev.lstserá substituído em futuras atualizações (mas não o seu costume bksparquivo de símbolo), assim você vai ter que editar-los novamente cada vez que o pacote que as possui é atualizado (em 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.bakse quiser fazer cópias de segurança) para editar esses arquivos no local .

don_crissti
fonte