Como altero os teclados na linha de comando?

65

Como altero os layouts de teclado na linha de comando? Por exemplo, quero mudar de inglês para hebraico. Sou capaz de fazê-lo no lightdm com o pequeno ícone no canto da minha tela.

Eyal
fonte

Respostas:

43

Do terminal

Inglês para hebraico e vice-versa com Alt+Shift

setxkbmap -option grp:alt_shift_toggle us,il

Você pode ver todos os alias de localidade com este comando

cat /etc/locale.alias

Mais informações sobre setxkbmap no manual

man setxkbmap
NickTux
fonte
Informações sobre como configurá-lo na inicialização: wiki.gentoo.org/wiki/Keyboard_layout_switching
Adriano P -
52

Você pode encontrar todos os mapas de teclas diferentes nos seguintes locais:

/usr/share/keymaps/i386/
/usr/share/kbd/keymaps/i386/
/usr/share/X11/xkb/symbols/

Para alterar o layout do teclado (por exemplo, para espanhol) na linha de comando do Linux, digite o seguinte comando:

loadkeys es

Para X:

setxkbmap es

Para tornar essas alterações amplas no sistema, supondo que você esteja usando o Ubuntu, você pode usar o seguinte:

sudo dpkg-reconfigure console-setup
Dr_Bunsen
fonte
Isso tem efeito em tty1, tty2, etc, mas não tem efeito no X. Quero fazê-lo no X, da mesma maneira que o comutador de teclado do lightdm funciona.
Oct12
Eu adicionei um comando na resposta, era isso que você estava procurando?
Dr_Bunsen
SIM! Obrigado. Além disso, você pode atualizar sua resposta para mencionar as chaves de carregamento, escritas com um 's'?
Oct12
2
sim eu vou, e não, obrigado. Basta marcar como resolvido para que todos saibam.
22812 Dr_Bunsen
para usuários redhat, a seguir estão as peças valiosas: /usr/share/X11/xkb/symbols/esetxkbmap es
Peter Butkovic
13

Ubuntu 13.10 ou posterior

Isso funciona melhor que o setxkbmap com o indicador de layout do teclado Gnome / Unity.

gsettings set org.gnome.desktop.input-sources current 0

0 é o índice do layout (0 padrão ou layout superior). Layouts indexados a partir de 0.

Para facilitar o uso, crie um alias.

user.dz
fonte
2
Esta resposta é superior porque na verdade altera o indicador. Apenas o que eu estava procurando.
Ainar-G
11
obrigado. usei sua resposta também aqui: askubuntu.com/a/984981/6193
Alexey
3
Isso não funciona no GNOME 3.26. Diz "Esta chave está obsoleta e ignorada".
hugomg
@ hugomg, agora ainda não tenho acesso ao gnome mais recente. mas você pode tentar usar a dconf-editorferramenta e verificar /org/gnome/desktop/. eles podem apenas mudar o nome.
user.dz
12
setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"

esse comando permite alternar entre inglês e hebraico apenas por right alt+ shifte resgatar você de left alt+ shift.

ansar313
fonte
3

Parece não haver uma ferramenta CLI padrão, mas o xkb-switch é uma pequena ferramenta de código aberto para fazer o trabalho. Apenas o testei com o Ubuntu 16.04.4 LTS e funciona perfeitamente.

$ xkb-switch       # display current group
ua
$ xkb-switch -l    # list groups
us
ua
$ xkb-switch -s us # switch to a named group
$

Isso parece melhor do que as outras soluções, porque setxkbmap <name>destrói todas as opções e setxkbmap -layout <name>, apesar de preservar as opções, ainda não altera o indicador da barra de tarefas nem o grp_ledconjunto de configurações.


Embargo

Se seus ~/.config/kxkbrcusos LayoutLoopCount(por exemplo, estiverem configurados para menos do que o número total de layouts listados em LayoutList), desta forma:

LayoutList=us,ua,th,de
LayoutLoopCount=2
Options=grp_led:scroll,grp:rwin_switch,compose:menu,lv3:ralt_switch,
        nbsp:level2,grp:rctrl_toggle,misc:typo

então xkb-switchsó permitem alternar entre os layouts no grupo atual.


Chamar no bloqueio de tela

Notei seu comentário:

Logo antes do meu protetor de tela ser ativado, desejo mudar para o inglês para facilitar a digitação da minha senha quando voltar.

Esse era precisamente meu objetivo, então aqui está a resposta:
Para fazer isso, você só precisa envolvê-lo em um script que dbus-monitorgoste dos discutidos aqui .

bytebuster
fonte
3

Usando gsettings no 18.04+ com o Gnome, você pode adicionar layouts de teclado e alternar entre eles na linha de comando ou no alternador de layout de teclado na área de trabalho.

1.Layouts e opções de teclado presentes:

$ gsettings list-recursively org.gnome.desktop.input-sources
org.gnome.desktop.input-sources show-all-sources false
org.gnome.desktop.input-sources xkb-options ['terminate:ctrl_alt_bksp']
org.gnome.desktop.input-sources per-window false
org.gnome.desktop.input-sources current uint32 1
org.gnome.desktop.input-sources mru-sources @a(ss) []
org.gnome.desktop.input-sources sources [('xkb', 'es'), ('xkb', 'no')]

2.Adicionando layouts de teclado:

$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'no'),('xkb','gr')]"
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'es'), ('xkb', 'no'), ('xkb', 'gr')]

3. Alterando o layout do teclado atual na linha de comando:

$ gsettings set org.gnome.desktop.input-sources current 1

Como agora temos três idiomas diferentes, temos três opções de 0 a 2, sendo 1 espanhol, 2 norueguês e 3 grego. Assim, a configuração atual como 1 acima torna o norueguês o layout de teclado atual.

4. Listando todos os layouts de teclado possíveis:

cat //usr/share/X11/xkb/rules/base.lst

5.Alterando o layout do teclado com um atalho de teclado:

Um atalho de teclado é pré-configurado para alterar o layout do teclado. O atalho atual:

$ gsettings get org.gnome.desktop.wm.keybindings switch-input-source
['<Super>space']

Um novo atalho pode ser definido usando gsetting set, mas tome cuidado para não usar um atalho que já esteja em uso. Para listar todos os atalhos em uso:

$ gsettings list-recursively org.gnome.desktop.wm.keybindings
org.gnome.desktop.wm.keybindings cycle-windows-backward ['<Shift><Alt>Escape']
org.gnome.desktop.wm.keybindings minimize ['<Super>h']
org.gnome.desktop.wm.keybindings move-to-workspace-7 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-8 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-9 @as []
org.gnome.desktop.wm.keybindings move-to-monitor-left ['<Super><Shift>Left']
...
ElToro1966
fonte
Esta é a resposta mais abrangente, parabéns por isso.
Julien Chappuis
1

Para o Ubuntu 18.04 + Gnome, as outras respostas não funcionaram para mim, mas o seguinte:

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"

O argumento em "inputSources [0]" é o índice do layout do teclado, o mesmo da solução gsettings.

Encontrei no Linux StackExchange .

1mi
fonte
-1

Apenas por curiosidade, por que você faria isso? Por que você abriria um terminal e eles digitaram um comando para mudar o layout do teclado quando você pode fazer isso com um simples atalho de teclado! Supondo que você usar o Ubuntu, ele vai como Windows+Space

EetSandhu
fonte
2
Parece ser mais um comentário e menos uma resposta.
WinEunuuchs2Unix 26/02
Logo antes de meu protetor de tela se acende, eu quero mudar para Inglês, para que ele vai ser fácil para digitar minha senha quando eu voltar.
Eyal
Também é útil para fazer personalizados atalhos de teclado
Vassilis
Isso não funciona no Ubuntu 16.04 em uma caixa virtual.
Juha Untinen