Layout de teclado personalizado sem raiz

2

Quais são os passos para configurar um layout de teclado personalizado no X11 sem acesso root? Eu sei que é possível, baseado em esta resposta , mas eu recebo Error loading new keyboard description sempre que eu tento usar meu novo layout.

Em .config , criei um diretório xkb da seguinte forma:

xkb/
  rules/
    evdev-local
    evdev-local.lst
    evdev-local.xml
  symbols/
    my-us

Na minha evdev-local.xml na seção <layoutList> , adicionei

<layout>
  <configItem>
    <name>my-us</name>

    <shortDescription>my-us</shortDescription>
    <description>English (My US)</description>
    <languageList>
      <iso639Id>eng</iso639Id>
    </languageList>
  </configItem>
  <variantList>
    <variant>
      <configItem>
        <name>mdvp</name>
        <description>English (Modified Programmer Dvorak)</description>
      </configItem>
    </variant>
  </variantList>
</layout>

e o arquivo symbols/my-us é

partial alphanumeric_keys
xkb_symbols "mdvp" {

    include "us(dvp)"
    name[Group1] = "English (Modified Programmer Dvorak)";

    //             Unmodified   Shift  AltGr        Shift+AltGr
    // upper row, left side
    key <AD01> { [ apostrophe,  quotedbl, dead_acute, dead_diaeresis    ] };

    // lower row, left side
    key <AB01> { [ semicolon,   colon, dead_ogonek, dead_doubleacute ] };

    include "level3(ralt_switch)"
};

Eu então corro

setxkbmap -I ~/.config/xkb/ -rules evdev-local -layout my-us

e obtenha

Error loading new keyboard description

Back story: Eu tenho usado o Dvorak do Programmer, e eu gosto dele na maior parte, mas eu quero mudar o ponto-e-vírgula e o apóstrofo de volta para suas posições no US Dvorak, já que isso funciona melhor para o meu fluxo de trabalho.

Eu vi este tutorial recomendado no SE, e ele funciona no meu máquina, mas eu preciso ser capaz de usar o widget de alternador de layout do KDE para que eu possa voltar para o QWERTY simples em inglês quando alguém precisar trabalhar em minha máquina.

    
por jpyams 12.10.2017 / 16:51

1 resposta

0

Por algum motivo, funciona se você -print e canaliza a saída para xkbcomp :

setxkbmap \
    -I ~/.config/xkb/ \
    -rules evdev-local \
    -layout "my-us(mdvp)" \
    -print |
    xkbcomp -I ~/.config/xkb/ - "$DISPLAY"

Não acho que haja algo de errado com seu layout. Eu tentei definir com setxkbmap diretamente, mas mesmo com a opção -verbose saída não é útil:

Warning! Multiple definitions of rules file
         Using command line, ignoring X server
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+my-us(mdvp)+inet(evdev)+terminate(ctrl_alt_bksp)
geometry:   pc(pc104)
Error loading new keyboard description

Isso é com o nível detalhado padrão. Mas mesmo se eu configurá-lo para 10, que aparentemente é o nível máximo, apenas produz “locale is C” também como onde ele tenta procurar o arquivo de regras, além do acima. Não sai nada mais sobre por que não consegue carregar o teclado descrição.

Uma das razões pelas quais eu prefiro canalizar para xkbcomp em vez de apenas usando setxkbmap é porque o primeiro parece dar melhor erro mensagens.

    
por 07.11.2017 / 13:50