Resolviendo el problema con el cambio usando alt+shift en Linux, en aplicaciones Electron

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. brnovk, que no fue perezoso y ofreció una solución parcial (para mí) al problema. Hice mi propia “muleta” que me ayudó. Estoy compartiendo contigo.

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. Cómo arreglar Skype tú mismo. muchas gracias camarada brnovk, quien habló en detalle sobre el problema y compartió su método para solucionarlo. Pero el método indicado en el artículo resolvió el problema con una sola aplicación: Skype. Para mí también fue fundamental entender Visual Studio Code, porque escribir mensajes con un menú saltante, aunque molesto, no es tanto si estás involucrado en el desarrollo. Además, un colega sugirió una solución en la que el menú de la aplicación desaparece por completo y realmente no me gustaría perder el menú en VS Code.

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.

Resolviendo el problema con el cambio usando alt+shift en Linux, en aplicaciones Electron

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:

  1. 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);
  2. 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 Archiwiki
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

Añadir un comentario