Como funciona a compilação xkb?

2

Em uma espécie de ambiente "Linux do zero", tenho o problema de que o xkbcomp falha na inicialização do X. Descobri que não consigo compilar os mapas de teclado na minha máquina Ubuntu padrão:

xkbcomp -w 10 -R/usr/share/X11/xkb -xkm rules/evdev dummy.km

Isso resulta no erro:

Warning: Changing root directory to "/usr/share/X11/xkb"
syntax error: line 16 of rules/evdev
last scanned symbol is:
Errors encountered in rules/evdev; not compiled.

Como o xkbcomp deve ser usado?

    
por Martin 12.06.2018 / 11:47

1 resposta

0

/usr/share/X11/xkb/rules/evdev contém uma especificação de regras . As regras informam ao XKB como construir keymaps de uma parte, eles não especificam um mapa de teclas específico. A entrada de xkbcomp precisa ser um keymap .

A maneira mais fácil de descobrir qual deve ser a entrada é leia a página do manual ( haha não) leia a documentação oficial ( Até parece) leia o Guia não confiável chamado de forma enganosa (o que é muito bom está ligado no semi-oficial wiki do X.org , mas enquanto isso acontece ter as informações , não é realmente dito que esta é a entrada para xkbcomp ) errr, pergunte na internet? Você acabou de fazer isso.

Bem, xkbcomp funciona nos dois sentidos. Então, se você pedir para descompilar o mapa de teclado do seu monitor, verá algumas informações aceitáveis.

xkbcomp :0 - | less

A sintaxe é:

xkb_keymap {
  xkb_keycodes { … };
  xkb_types    { … };
  xkb_compat   { … };
  xkb_symbols  { … };
  xkb_geometry { … };
}

O conteúdo das chaves depois de xkb_xxx são coisas que entram em arquivos nos diretórios /usr/share/X11/xkb/xxx . Você pode usar uma instrução include para informar xkbcomp para ler arquivos existentes. Observe que você precisa de uma única diretiva include com + entre os nomes dos arquivos. Alguns arquivos contêm várias diretivas xkb_xxx , passam o nome daquele que você deseja entre parênteses. Por exemplo, para usar o layout americano com Compose no Menu , use

xkb_symbols { include "us+compose(menu)" }

Você pode solicitar setxkbmap para produzir resultados aceitáveis entrada para xkbcomp . Passe a opção -print para ver a saída em vez de empurrar o mapa de teclado para o servidor. Com setxkbmap , passe -compat , -geometry , -keycodes e -types para definir o xkb_xxx correspondente e -layout para xkb_symbols .

setxkbmap -layout "us+compose(menu)" -print

Na verdade, eu menti por omissão, há uma maneira mais fácil: as informações estão no Wiki do Arch . Se você gosta de entender como configurar seu sistema, o wiki do Arch é um excelente recurso, esteja você usando o Arch Linux ou não.

    
por 14.06.2018 / 00:26

Tags