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

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

Eu percebo que 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/.profilepara torná-lo disponível quando fizermos login, comoessa questãodescreve.

Mas, quando fazemos isso, antes de fazer o login, o layout do teclado ainda não está disponível. Se quisermos utilizá-lo nesta fase, qual o caminho a seguir? Estou usando GDM no Centos7.

O que eu tentei:

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

  2. setxkbmap symmetripara usá-lo. Alterações aplicadas. Coloque-o /etc/profile.d/symmetri.shpara usá-lo no perfil do usuário.

  3. Sai e quando tento fazer login, ele para de funcionar e recebo QWERTY.

  4. Eu faço login com QWERTY e uso Symmetri agora, porque o script é obtido após login bem-sucedido.

  5. Terminal aberto, volto para usby setxkbmap us,

E então,

localectl set-x11-keymap symmetri

Desta vez, o layout não foi alterado. localectl set-keymap symmetrinenhum.

Responder1

você pode usar

localectl set-x11-keymap ***

Isso será permanente para o console e desktop, configurações mais detalhadas podem ser encontradas na página de manualhttps://www.unix.com/man-page/centos/1/LOCALECTL/

Responder2

@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 o 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 por precaução .../X11/xkb/rules/evdev.lst, porque de acordo com algumas fontes, o lstarquivo é a versão compilada de xml, mas eu duvido que todos os processos que dependem desses arquivos apenas leiam xmlarquivos, então adiciono ambos; na verdade, xmltem 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, está abaixo de /usr/share/; no Ubuntu <= 8.08, está abaixo de /etc/. 1 Estranho.)

2. No final dos nós filhos de <layoutList>, adicione esta parte:

(altere 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 seu teclado não tiver variante, <variantList>a parte pode ser de fechamento automático, como: <variantList />.

Nota: iso639Iddeve ter 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 defini English(U.S)como idioma do meu sistema, então preencho usaqui.

3. Salve-o e abra o arquivo .../X11/xkb/rules/evdev.lst.

4. No final de ! layout, adicione o nome do seu layout. Como:

symmetri        Symmetri layout (CN, EN and ES)

! variant5. Se o layout do seu teclado tiver variante, adicione-a também no final de .

non-prog        symmetri: non-programmer

O nome da variante deve coincidir com as informações acima no arquivo xml. (Enquanto eu testo, localectl list-x11-keymap-variantsvouapenasleia este arquivo em vez de ler o xml, deve ser um erro/bug.)

6. Você pode fazer o mesmo com base.xmle 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 

localectlpode list-x11-keymap-layoutse list-x11-keymap-variants, mas você não pode definir variante com ele; apenas setxkbmappode.

Com esta configuração, agoraapó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 o fará!) Mas, após o login bem-sucedido, o gerenciador de desktop assumirá o controle e, se você não configurar o novo layout do teclado no arquivo $HOME/.bashrc/ $HOME/.profile(para usuário único)/ /etc/profile.d/xxx.sh/ /etc/profile(para todos os usuários), vocênãoobtenha seu novo layout de teclado depois de sair e fazer login novamente !!!! Então essas mudanças vãoapenaspersistir antes do primeiro login bem-sucedido... você deve usar .bashrcscripts de perfil para informar ao servidor X: "não apenas antes do login, mas também após o login, eu quero isso para todos os usuários!" Cuidado: com essa mudança, mesmo que você saia e mude de usuário, o layout será o alterado e não o qwerty(us).

Realmente frustrante... deve haver uma maneira mais fácil, mas não consigo encontrar.

Referências:(leitura obrigatória)

  1. http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11

informação relacionada