Eu tenho o Elementary OS e há um problema se o layout do teclado personalizado precisar ser adicionado, porque atualmente o switchboard-plug-keyboard usa layouts codificados permanentemente de data/layouts.txt
e não verifica /usr/share/X11/xkb/rules/evdev.xml
para novos layouts, portanto você não pode adicionar seu layout de teclado personalizado por meio da interface do usuário, porque ele não é exibido aqui.
Eu adicionei manualmente meu layout ao layouts.txt, porque o formato desse arquivo é simples e fácil de entender.
data / layouts.txt (a última linha que adicionei)
#Czech:cz
Czech (UCW layout, accented letters only):ucw
Czech (US Dvorak with CZ UCW support):dvorak-ucw
Czech (qwerty):qwerty
Czech (qwerty, extended Backslash):qwerty_bksl
Czech (with <\|> key):bksl
Czech (programming):kblayout
Agora, posso adicionar meu layout via interface do usuário, , mas não funciona quando ativado.
Isso é o que gsettings get org.gnome.desktop.input-sources sources
me retorna :
[('xkb', 'cz'), ('xkb', 'us'), ('xkb', 'cz+kblayout')]
Na parte de /usr/share/X11/xkb/rules/evdev.xml abaixo, você pode ver que ele deve estar configurado corretamente, mas o mapa de teclado personalizado não está funcionando:
<layout>
<configItem>
<name>cz</name>
<shortDescription>cs</shortDescription>
<description>Czech</description>
<languageList>
<iso639Id>cze</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>bksl</name>
<description>Czech (with <\|> key)</description>
</configItem>
</variant>
<variant>
<configItem>
<name>qwerty</name>
<description>Czech (qwerty)</description>
</configItem>
</variant>
<variant>
<configItem>
<name>qwerty_bksl</name>
<description>Czech (qwerty, extended Backslash)</description>
</configItem>
</variant>
<variant>
<configItem>
<name>ucw</name>
<description>Czech (UCW layout, accented letters only)</description>
</configItem>
</variant>
<variant>
<configItem>
<name>dvorak-ucw</name>
<description>Czech (US Dvorak with CZ UCW support)</description>
</configItem>
</variant>
<variant>
<configItem>
<name>kblayout</name>
<description>Czech (programming)</description>
</configItem>
</variant>
</variantList>
</layout>
Interessante é que quando eu uso setxkbmap kblayout
ele funciona e mesmo quando eu ativo o kblayout via interface do usuário, no gráfico de layout do teclado eu vejo o teclado mapeado corretamente, mas quando pressiono uma tecla, caráter errado é dado.