Usando setxkbmap para um remapeamento simples (semelhante ao xmodmap)

Usando setxkbmap para um remapeamento simples (semelhante ao xmodmap)

Enfrentei alguns problemas após remapear o teclado com xmodmap: as configurações são redefinidas aleatoriamente após 2 a 20 minutos após a aplicação. Pesquisei no Google, mas não ajudou: algo os redefine, mas todas as menções se aplicam ao xfce, enquanto estou no Ubuntu 14.04 normal com unidade.

Vi frases como 'use xkb, esqueça xmodmap', mas ainda não tenho ideia de como fazer isso. É classificado ou muito complicado, porque a quantidade de informações sobre isso é significativamente menor do que no modo xmodmap.

Aqui está minha lista de personalizações:

xmodmap -e "keycode 84 = Down"
xmodmap -e "keycode 79 = Home"
xmodmap -e "keycode 80 = Up"
xmodmap -e "keycode 83 = Left"
xmodmap -e "keycode 85 = Right"
xmodmap -e "keycode 87 = End"
xmodmap -e "keycode 90 = Insert"
xmodmap -e "keycode 91 = Delete"
xmodmap -e "keycode 89 = Next"
xmodmap -e "keycode 81 = Prior"

onde os códigos-chave são teclas correspondentes no teclado numérico, com numlock = off (basicamente, estou substituindo KP_Del por Delete, KP_Home por Home etc. - não pergunte por quê))

Alguém pode ajudar a encontrar uma maneira de fazer isso usando xkb – pelo menos uma das linhas? E onde encontrar os "nomes" das chaves das outras para que eu pudesse fazer o resto por exemplo?

Responder1

Você pode seguir a ideia geral vista emminha resposta sobre um problema semelhante; se você ainda quiser mudar de layout (emboraainda bastante quebrado) você devedefinir um novo layout ou variante.

Observe que o modelo para copiar e modificar para a edição de um teclado é um pouco difícil de encontrar. No meu teclado, por exemplo, a geometria é "pc105"; isso é definido em /usr/share/X11/xkb/symbols/pc. Se você olhar para isso,incluir:

[...]
key <SPCE> {        [        space          ]       };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {        [ BackSpace, BackSpace  ]       };
[...]

O teclado é definido no arquivo/usr/share/X11/xkb/symbols/keypad

[...] 
default  partial hidden keypad_keys
xkb_symbols "x11" {
   include "keypad(operators)"

   key  <KP7> {        [  KP_Home,     KP_7    ]       };
   key  <KP8> {        [  KP_Up,       KP_8    ]       };
[...]

Para o nome dos símbolos-chave (keysims), o melhor lugar para procurar é no arquivo /usr/include/X11/keysymdef.h; você pode precisar ter os pacotes de desenvolvimento instalados para obtê-lo (ou instalá-lo instalando x11proto-core-dev):

[...]
/* Cursor control & motion */

#define XK_Home                          0xff50
#define XK_Left                          0xff51  /* Move left, left arrow */
#define XK_Up                            0xff52  /* Move up, up arrow */
[...]

o nome do keysym é aquele que você removeu uma vez da string "XK_".

informação relacionada