Rezolvarea problemei cu comutarea folosind alt+shift în Linux, în aplicațiile Electron

Salut colegi!

Doresc să împărtășesc soluția mea la problema care este indicată în titlu. Am fost inspirat să scriu acest articol de către un coleg brnovk, care nu a fost leneș și a oferit o soluție parțială (pentru mine) problemei. Mi-am făcut propria „cârjă” care m-a ajutat. Împărtășesc cu tine.

Descrierea problemei

Am folosit Ubuntu 18.04 pentru lucru și recent am observat că atunci când comutați layout-urile folosind alt+shift în aplicații precum Visual Studio Code, Skype, Slack și altele care au fost create folosind Electron, apare următoarea problemă: focalizarea din câmpul de intrare merge în partea de sus panoul ferestrei (meniu). Din alte motive, m-am mutat la Fedora + KDE și am realizat că problema nu a dispărut. Căutând o soluție, am găsit un articol minunat Cum să remediați singur Skype. Multumesc mult tovarăşe brnovk, care a vorbit în detaliu despre problemă și a împărtășit metoda sa de a o rezolva. Dar metoda indicată în articol a rezolvat problema doar cu o singură aplicație, și anume Skype. Pentru mine, a fost, de asemenea, esențial să înțeleg Visual Studio Code, deoarece scrierea mesajelor cu un meniu săritor, deși enervant, nu este atât de mult dacă ești implicat în dezvoltare. În plus, un coleg mi-a sugerat o soluție în care meniul aplicației dispare complet și nu mi-aș dori cu adevărat să pierd meniul din VS Code.

Am încercat să înțeleg ce este în neregulă

Așa că am decis să îmi iau timp să-mi dau seama ce se întâmplă. Acum voi descrie pe scurt calea pe care am urmat-o, poate cineva mai informat în această chestiune va ajuta să explice dificultățile pe care le-am întâmpinat.

Am deschis Visual Studio Code și am început să apesez diferite combinații Alt+<%something%> pentru a vedea cum a răspuns aplicația. În aproape toate cazurile, toate combinațiile, cu excepția Alt+Shift, au funcționat fără a pierde focalizarea. Părea că cineva mănâncă Shift apăsat, care a urmat după ce ținea apăsat Alt, iar aplicația a crezut că am apăsat Alt, apoi nu am apăsat nimic, a eliberat Alt și mi-a aruncat cu bucurie atenția în meniul său, ceea ce părea destul de logic pentru aceasta.

Am deschis setările pentru comutarea aspectului tastaturii (știi, această listă lungă cu casete de selectare și tot felul de setări pentru taste) și am setat-o ​​să schimbe aspectul folosind butonul Alt, fără clicuri suplimentare.

Rezolvarea problemei cu comutarea folosind alt+shift în Linux, în aplicațiile Electron

După aceea, Alt+Tab pentru a comuta ferestrele nu mai funcționează. Doar Tab a funcționat, adică cineva mi-a „mâncat” din nou Alt. Nu mai rămăseseră întrebări despre cine era acest „cineva”, dar nu aveam idee ce se putea face cu el.

Dar, din moment ce problema trebuia rezolvată cumva, atunci mi-a venit în minte o soluție:

  1. În setări, dezactivați tasta rapidă pentru comutarea aspectului tastaturii (debifați toate casetele de selectare din secțiunea Comutare la alt aspect);
  2. Creați-vă propria tasta rapidă care ar schimba aspectul pentru mine

Descrierea soluției

Mai întâi, să instalăm un program care vă permite să atribuiți comenzi tastelor Xbindkeys. Din păcate, instrumentele standard nu mi-au permis să creez o tastă rapidă pentru o combinație precum Alt+Shift printr-o interfață frumoasă. Se poate face pentru Alt+S, Alt+1, Alt+shift+Y etc. etc., dar acest lucru nu este potrivit pentru sarcina noastră.

sudo dnf install xbindkeysrc

Mai multe detalii despre acesta sunt disponibile la ArchWiki
În continuare, vom crea un exemplu de fișier de setări pentru program. Eșantionul este destul de scurt, cu câteva comenzi, exact ceea ce aveți nevoie pentru a vă da seama cum să lucrați cu el:

xbindkeys -d > ~/.xbindkeysrc

După cum puteți vedea din exemplul din fișier, trebuie să indicăm tasta rapidă pe care dorim să o folosim și comanda care trebuie executată. Pare simplu.


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

Ca tastă rapidă, puteți utiliza scriere care poate fi citită de om sau coduri de taste. La mine a funcționat doar cu coduri, dar nimeni nu îți interzice să experimentezi puțin.

Pentru a obține codurile, trebuie să utilizați comanda:

xbindkeys -k

Se va deschide o mică fereastră „X”. Trebuie să apăsați tastele doar când focalizarea este pe această fereastră! Numai în acest caz veți vedea așa ceva în 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

În cazul meu, combinația de taste Alt+Shift arată astfel:

m:0x8 + c:50

Acum trebuie să ne asigurăm că atunci când faceți clic pe această combinație, aspectul se schimbă. Am găsit o singură comandă de lucru pentru a specifica aspectul:


setxkbmap ru
setxkbmap us

După cum puteți vedea din exemplu, poate activa doar unul sau altul, așa că nu mi-a venit nimic în minte în afară de scrierea unui script.


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

Acum, dacă fișierele .xbindkeysrc și layout.sh sunt situate în același director, atunci vizualizarea finală a fișierului .xbindkeysrc arată astfel:


# 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

După aceea aplicăm modificările:


xbindkeys -p

Și poți verifica. Nu uitați să dezactivați orice opțiune pentru comutarea layout-urilor în setările standard.

Total

Colegii, sper ca acest articol sa ajute pe cineva sa scape rapid de o problema enervanta. Personal, mi-am petrecut întreaga zi liberă încercând să-mi dau seama și să rezolv cumva problema, astfel încât să nu mă mai lase distras de ea în timpul orelor de lucru. Am scris acest articol pentru a economisi cuiva timp și nervi. Mulți dintre voi utilizați o metodă alternativă de schimbare a layout-urilor și nu înțelegeți care este problema. Personal îmi place să comut cu Alt+Shift. Și așa vreau să funcționeze. Dacă împărtășiți părerea mea și vă confruntați cu această problemă, acest articol ar trebui să vă ajute.

Sursa: www.habr.com

Adauga un comentariu