Como posso alterar programaticamente o layout do teclado?

6

Eu quero executar um comando shell ou script que irá configurar cada uma das minhas caixas do Ubuntu Precise para usar o layout do teclado Dvorak como o layout padrão (e somente). Com versões anteriores, eu era capaz de definir o XKBVARIANT em / etc / default / keyboard, mas quando eu faço essa mudança em Precise (e reinicialização), o layout do teclado parece não ser afetado (tanto no console quanto no gnome).

Eu também tentei configurar o XKBMODEL para pc105 e XKBLAYOUT, mas isso não pareceu ajudar.

Eu sei que posso definir o layout do gnome usando a ferramenta 'layout de teclado' ... mas quero que a alteração afete o console e quero automatizar o processo. Como posso conseguir isso?

Editar:

Para esclarecer, quero saber como posso alterar (usando apenas um script ou linha de comando) o layout do teclado para ser Dvorak como padrão e somente layout de teclado para o Gnome e o console. Eu quero que essa mudança seja persistente (sobreviver a reinicializações), assim como acontece quando a alteração é feita através da ferramenta Layout do Teclado.

Editar:

Deixe-me colocar de outra forma. Se eu tivesse instalado o sistema operacional sozinho (o que eu não fiz porque o sistema operacional foi instalado pela infraestrutura da máquina virtual), eu poderia ter selecionado o layout de teclado desejado no momento da instalação e esse layout seria aplicado persistentemente em todo o sistema. Como posso alterar o layout para aparecer como se eu tivesse configurado durante o processo de instalação?

    
por Jason R. Coombs 11.05.2012 / 05:11

4 respostas

3

Eu também uso o Ubuntu 12.04 e enfrentei esse problema. Usando a resposta de Jason Coombs à sua própria pergunta como ponto de partida, eu pude usar o / etc / default / keyboard para definir minhas opções de teclado (para mim, ctrl: nocaps e compose: menu) e ter que persistir entre reinicializações para consoles . No entanto, a configuração seria ignorada pelo LightDM / Unity na reinicialização. Para esclarecer, eu não defini nenhuma preferência de teclado dentro do Unity, então o Unity deve ser padronizado para as configurações do teclado padrão do sistema, mas não está usando as opções do teclado por algum motivo.

Percebi que, se eu executar o seguinte comando após o login, o Unity de repente começa a reconhecer as opções de teclado padrão do meu sistema:

setxkbmap

Eu não forneço nenhum parâmetro para o setxkbmap, eu simplesmente o invoco sem opções e ele lê e aplica o mapa padrão do sistema.

Para que isso aconteça automaticamente quando qualquer usuário fizer login (pelo menos, qualquer usuário com um desktop Gnome ou Unity), eu fiz o seguinte arquivo setxkbmap.desktop que eu coloquei no diretório / etc / xdg / autostart /:

[Desktop Entry]
Type=Application
TryExec=/usr/bin/setxkbmap
Exec=/usr/bin/setxkbmap
Hidden=false
NoDisplay=true
X-GNOME-Autostart-enabled=true
Name[en_US]=System Keyboard Fix
Name=System Keyboard Fix
Comment[en_US]=Apply system-wide keyboard settings to the session
Comment=Applies system-wide keyboard settings to session

Essa correção parece tornar as opções de teclado consistentes em todo o sistema, com exceção do breve período em que o LightDM tem controle da minha tela antes de fazer o login.

    
por Robert Lange 22.05.2013 / 21:40
-1

!!! Resposta inacabada !!! (remova este aviso se souber como melhorar esta resposta)

Você pode usar o comando setxkbmap . Por exemplo

setxkbmap de

define o layout atual para alemão. Com

setxkbmap us

você pode configurá-lo para o layout dos EUA.

Aviso: acho que esse comando reconfigura também outras opções de idioma. Por exemplo, o ícone da linguagem desaparece quando executo este comando. Portanto, também é muito difícil mudar de volta para um layout com letras latinas, se você mudou para algo como Cirílico, Chinês, Grego, etc. Mas o comando setxkbmap pode ser uma boa dica para continuar pesquisando como alternar o layout. / p>     

por lumbric 17.05.2012 / 12:20
-1

Se você quiser alterá-lo em tty consoles (aqueles acessíveis através de Ctrl + Alt + F1 ou F2, ...), é:

loadkeys fr

para francês ou para teclado americano:

loadkeys us

No entanto, não tenho certeza se funciona para consoles lançados no modo X.org/graphical (também conhecido como o aplicativo Console do Unity / Gnome ou Konsole do KDE). Você deveria tentar.

    
por maximd 18.05.2012 / 01:08
-1
setxkbmap -option grp:alt_shift_toggle en
    
por Octávio Filipe Gonçalves 17.05.2012 / 12:24