Hola colegas
Quiero compartir mi solución al problema que se indica en el título. Me inspiré para escribir este artículo en un colega.
Descripción del problema
Utilicé Ubuntu 18.04 para trabajar y recientemente noté que al cambiar diseños usando alt+shift en aplicaciones como Visual Studio Code, Skype, Slack y otras que se crearon con Electron, ocurre el siguiente problema: el foco del campo de entrada va a la parte superior panel de la ventana (menú). Por otras razones, me mudé a Fedora + KDE y me di cuenta de que el problema no había desaparecido. Mientras buscaba una solución, encontré un artículo maravilloso.
Traté de entender lo que está mal
Entonces decidí tomarme el tiempo para descubrir qué estaba pasando. Ahora describiré brevemente el camino que tomé, tal vez alguien con más conocimiento en este tema pueda ayudarme a explicar las dificultades que encontré.
Abrí Visual Studio Code y comencé a presionar diferentes combinaciones Alt+<%something%> para ver cómo respondía la aplicación. En casi todos los casos, todas las combinaciones excepto Alt+Shift funcionaron sin perder el foco. Parecía que alguien se estaba comiendo el Shift presionado, que siguió después de mantener presionado Alt, y la aplicación pensó que presioné Alt, luego no presioné nada, solté Alt y con alegría me centró en su menú, lo que parecía bastante lógico. él.
Abrí la configuración para cambiar la distribución del teclado (ya sabes, esta larga lista con casillas de verificación y todo tipo de configuraciones para las teclas) y la configuré para cambiar la distribución usando el botón Alt, sin ningún clic adicional.
Después de eso, Alt+Tab para cambiar de ventana dejó de funcionar. Solo funcionó Tab, es decir, alguien “se comió” mi Alt nuevamente. No quedaban dudas sobre quién era ese “alguien”, pero no tenía idea de qué se podía hacer con él.
Pero como el problema tenía que resolverse de alguna manera, entonces se me ocurrió una solución:
- En la configuración, desactive la tecla de acceso rápido para cambiar la distribución del teclado (desmarque todas las casillas de verificación en la sección Cambiar a otra distribución);
- Crea tu propia tecla de acceso rápido que cambiaría el diseño por mí.
Descripción de la solución
Primero, instalemos un programa que le permita asignar comandos a las teclas Xbindkeys. Desafortunadamente, las herramientas estándar no me permitieron crear una tecla de acceso rápido para una combinación como Alt+Shift a través de una hermosa interfaz. Se puede hacer con Alt+S, Alt+1, Alt+shift+Y, etc. etc., pero esto no es adecuado para nuestra tarea.
sudo dnf install xbindkeysrc
Más detalles al respecto están disponibles en
A continuación, crearemos un archivo de configuración de muestra para el programa. El ejemplo es bastante corto, con algunos comandos, justo lo que necesitas para descubrir cómo trabajar con él:
xbindkeys -d > ~/.xbindkeysrc
Como puede ver en el ejemplo del archivo, debemos indicar la tecla de acceso rápido que queremos usar y el comando que se debe ejecutar. Parece sencillo.
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
Como tecla de acceso rápido, puede utilizar escritura legible por humanos o utilizar códigos de tecla. A mí me funcionó solo con códigos, pero nadie te prohíbe experimentar un poco.
Para obtener los códigos necesitas usar el comando:
xbindkeys -k
Se abrirá una pequeña ventana "X". ¡Solo necesita presionar las teclas cuando el foco esté en esta ventana! Sólo en este caso verás algo como esto en la terminal:
[podkmax@localhost ~]$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
m:0x4 + c:39
Control + s
En mi caso, la combinación de teclas Alt+Shift se ve así:
m:0x8 + c:50
Ahora debemos asegurarnos de que cuando haga clic en esta combinación, el diseño cambie. Solo encontré un comando funcional para especificar el diseño:
setxkbmap ru
setxkbmap us
Como puede ver en el ejemplo, solo puede habilitar uno u otro diseño, por lo que no se me ocurrió nada más que escribir un guión.
vim ~/layout.sh
#!/bin/bash
LAYOUT=$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')
if [ "$LAYOUT" == "ru" ]
then `/usr/bin/setxkbmap us`
else `/usr/bin/setxkbmap ru`
fi
Ahora, si los archivos .xbindkeysrc y layout.sh están ubicados en el mismo directorio, la vista final del archivo .xbindkeysrc se verá así:
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
# specify a mouse button
"xterm"
control + b:2
#А вот то, что добавил я
"./layout.sh"
m:0x8 + c:50
Después de eso aplicamos los cambios:
xbindkeys -p
Y puedes comprobarlo. No olvide desactivar cualquier opción para cambiar diseños en la configuración estándar.
Total
Colegas, espero que este artículo pueda ayudar a alguien a deshacerse rápidamente de un problema molesto. Personalmente, pasé todo el día libre tratando de descubrir y resolver el problema de alguna manera, para no distraerme más durante las horas de trabajo. Escribí este artículo para ahorrarle tiempo y nervios a alguien. Muchos de ustedes utilizan un método alternativo para cambiar de diseño y no entienden cuál es el problema. Personalmente me gusta cambiar con Alt+Shift. Y así es como quiero que funcione. Si comparte mi opinión y se enfrenta a este problema, este artículo debería ayudarle.
Fuente: habr.com