Resolvendo o problema do cambio usando alt+shift en Linux, en aplicacións Electron

Ola compañeiros!

Quero compartir a miña solución ao problema que se indica no título. Inspiroume un compañeiro para escribir este artigo brnovk, que non era preguiceiro e ofreceu unha solución parcial (para min) ao problema. Fixen a miña propia "muleta" que me axudou. Estou compartindo contigo.

Descrición do problema

Usei Ubuntu 18.04 para traballar e recentemente notei que ao cambiar de deseño usando alt+shift en aplicacións como Visual Studio Code, Skype, Slack e outras que se crearon con Electron, ocorre o seguinte problema: o foco do campo de entrada vai cara arriba. panel da xanela (menú). Por outros motivos, mudei a Fedora + KDE e decateime de que o problema non desaparecera. Mentres buscaba unha solución, atopei un artigo marabilloso Como arranxar Skype vostede mesmo. Moitas grazas compañeiro brnovk, que falou detalladamente sobre o problema e compartiu o seu método para resolvelo. Pero o método indicado no artigo resolveu o problema con só unha aplicación, é dicir, Skype. Para min tamén foi fundamental entender Visual Studio Code, porque escribir mensaxes cun menú de salto, aínda que molesto, non é tanto se estás implicado no desenvolvemento. Ademais, un colega suxeriu unha solución na que o menú da aplicación desaparece por completo e non me gustaría perder o menú en VS Code.

Intentou entender o que está mal

Entón, decidín darme tempo para descubrir o que estaba a pasar. Agora describirei brevemente o camiño que empreguei, quizais alguén máis coñecedor neste asunto axude a explicar as dificultades que atopei.

Abrín Visual Studio Code e comecei a pulsar diferentes combinacións Alt+ para ver como respondeu a aplicación. En case todos os casos, todas as combinacións, excepto Alt+Maiús, funcionaron sen perder o foco. Parecía que alguén estaba comendo o Shift pulsado, que seguiu despois de manter premido Alt, e a aplicación pensou que eu pulsaba Alt, despois non pulsaba nada, soltou Alt e concentrou alegremente no seu menú, o que parecía bastante lóxico para iso.

Abrín a configuración para cambiar a disposición do teclado (xa sabes, esta longa lista con caixas de verificación e todo tipo de opcións para as teclas) e axusteina para cambiar de deseño usando o botón Alt, sen ningún clic adicional.

Resolvendo o problema do cambio usando alt+shift en Linux, en aplicacións Electron

Despois diso, Alt+Tab para cambiar de fiestra deixou de funcionar. Só funcionou Tab, é dicir, alguén "comeu" o meu Alt de novo. Non quedaban preguntas sobre quen era este "alguén", pero non tiña idea de que se podía facer con el.

Pero como o problema tiña que ser resolto dalgún xeito, entón veuse á mente unha solución:

  1. Na configuración, desactive a tecla de acceso rápido para cambiar a disposición do teclado (desmarque todas as caixas de verificación na sección Cambiar a outro deseño);
  2. Crea a túa propia tecla de acceso rápido que cambiaría o deseño por min

Descrición da solución

En primeiro lugar, imos instalar un programa que che permita asignar comandos ás teclas Xbindkeys. Desafortunadamente, as ferramentas estándar non me permitían crear unha tecla de acceso rápido para unha combinación como Alt+Maiús a través dunha fermosa interface. Pódese facer para Alt+S, Alt+1, Alt+shift+Y, etc. etc., pero isto non é axeitado para a nosa tarefa.

sudo dnf install xbindkeysrc

Máis detalles sobre el están dispoñibles en ArchWiki
A continuación, crearemos un ficheiro de configuración de mostra para o programa. A mostra é bastante curta, con algúns comandos, só o que precisa para descubrir como traballar con el:

xbindkeys -d > ~/.xbindkeysrc

Como podes ver no exemplo do ficheiro, necesitamos indicar a tecla de acceso rápido que queremos utilizar e o comando que se debe executar. Parece sinxelo.


# 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, pode usar escritura lexible por humanos ou usar códigos clave. Funcionou para min só con códigos, pero ninguén che prohibe experimentar un pouco.

Para obter os códigos necesitas usar o comando:

xbindkeys -k

Abrirase unha pequena xanela "X". Só tes que premer as teclas cando o foco está nesta fiestra. Só neste caso verás algo así no 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

No meu caso, a combinación de teclas Alt+Maiúsculas é así:

m:0x8 + c:50

Agora temos que asegurarnos de que cando fai clic nesta combinación, o deseño cambia. Só atopei un comando de traballo para especificar o deseño:


setxkbmap ru
setxkbmap us

Como podes ver no exemplo, só pode activar un ou outro deseño, polo que non se me ocorreu nada máis 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

Agora, se os ficheiros .xbindkeysrc e layout.sh están situados no mesmo directorio, entón a vista final do ficheiro .xbindkeysrc ten o seguinte aspecto:


# 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

Despois diso aplicamos os cambios:


xbindkeys -p

E podes comprobar. Non esquezas desactivar calquera opción para cambiar de deseño na configuración estándar.

Total

Compañeiros, espero que este artigo poida axudar a alguén a desfacerse rapidamente dun problema molesto. Persoalmente, pasei todo o meu día libre intentando descubrir e resolver o problema dalgún xeito, para que xa non me distraera durante as horas de traballo. Escribín este artigo para aforrarlle tempo e nervios. Moitos de vostedes usan un método alternativo para cambiar de esquema e non entenden cal é o problema. Persoalmente, gústame cambiar con Alt+Maiús. E así quero que funcione. Se compartes a miña opinión e te enfrontas a este problema, este artigo debería axudarche.

Fonte: www.habr.com

Engadir un comentario