Eu percebo isso adicionando
setxkbmap xxx
podemos alterar o layout do teclado no servidor X. Ele não pode sobreviver ao logout/reinicialização, então podemos adicionar esta linha $HOME/.profile
para disponibilizá-la quando fizermos login, como esta pergunta descreve.
Mas, quando fazemos isso, antes de fazer o login, o layout do teclado ainda não está disponível. Se quisermos usá-lo nesta fase, qual é o caminho a percorrer? Estou usando o GDM no Centos7.
O que eu tentei:
Defina um novo layout de teclado, chamado
symmetri
, e coloque-o em/usr/share/X11/xkb/symbols/
. Para testar, você pode baixá-lo aqui . NOTA: Eu defini apenas o layout para o servidor X11, ainda não para o console virtual. Talvez seja por isso que não posso enumerá-lo comlocatectl list-keymaps
, nemloadkeys
, nem tocando/etc/vconsole.conf
.setxkbmap symmetri
para usá-lo. Alterações aplicadas. Coloque-o/etc/profile.d/symmetri.sh
para usá-lo no perfil do usuário.Saia e, quando tento fazer login, ele para de funcionar e recebo o QWERTY.
Eu faço login com QWERTY e, em seguida, uso o Symmetri agora, porque o script é obtido após o login bem-sucedido.
Terminal aberto, volto para
us
bysetxkbmap us
,
E depois,
localectl set-x11-keymap symmetri
Desta vez, o layout não é alterado. localectl set-keymap symmetri
nenhum.
você pode usar
Isso será permanente para o console e a área de trabalho, configurações mais detalhadas podem ser encontradas na página man https://www.unix.com/man-page/centos/1/LOCALECTL/
@terdon sua solução não está funcionando, mas obrigado por me ajudar, aprendi mais; a princípio também estou suspeitando se tem algo a ver com o Gnome, mas descobri que é apenas X11. E @TimBrandrick, sua solução deve funcionar na maioria dos casos, mas no meu caso, não antes de adicionar meu layout de teclado ao
.../X11/xkb/rules/evdev.xml
(e apenas no caso.../X11/xkb/rules/evdev.lst
, porque de acordo com algumas fontes, olst
arquivo é a versão compilada dexml
, mas eu duvido se todos os processos que dependem desses arquivos lerão apenasxml
arquivos; então adiciono ambos. Na verdade,xml
tem mais informações do quelst
, maslst
é mais fácil de entender.)Então, aqui está como eu fiz:
1. Abra
.../X11/xkb/rules/evdev.xml
.(Eu omito a parte inicial, porque ela difere entre as distribuições. No CentOS 7, está abaixo
/usr/share/
de ; no Ubuntu <= 8.08, está abaixo de/etc/
. 1 Strange. )2. No final dos nós filhos de
<layoutList>
, adicione esta parte:(altere conforme necessário, é apenas um modelo)
Se o layout do seu teclado não tiver variante,
<variantList>
a parte pode ser de fechamento automático, como:<variantList />
.Observação:
iso639Id
deve ter um valor compatível com o padrão ISO 639-1 ou 639-2. 1 A tabela completa também é fornecida na referência 1. E deve estar de acordo com suas configurações de localidade. Eu definiEnglish(U.S)
como meu idioma do sistema, então eu preenchous
aqui.3. Salve-o e abra
.../X11/xkb/rules/evdev.lst
.4. Ao final de
! layout
, adicione o nome do seu layout. Curti:5. Se o layout do seu teclado tiver uma variante, no final de
! variant
, adicione-o também.O nome da variante deve coincidir com as informações acima no arquivo xml. (Conforme vou testando, só
localectl list-x11-keymap-variants
vai ler esse arquivo ao invés de ler o xml, deve ser algum erro/bug.)6. Você pode fazer o mesmo com
base.xml
ebase.lst
, mas eu fiz primeiro e não funcionou.7. Defina o layout do teclado com:
ou, para definir a variante, use:
localectl
canlist-x11-keymap-layouts
elist-x11-keymap-variants
, mas você não pode definir variante com ele; sósetxkbmap
pode.Com esta 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!! Apenas o layout básico irá! ) Mas, uma vez feito o login com sucesso, o gerenciador de área de trabalho assumirá não configure o novo layout de teclado no arquivo
$HOME/.bashrc
/$HOME/.profile
(para um único usuário)//etc/profile.d/xxx.sh
//etc/profile
(para todos os usuários), você não obterá seu novo layout de teclado depois de fazer logout e login novamente!!!! Portanto, essas alterações persistirão apenas antes do primeiro login bem-sucedido ... você deve 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 os usuários!" Atenção: com esta alteração, mesmo que você saia e mude de usuário, o layout será o alterado, nãoqwerty(us)
.Realmente frustrante ... deve haver uma maneira mais fácil, mas não consigo encontrá-la.
Referências: (leitura obrigatória)