¿Cómo cambio la distribución del teclado actualmente seleccionada desde la línea de comandos?

12

Tengo mis diseños de teclado (dos de ellos) y el cambio entre ellos está configurado mediante el siguiente comando:

setxkbmap -layout us,ru -option -option "grp:lctrl_lshift_toggle,ctrl:nocaps"

Ahora quiero cambiar al usdiseño, usando algún comando de línea de comando. ¿Es eso posible?

Rogach
fuente

Respuestas:

13

Puede usar xkb-switch ( -ncambia al siguiente diseño):

xkb-switch -n

o xkblayout-state (con set +1para envolver, en su caso):

xkblayout-state set +1

o xtedesde xautomation para simular Control_L+ Shift_Lpresionar / soltar la tecla:

xte 'keydown Control_L' 'keydown Shift_L' 'keyup Shift_L' 'keyup Control_L'
don_crissti
fuente
xkblayout-state es genial, gracias! Solo lo uso xkblayout-state set 1, y al instante obtengo el usdiseño.
Rogach
2

Las búsquedas de Stack Exchange para kbdmap encuentran esta página sin mencionar esa palabra. Para mayor claridad, aquí hay una respuesta (no encaja exactamente con la etiqueta X11 de la pregunta, pero debería ayudar a alguien) ...

Cuando se limita a una consola virtual

- sin X.

kbdmap (1)

kbdmap, vidfont- interfaz para syscons y vt

... permite configurar fácilmente los mapas de teclas disponibles ...

En verdad, es fácil y (para mí, cambiar a un diseño de teclado del Reino Unido) efectivo.

Cuando use X

- por ejemplo, con TrueOS Desktop basado en FreeBSD.

Desde la publicación 5 bajo ¿ Cambiar la distribución del teclado? El | Los foros de FreeBSD (2015-08-03):

kbdmapes para la consola setxkbmapes la utilidad que deseas para X11. ...

Hay una advertencia, por ejemplo cuando se cambia a U nidas Unido:

$ kbdmap
kbdcontrol: getting keymap: Inappropriate ioctl for device
You are not on a virtual console - expect certain strange side-effects
lang_default = en
dialect = en_...UTF-8
lang_abk = en

…

keymap="uk.kbd"
$ 
Graham Perrin
fuente
1

Dependiendo de la distribución de los diseños de teclado, el comando es

loadkeys <path/to/file>

loadkey /lib/kbd/keymaps/i386/qwerty/pt_PT.map.gz

Si recuerdo correctamente. Compruebe también la página de manual de las teclas de carga si desea asignar claves específicas a un comportamiento específico.

BitsOfNix
fuente
El problema es que después de hacerlo (por ejemplo) loadkeys us, restablece la configuración que creé con setxkbmap (dos diseños y cambio entre ellos)
Rogach
Por lo que sé, este es el comando para cambiar los diseños, si tiene un específico, entonces supongo que la mejor manera sería tener un alias en su shell que llamaría a las teclas de carga con su configuración. ex: load_us cargaría el teclado de EE. UU. y en realidad llamaría a la tecla de carga /lib/kbd/keymaps/i386/qwerty/us.map.gz o similar. Y lo mismo para el otro diseño.
BitsOfNix
Pero, ¿cómo cambiaría la configuración del teclado después? Actualmente, cambio los diseños presionando Ctrl-Shift, usando las teclas de carga lo atornilla.
Rogach
Hagamos un paso atrás aquí, desde la línea de comandos, supongo que está mencionando un terminal tty. Lo que significa que no está utilizando xterm / terminology / gnome-terminal o cualquier otro emulador, pero de hecho está en un entorno sin servidor X. Tomando esto, entonces necesita usar las teclas de carga, según su pregunta, le di la línea de comando, lo que realmente quiere parece ser un atajo de teclado. Si tiene claves específicas para mapear, entonces necesita crear sus propios diseños y cargarlos luego en una solicitud con claves de carga desde un punto de vista cli. Si desea un acceso directo en su lugar, actualice su pregunta.
BitsOfNix
No, de hecho, estoy usando un entorno gráfico y gnome-terminal en particular. Es solo que necesito cambiar el diseño X programáticamente, en reacción a algunos eventos, por lo tanto, las cosas no funcionarán.
Rogach
0

Eche un vistazo a este artículo sobre cómo falsificar titulado: Cambio del idioma y la distribución del teclado en varias distribuciones , para que los diversos comandos cambien la distribución del teclado en diferentes distribuciones.

La mayoría de estos comandos se presentan como GUI, pero si observas, la mayoría de ellos también se pueden ejecutar desde la línea de comandos. Por ejemplo, estoy usando Fedora (una distribución basada en Red Hat). El comando system-config-keyboardcuando se ejecuta sin argumentos me muestra una GUI.

Pero si ejecuto, system-config-keyboard --helptambién se puede ejecutar desde la línea de comandos:

$ system-config-keyboard --help
Usage: system-config-keyboard [--help] [--noui] [--text] [<keyboardtype>]
       --help            Print out this message.
       --noui            Run in command line mode.
       --text            Run in text interface mode.

       <keyboardtype> options are: ar-azerty, ar-azerty-digits, ar-digits, ar-qwerty, ar-qwerty-digits, be-latin1, ben, ben-probhat, bg_bds-utf8, bg_pho-utf8, br-abnt2, cf, croat, cz-lat2, cz-us-qwertz, de, de-latin1, de-latin1-nodeadkeys, dev, dk, dk-latin1, dvorak, es, et, fi, fi-latin1, fr, fr-latin1, fr-latin9, fr-pc, fr_CH, fr_CH-latin1, gr, guj, gur, hu, hu101, ie, is-latin1, it, it-ibm, it2, jp106, ko, la-latin1, mk-utf, nl, no, pl2, pt-latin1, ro, ro-cedilla, ro-std, ro-std-cedilla, ru, sg, sg-latin1, sk-qwerty, slovene, sr-cy, sr-latin, sv-latin1, tj, tml-inscript, tml-uni, trq, ua-utf, uk, us, us-acentos

Entonces, para cambiar la distribución de mi teclado a ruso, podría ejecutar el siguiente comando:

$ system-config-keyboard ru
slm
fuente