@terdon sua solução não está funcionando, mas obrigado por me ajudar, eu aprendi mais; No começo eu também estou suspeitando se tem algo a ver com o Gnome, mas descobriu-se que é apenas X11. E @TimBrandrick, sua solução deve funcionar na maioria dos casos, mas no meu caso, não antes de adicionar o layout do meu teclado no .../X11/xkb/rules/evdev.xml (e, por via das dúvidas, .../X11/xkb/rules/evdev.lst , porque de acordo com algumas fontes, o lst file é a versão compilada de xml , mas duvido que todos os processos que dependem desses arquivos leiam apenas xml files; portanto, incluo ambos. Na verdade, xml tem mais informações que lst , mas lst é mais fácil de entender.)
Então, aqui está como eu fiz:
1. Abra .../X11/xkb/rules/evdev.xml .
(omito a parte inicial, porque ela difere entre as distribuições. No CentOS 7, ela está em /usr/share/ ; no Ubuntu < = 8.08, ela está em /etc/ . 1 .)
2. No final dos nós filhos de <layoutList> , adicione esta parte:
(mude conforme necessário, é apenas um modelo)
<layout>
<configItem>
<name>symmetri</name>
<shortDescription>symmetri</shortDescription>
<description>Symmetri (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>non-prog</name>
<shortDescription>non-prog</shortDescription>
<description>Symmetri for non-programmer (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
</variant>
</variantList>
</layout>
Se o layout do teclado não tiver variante, <variantList> parte pode ser de fechamento automático, como: <variantList /> .
Nota: iso639Id deve ter um valor compatível com a norma ISO 639-1 ou 639-2. 1 A tabela completa também é fornecida na referência 1. E, deve estar em conformidade com suas configurações de localidade. Eu defino English(U.S) como meu idioma do sistema, então preenho us aqui.
3. Salve e abra .../X11/xkb/rules/evdev.lst .
4. No final de ! layout , adicione o nome do layout. Como:
symmetri Symmetri layout (CN, EN and ES)
5. Se o layout do seu teclado tiver variante, no final de ! variant , adicione-o também.
non-prog symmetri: non-programmer
O nome da variante deve coincidir com as informações acima no arquivo xml. (Como eu testo, localectl list-x11-keymap-variants irá somente ler este arquivo em vez de ler o xml, deve ser um erro / bug.)
6. Você pode fazer o mesmo com base.xml e base.lst , mas eu fiz primeiro e não funciona.
7. Defina o layout do seu teclado com:
setxkbmap symmetri
ou, para definir a variante, use:
setxkbmap symmetri -variant non-prog
localectl can list-x11-keymap-layouts e list-x11-keymap-variants , mas não é possível definir uma variante com ela; apenas setxkbmap pode.
Com essa configuração, agora após a reinicialização e antes do primeiro login , você tem seu novo layout de teclado (, embora a variante não persista !! Somente o layout básico será! )
Mas, após o login com êxito, o gerenciador da área de trabalho assumirá e se você não configurar o novo layout de teclado em $HOME/.bashrc / $HOME/.profile (para usuário único) / /etc/profile.d/xxx.sh / /etc/profile (para todos os usuários ) arquivo, você não terá seu novo layout de teclado uma vez logout e login novamente !!!! Então, estas mudanças irão somente persistir antes do primeiro login bem sucedido ... você tem que usar .bashrc ou scripts de perfil para dizer ao servidor X: "não apenas antes do login, mas também após o login eu quero para todos Comercial!" Cauteloso: com esta mudança, mesmo que você efetue logout e troque de usuário, o layout será o modificado, não qwerty(us) .
Realmente frustrante ... deve haver um caminho mais fácil, mas não consigo encontrá-lo.
Referências: (deve ler)