Como posso definir o layout do teclado para a tela de login antes do primeiro login bem-sucedido no CentOS 7?

1

Eu percebo que adicionando

setxkbmap xxx

podemos alterar o layout do teclado no servidor X. Ele não pode sobreviver logout / reboot, então podemos adicionar esta linha em $HOME/.profile para torná-lo disponível quando fizermos login, como esta questão descreve.

Mas, quando fazemos isso, antes de fazer o login, o layout do teclado ainda não está disponível. Se queremos usá-lo nesta fase, qual é o caminho a percorrer? Eu estou usando o GDM no Centos7.

O que tentei:

  1. Defina um novo layout de teclado, denominado symmetri , e coloque-o em /usr/share/X11/xkb/symbols/ . Para testar, você pode baixá-lo aqui . NOTA: Eu só defini o layout para o servidor X11, ainda não para o console virtual. Talvez seja por isso que não posso listá-lo com locatectl list-keymaps , nem loadkeys , nem tocar /etc/vconsole.conf .

  2. setxkbmap symmetri para usá-lo. Mudanças aplicadas. Coloque em /etc/profile.d/symmetri.sh para usá-lo no perfil do usuário.

  3. Efetue logout e, quando tento efetuar login, ele para de funcionar e recebo o QWERTY.

  4. Eu faço o login com o QWERTY e, em seguida, uso o Symmetri agora, porque o script é extraído após o login bem-sucedido.

  5. Abra o terminal, mudo de volta para us por setxkbmap us ,

E então,

localectl set-x11-keymap symmetri

Desta vez, o layout não é alterado. localectl set-keymap symmetri nenhum.

    
por WesternGun 29.05.2018 / 17:47

2 respostas

0

@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)

  1. link
por 04.06.2018 / 16:32
2

você pode usar

localectl set-x11-keymap ***

Isso será permanente para o console e a área de trabalho; uma configuração mais detalhada pode ser encontrada na página de manual link

    
por 29.05.2018 / 22:32