2 y más grupos de distribución de teclado en Linux cambiados por diferentes teclas de acceso rápido

2

Entonces, esto es algo con lo que he estado soñando durante años. Esporádicamente busqué una solución en Google, pero nunca encontré nada. Una vez, alguien en IRC me dijo que es posible, pero nunca vi realmente cómo se podría hacer esto.

Esto es lo que quiero.

Utilizo diseños de teclado en y ru como dos idiomas principales de entrada con los que trabajo a diario. Yo uso Shift+ Caps_Lockpara alternar estos diseños. A veces necesito escribir ua y pl, y quiero tenerlos en un grupo separado de diseños que se alternarían presionando say L_Win+ Caps_Lock.

Entonces, cada vez que presiono L_Win+ Caps_Lock, empiezo a alternar entre ua y pl, y cuando necesito volver a mi grupo estándar de en y ru, presiono Shift+ Caps_Lock.

Esta descripción no está vinculada de ninguna manera a una comprensión real de cómo funciona el marco de conmutación de distribución de teclado existente. Solo soy yo imaginando el escenario ideal.

Bueno, queridos súper usuarios, ¿se puede hacer esto en Linux? Si es así, ¿cómo?

YO LIV
fuente

Respuestas:

2

Hice una pequeña mejora para este script. Ahora no rompe el conmutador de teclado WM. Funciona un poco diferente como TS quiere, pero creo que es más conveniente de esta manera, al menos para mí.

Debe cambiar el modelo y las opciones del teclado si lo desea

#!/bin/sh
current=`setxkbmap -query | grep layout|cut  -d ',' -f 2`
if [ "$current" == 'pl' ]
then 
    notify-send -t 1500 -i keyboard "Keyboard layouts: EN / RU"
    setxkbmap -model logitech_base -layout en,ru -variant , -option grp:caps_toggle,compose:rwin
else 
    notify-send -t 1500 -i keyboard "Keyboard layouts: UA / PL"
    setxkbmap -model logitech_base -layout ua,pl -variant , -option grp:caps_toggle,compose:rwin
fi
izbushka
fuente
Parece que nunca vas a salir del grupo EN / RU, porque una vez que estás en UA / PL, entras en EN / RU y estás atrapado allí para siempre. PD: tal vez no; D
ILIV
Bueno, tengo CapsLock como conmutador de groop. Cambia entre EN / RU. Cuando necesito UA / PL ejecuto ese script (asignado a CTRL + Caps) y uso Caps para cambiar entre UA / PL. Otro Ctrl + Caps restaura los diseños a EN / RU. En realidad lo uso solo para 3 langs: grupos EN / RU y EN / UA.
izbushka
1

La forma más fácil probablemente sería usar el conmutador de distribución de teclado de su administrador de ventanas para sus diseños principales (en y ru) y luego usar el siguiente script asignado a L_Win+ Caps_Lock:

#!/bin/bash 

current=`setxkbmap -query | grep layout | fold -s2 | tail -n 1`
if [ "$current" == 'ua' ]
then
    setxkbmap -layout pl
else
    setxkbmap -layout ua
fi

Si guarda la secuencia de comandos como toggle_layout.sh, hágalo ejecutable y asigne el atajo de teclado deseado con las herramientas del administrador de ventanas, debe hacer lo que necesita. El script solo verifica si actualmente está utilizando el uadiseño y, si no, cambia a pl.


ACTUALIZAR:

Lo hice funcionar de la siguiente manera:

  1. Asigne el script anterior a Ctrl+ 8(eso es el teclado 8)
  2. Cree otra secuencia de comandos para alternar entre los diseños principales:

    #!/bin/bash 
    
    current=`setxkbmap -query | grep layout | fold -s2 | tail -n 1`
    if [ "$current" == 'en' ]
    then
        setxkbmap -layout ru
    else
        setxkbmap -layout en
    fi
    
  3. Asigne la secuencia de comandos del paso 2 a Ctrl+ 2(eso es el teclado 2).

Asegúrese de usar teclas que no cambien cuando cambie el diseño (es por eso que usé el teclado en este ejemplo). No sé si puede hacer esto sin romper la forma nativa de WM de cambiar los diseños, pero al menos esto debería funcionar.

terdon
fuente
Gracias por una rápida respuesta. Lo intentaré. Sin embargo, tengo mucha curiosidad si esto se puede hacer simplemente configurando el software estándar existente (como xorg-xkbutils / GNOME).
ILIV
@ILIV, AFAIK, no es posible establecer dos atajos de teclado diferentes para cambiar de teclado. Todo lo que estoy usando aquí es el estándar setxkbmap. Dudo que puedas hacerlo más simple que eso.
terdon
Sí, es una solución bastante buena, que tengo que probar todavía jajaja, ¡y casi me da vergüenza no haberlo pensado! Estaba demasiado concentrado en hacerlo configurando xkbutils / DE. Estoy realmente tan emocionado de que hayas respondido, porque si esto funciona bien, este es un sueño hecho realidad: P
ILIV
Aquí está el problema con su enfoque. Una vez que ejecuto setxkbmap en la terminal, pierdo los diseños de teclado, pero pasé uno como argumento a la opción -layout.
ILIV
@ILIV, tienes toda la razón, parece romper el método nativo de WM de cambiar diseños. Vea mi respuesta actualizada para una solución alternativa. Funciona bien en mi máquina LMDE cuando cambio entre el, es, en y ua.
terdon