Resoldre el problema de canviar mitjançant alt+shift a Linux, en aplicacions Electron

Hola companys!

Vull compartir la meva solució al problema que s'indica al títol. Em vaig inspirar per escriure aquest article per un company brnovk, que no va ser mandrós i va oferir una solució parcial (per a mi) al problema. Vaig fer la meva pròpia "muleta" que em va ajudar. Estic compartint amb tu.

Descripció del problema

Vaig utilitzar Ubuntu 18.04 per treballar i recentment em vaig adonar que quan canviava de disseny amb alt+shift en aplicacions com Visual Studio Code, Skype, Slack i altres que es van crear amb Electron, es produeix el següent problema: el focus del camp d'entrada va a la part superior panell de la finestra (menú). Per altres motius, em vaig traslladar a Fedora + KDE i em vaig adonar que el problema no havia desaparegut. Mentre buscava una solució, he trobat un article meravellós Com arreglar Skype tu mateix. Moltes gràcies camarada brnovk, que va parlar detalladament del problema i va compartir el seu mètode per resoldre'l. Però el mètode indicat a l'article va resoldre el problema amb només una aplicació, és a dir, Skype. Per a mi, també va ser fonamental entendre Visual Studio Code, perquè escriure missatges amb un menú de salt, encara que molest, no és tant si estàs involucrat en el desenvolupament. A més, un col·lega va suggerir una solució en què el menú de l'aplicació desapareix completament i realment no voldria perdre el menú a VS Code.

Intentava entendre què passava

Així que vaig decidir prendre el temps per esbrinar què estava passant. Ara descriuré breument el camí que vaig seguir, potser algú més coneixedor en aquest tema m'ajudarà a explicar les dificultats que vaig trobar.

Vaig obrir Visual Studio Code i vaig començar a fer clic a diferents combinacions Alt+<%alguna cosa%> per veure com responia l'aplicació. En gairebé tots els casos, totes les combinacions excepte Alt+Maj funcionaven sense perdre el focus. Semblava que algú estava menjant la majúscula premuda, que va seguir després de mantenir premuda Alt, i l'aplicació va pensar que vaig prémer Alt, després no vaig prémer res, va deixar anar Alt i em va centrar alegrement al seu menú, cosa que semblava bastant lògic això.

Vaig obrir la configuració per canviar la disposició del teclat (ja saps, aquesta llarga llista amb caselles de selecció i tot tipus de paràmetres per a tecles) i la vaig configurar per canviar de disseny mitjançant el botó Alt, sense cap clic addicional.

Resoldre el problema de canviar mitjançant alt+shift a Linux, en aplicacions Electron

Després d'això, Alt+Tab per canviar de finestres va deixar de funcionar. Només va funcionar Tab, és a dir, algú va tornar a "menjar-se" el meu Alt. No quedaven preguntes sobre qui era aquest "algú", però no tenia ni idea de què es podia fer amb ell.

Però com que el problema s'havia de resoldre d'alguna manera, va venir a la ment una solució:

  1. A la configuració, desactiveu la tecla d'accés ràpid per canviar la disposició del teclat (desmarqueu totes les caselles de selecció a la secció Canvia a un altre disseny);
  2. Creeu la vostra pròpia tecla d'accés ràpid que canviaria el disseny per a mi

Descripció de la solució

Primer, instal·lem un programa que us permeti assignar ordres a les tecles Xbindkeys. Malauradament, les eines estàndard no em van permetre crear una tecla d'accés ràpid per a una combinació com Alt+Maj mitjançant una bella interfície. Es pot fer per Alt+S, Alt+1, Alt+Maj+Y, etc. etc., però això no és adequat per a la nostra tasca.

sudo dnf install xbindkeysrc

Més detalls al respecte estan disponibles a ArchWiki
A continuació, crearem un fitxer de configuració de mostra per al programa. La mostra és força curta, amb unes quantes ordres, just el que necessiteu per esbrinar com treballar-hi:

xbindkeys -d > ~/.xbindkeysrc

Com podeu veure a l'exemple del fitxer, hem d'indicar la tecla d'accés ràpid que volem utilitzar i l'ordre que s'ha d'executar. Sembla senzill.


# Examples of commands:
"xbindkeys_show"
  control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

Com a tecla d'accés ràpid, podeu utilitzar escriptura llegible per l'home o utilitzar codis de tecla. Només em va funcionar amb codis, però ningú et prohibeix experimentar una mica.

Per obtenir els codis, heu d'utilitzar l'ordre:

xbindkeys -k

S'obrirà una petita finestra "X". Només heu de prémer les tecles quan el focus està en aquesta finestra! Només en aquest cas veureu alguna cosa com això al 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 el meu cas, la combinació de tecles Alt+Maj és el següent:

m:0x8 + c:50

Ara ens hem d'assegurar que quan feu clic a aquesta combinació, el disseny canvia. Només he trobat una ordre de treball per especificar el disseny:


setxkbmap ru
setxkbmap us

Com podeu veure a l'exemple, només pot habilitar un disseny o un altre, així que no em va venir al cap res més que escriure un guió.


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

Ara, si els fitxers .xbindkeysrc i layout.sh es troben al mateix directori, la vista final del fitxer .xbindkeysrc és el següent:


# 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

Després d'això, apliquem els canvis:


xbindkeys -p

I pots comprovar. No oblideu desactivar qualsevol opció per canviar de disseny a la configuració estàndard.

Total

Col·legues, espero que aquest article pugui ajudar algú a desfer-se ràpidament d'un problema molest. Personalment, em vaig passar tot el dia lliure intentant esbrinar i resoldre el problema d'alguna manera, de manera que ja no em distregués durant l'horari laboral. He escrit aquest article per estalviar temps i nervis a algú. Molts de vosaltres feu servir un mètode alternatiu per canviar de disseny i no enteneu quin és el problema. Personalment, m'agrada canviar amb Alt+Maj. I així és com vull que funcioni. Si compartiu la meva opinió i us trobeu davant d'aquest problema, aquest article us hauria d'ajudar.

Font: www.habr.com

Afegeix comentari