¿Cómo cambio los teclados desde la línea de comando?

65

¿Cómo cambio la distribución del teclado desde la línea de comandos? Por ejemplo, quiero cambiar del inglés al hebreo. Puedo hacerlo desde lightdm con el pequeño ícono en la esquina de mi pantalla.

Eyal
fuente

Respuestas:

43

Desde la terminal

Inglés al hebreo y viceversa con Alt+Shift

setxkbmap -option grp:alt_shift_toggle us,il

Puede ver todos los alias de configuración regional con este comando

cat /etc/locale.alias

Más información sobre setxkbmap en el manual

man setxkbmap
NickTux
fuente
Información sobre cómo configurarlo en el arranque: wiki.gentoo.org/wiki/Keyboard_layout_switching
Adriano P
52

Puede encontrar todos los mapas de teclas diferentes en las siguientes ubicaciones:

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

Para cambiar la distribución del teclado (por ejemplo, al español) en la línea de comandos de Linux, escriba el siguiente comando:

loadkeys es

Para X:

setxkbmap es

Para realizar estos cambios en todo el sistema, suponiendo que esté usando Ubuntu, puede usar lo siguiente:

sudo dpkg-reconfigure console-setup
Dr_Bunsen
fuente
Esto tiene efecto en tty1, tty2, etc., pero no tiene efecto en X. Quiero hacerlo en X, de la misma manera que funciona el conmutador de teclado en lightdm.
Eyal
Agregué un comando en la respuesta, ¿era esto lo que estabas buscando?
Dr_Bunsen
¡SI! Gracias. Además, ¿puede actualizar su respuesta para mencionar las teclas de carga, deletreadas con una 's'?
Eyal
2
Sí lo haré, y no, gracias. Simplemente marque como resuelto para que todos lo sepan.
Dr_Bunsen
para los usuarios de redhat, las siguientes son las piezas valiosas: /usr/share/X11/xkb/symbols/ysetxkbmap es
Peter Butkovic
13

Ubuntu 13.10 o posterior

Esto funciona mejor que setxkbmap con el indicador de diseño del teclado Gnome / Unity.

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

0 es el índice de diseño (0 diseño predeterminado o superior). Diseños indexados a partir de 0.

Para un uso fácil, cree un alias.

user.dz
fuente
2
Esta respuesta es superior porque en realidad cambia el indicador. Justo lo que he estado buscando.
Ainar-G
1
Gracias. usó su respuesta también aquí: askubuntu.com/a/984981/6193
Alexey
3
Esto no funciona en GNOME 3.26. Dice "Esta clave está en desuso e ignorada".
hugomg
@hugomg, en este momento todavía no tengo acceso a un nuevo gnomo. pero puede intentar usar la dconf-editorherramienta y verificar /org/gnome/desktop/. pueden cambiarle el nombre.
user.dz
12
setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"

Este comando le permite alternar entre inglés y hebreo solo mediante right alt+ shifty rescatarlo de left alt+ shift.

ansar313
fuente
3

Parece que no hay una herramienta CLI estándar, pero xkb-switch es una pequeña herramienta de código abierto para hacer el trabajo. Solo lo probé con Ubuntu 16.04.4 LTS y funciona perfectamente.

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

Esto se ve mejor que las otras soluciones porque setxkbmap <name>arruina todas las opciones y setxkbmap -layout <name>, aunque conserva las opciones, todavía no puede cambiar el indicador de la barra de tareas ni el grp_ledconjunto de opciones .


Consideración

Si sus ~/.config/kxkbrcusos LayoutLoopCount(por ejemplo, se establece en menos del número total de diseños enumerados LayoutList), de esta manera:

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

entonces xkb-switchsolo le permitiría cambiar entre los diseños en el grupo actual.


Invocar en el bloqueo de pantalla

Noté tu comentario:

Justo antes de que se active mi protector de pantalla, quiero cambiar al inglés para que sea fácil escribir mi contraseña cuando regrese.

Este era precisamente mi objetivo, así que aquí está la respuesta:
para hacer eso, solo necesita envolverlo en un script que se enganche dbus-monitorcomo se describe aquí .

bytebuster
fuente
3

Usando gsettings en 18.04+ con Gnome, puede agregar agregar diseños de teclado y cambiar entre ellos desde la línea de comandos o desde el conmutador de distribución de teclado en el escritorio.

1. Presentaciones y opciones de teclado actuales:

$ 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.Agregando diseños 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.Cambiando la distribución actual del teclado desde la línea de comando:

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

Como ahora tenemos 3 idiomas diferentes, tenemos tres opciones de 0 a 2, siendo 1 español, 2 noruego y 3 griego. Por lo tanto, establecer la corriente en 1 arriba hace que Norwegian sea la distribución actual del teclado.

4. Listado de todos los diseños de teclado posibles:

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

5. Cambiar el diseño del teclado con un atajo de teclado:

Un atajo de teclado está preconfigurado para cambiar la distribución del teclado. El atajo actual:

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

Se puede establecer un nuevo acceso directo mediante el uso de gsetting set, pero tenga cuidado de no utilizar un acceso directo que ya esté en uso. Para enumerar todos los accesos directos en 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
fuente
Esta es la respuesta más completa, felicitaciones por esto.
Julien Chappuis
1

Para Ubuntu 18.04 + Gnome, las otras respuestas no funcionaron para mí, pero esto sí:

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()"

El argumento en "inputSources [0]" es el índice de la distribución del teclado, lo mismo que para la solución gsettings.

Lo encontré en Linux StackExchange .

1mi
fuente
-1

Solo por curiosidad, ¿por qué harías eso? ¿Por qué abriría un terminal y escribirían un comando para cambiar la distribución del teclado cuando puede hacerlo con un simple atajo de teclado! Asumiendo que usas Ubuntu, va como Windows+Space

EetSandhu
fuente
2
Esto parece ser más un comentario y menos una respuesta.
WinEunuuchs2Unix
Justo antes de mi protector de pantalla se enciende, quiero cambiar a Inglés por lo que será fácil de teclear la contraseña cuando vuelva a.
Eyal
también es útil para hacer atajos de teclado personalizados
Vassilis
Esto no funciona en Ubuntu 16.04 en una caja virtual.
Juha Untinen