XKB: modifique o layout para Multi-group com Mode_switch

0

Eu quero criar um layout de teclado personalizado com base no meu layout de teclado alemão ( de ). A ideia é ter um layout de dois grupos e ter o Caps-Lock como a chave Mode_switch . Esse remapeamento parece funcionar de acordo com xev . No entanto, o segundo layout do grupo não funciona. Quando eu pressiono [CAPS] + [H] - > "h" ocorre ("'" esperado).

Aqui está o meu arquivo de símbolos chamado de_ext :

default
xkb_symbols "basic" {

    include "de"

    name[Group1]="de";
    name[Group2]="de2";

    // the H button should become accent grave when in second group
    override key <AC06> {
        type[Group2]="ALPHABETIC",
        symbols[Group2]= [           grave, grave ]
    };

    override key <CAPS> {         [     Mode_switch, Caps_Lock ] };

};

Editar 1:

@quixotic está certo, isso realmente funciona quando definido diretamente. Também tentei copiar o arquivo de_ext para /usr/share/X11/xkb/ e, em seguida, executar setxkbmap de_ext , o que também funciona.

No entanto, não funciona ao adicionar o layout a /usr/share/X11/xkb/rules/evdev.xml com

<layout>
  <configItem>
    <name>de_ext</name>
    <shortDescription>xy</shortDescription>
    <description>German extended</description>
    <languageList>
      <iso639Id>ger</iso639Id>
    </languageList>
  </configItem>
</layout>

Embora o novo layout apareça na minha seleção de layout na minha barra de tarefas do Ubuntu 17.04, quando eu o seleciono, o botão CAPS-Lock tem um comportamento diferente, como explicado acima. O que funciona é que o CAPS-Lock é o Mode_switch (eu verifiquei com xev ), no entanto, o segundo grupo não parece estar selecionado porque ao pressionar [CAPS] + [H] ele não funciona. Alguma idéia de qual seria a diferença ao usar o Switcher de Layout Ubuntu / Gnome?

Editar 2: Ao chamar xkbcomp $DISPLAY broken.xkb , estas são as coisas que notei:

  1. O nome dos meus xkb_symbols é: xkb_symbols "pc+prg+de:2+us:3+inet(evdev)"
  2. Meu layout tem três grupos em vez de dois (notei que até meu layout alemão padrão obtém dois layouts, embora apenas um seja definido em symbols/de )

    name[group1]="German";
    name[group2]="German";
    name[group3]="English (US)";
    
  3. Quase todas as teclas recebem três grupos / layouts, enquanto a segunda é igual à primeira e a terceira é um layout de teclado em inglês. Minhas próprias alterações para as letras não estão incluídas.

    key <AC01> {
        type[group1]= "FOUR_LEVEL_ALPHABETIC",
        type[group2]= "FOUR_LEVEL_ALPHABETIC",
        type[group3]= "ALPHABETIC",
        symbols[Group1]= [               a,               A,              ae,              AE ],
        symbols[Group2]= [               a,               A,              ae,              AE ],
        symbols[Group3]= [               a,               A ]
    };
    
  4. Aqui está o que eu recebo pela letra H

    key <AC06> {
        type[group1]= "FOUR_LEVEL_ALPHABETIC",
        type[group2]= "ALPHABETIC",
        type[group3]= "ALPHABETIC",
        symbols[Group1]= [               h,               H,         hstroke,         Hstroke ],
        symbols[Group2]= [               h,               H ],
        symbols[Group3]= [               h,               H ]
    };
    
  5. Minha alteração para o botão Caps-Lock está incluída sem modificações

O que eu suponho: deve haver alguma regra na configuração padrão (ubuntu?) xkb que modifica todos os símbolos para incluir layouts adicionais como um grupo adicional. Existe alguma maneira de eu parar com essa regra para o meu símbolo xkb ser disparado?

    
por Salim 23.01.2018 / 10:44

1 resposta

1

Eu finalmente encontrei a solução. No arquivo /usr/share/X11/xkb/rules/evdev existe uma regra

! model     layout[2]   =   symbols
  *         *           =   +%l[2]%(v[2]):2

O que causa a substituição do meu segundo grupo pelo layout padrão do meu teclado. Eu poderia consertar isso adicionando a seguinte linha (onde de é o layout do meu teclado base):

! model     layout[2]   =   symbols
  *         de          =   +de

Obrigado @quixotic para me ajudar a analisar o problema

    
por 28.01.2018 / 00:29

Tags