Usando o setxkbmap para um remapeamento simples (semelhante ao xmodmap)

11

Eu enfrentei alguns problemas depois de remapear o teclado com o xmodmap: as configurações são redefinidas aleatoriamente após 2 a 20 minutos após a aplicação. Googled mas sem ajuda: algo reseta-los, mas todas as menções se aplicam ao xfce, enquanto eu estou sob habitual 14.04 Ubuntu com unidade.

Eu vi frases como 'use xkb, esqueça o xmodmap', mas ainda não tenho ideia de como fazer isso. Ela é classificada ou muito complicada, porque a quantidade de informações é significativamente menor do que a do xmodmap.

Esta é 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 códigos de teclas são chaves correspondentes no numpad, com numlock = off (basicamente, estou substituindo KP_Del por Delete, KP_Home por Home etc - não pergunte por que))

Alguém pode ajudar a encontrar uma maneira de fazer isso usando xkb - pelo menos uma das linhas? E onde encontrar os "nomes" de chaves para outro, então eu poderia fazer o resto pelo exemplo?

    
por Den Rimus 13.06.2014 / 16:46

1 resposta

4

Você pode seguir a ideia geral vista em minha resposta sobre um problema semelhante ; Se você ainda quiser mudar de layout (apesar de ainda estar bem quebrado ) você deve defina um novo layout ou variante .

Observe que o modelo para copiar e modificar 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 ele, 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 de chave (keysims), o melhor lugar para procurar é no arquivo /usr/include/X11/keysymdef.h ; talvez seja necessário ter os pacotes de desenvolvimento instalados para instalá-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 a string "XK_".

    
por Rmano 16.06.2014 / 12:16