Desejo 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 Mode_switch
chave. Esse remapeamento parece funcionar de acordo com xev
. No entanto, o segundo layout de 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. Eu também tentei copiar o de_ext
arquivo para /usr/share/X11/xkb/
e depois executar, o setxkbmap de_ext
que também funciona.
No entanto, não funciona ao adicionar o layout /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 conforme explicado acima. O que funciona é que CAPS-Lock é o Mode_switch (verifiquei com xev
), no entanto, o segundo grupo parece não estar selecionado porque ao pressionar [CAPS]+[H] não funciona. Alguma ideia de qual poderia ser a diferença ao usar o Ubuntu/Gnome Layout Switcher?
Edit 2:
Ao ligar xkbcomp $DISPLAY broken.xkb
, estas são as coisas que notei:
- O nome dos meus xkb_symbols é:
xkb_symbols "pc+prg+de:2+us:3+inet(evdev)"
Meu layout tem três grupos em vez de dois (percebi 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)";
Quase todas as teclas recebem três grupos/layouts, sendo que o segundo é igual ao primeiro e o terceiro é um layout de teclado em inglês. Minhas próprias alterações nas cartas 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 ] };
Aqui está o que eu recebo para a 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 ] };
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 xkb padrão (ubuntu?) Que modifica todos os símbolos para incluir layouts adicionais como um grupo adicional. Existe alguma maneira de interromper essa regra para que meu símbolo xkb seja acionado?
Eu finalmente encontrei a solução. No arquivo
/usr/share/X11/xkb/rules/evdev
há uma regraO que causa a substituição do meu segundo grupo pelo layout padrão do meu teclado. Eu poderia corrigir isso adicionando a seguinte linha (onde
de
está meu layout de teclado base):Obrigado @quixotic por me ajudar a analisar o problema