Reševanje težave s preklapljanjem z uporabo alt+shift v Linuxu, v aplikacijah Electron

Pozdravljeni kolegi!

Deliti želim svojo rešitev problema, ki je naveden v naslovu. K pisanju tega članka me je navdušil kolega brnovk, ki ni bil len in je ponudil delno (zame) rešitev problema. Naredil sem svojo »berglo«, ki mi je pomagala. delim z vami.

Opis problema

Za delo sem uporabljal Ubuntu 18.04 in pred kratkim sem opazil, da se pri preklapljanju postavitev z uporabo alt+shift v aplikacijah, kot so Visual Studio Code, Skype, Slack in druge, ki so bile ustvarjene z uporabo Electron, pojavi naslednja težava: fokus iz polja za vnos gre na vrh plošča okna (meni). Iz drugih razlogov sem prešel na Fedora + KDE in ugotovil, da težava ni izginila. Med iskanjem rešitve sem našel čudovit članek Kako sami popraviti Skype. Najlepša hvala tovariš brnovk, ki je podrobno spregovoril o problemu in delil svoj način reševanja. Toda metoda, navedena v članku, je rešila težavo samo z eno aplikacijo, in sicer Skype. Zame je bilo ključnega pomena tudi razumevanje kode Visual Studio Code, ker pisanje sporočil s skakajočim menijem, čeprav moteče, ni toliko, če ste vključeni v razvoj. Poleg tega je kolega predlagal rešitev, pri kateri meni aplikacije popolnoma izgine, menija pa res ne bi želel izgubiti v VS Code.

Poskušal razumeti, kaj je narobe

Zato sem se odločil, da si vzamem čas in ugotovim, kaj se dogaja. Sedaj bom na kratko opisal pot, ki sem jo ubral, morda mi bo kdo bolj poznavalec pomagal razložiti težave, na katere sem naletel.

Odprl sem Visual Studio Code in začel pritiskati različne kombinacije Alt+<%something%>, da bi videl, kako se je aplikacija odzvala. V skoraj vseh primerih so vse kombinacije razen Alt+Shift delovale brez izgube fokusa. Zdelo se je, kot da bi nekdo pojedel pritisnjen Shift, ki je sledil po držanju Alta, in aplikacija je mislila, da sem pritisnil Alt, potem pa nisem pritisnil ničesar, spustila Alt in moj fokus je veselo vrgla v svoj meni, kar se je zdelo povsem logično to.

Odprl sem nastavitve za preklapljanje postavitev tipkovnice (saj veste, ta dolgi seznam s potrditvenimi polji in vsemi možnimi nastavitvami za tipke) in nastavil, da preklaplja postavitev z gumbom Alt, brez dodatnih klikov.

Reševanje težave s preklapljanjem z uporabo alt+shift v Linuxu, v aplikacijah Electron

Po tem je Alt+Tab za preklop oken prenehal delovati. Delal je samo Tab, se pravi, spet mi je nekdo "pojedel" Alt. Ni bilo več vprašanj o tem, kdo je ta "nekdo", vendar nisem imel pojma, kaj bi lahko naredil z njim.

Ker pa je bilo treba problem nekako rešiti, je na misel prišla rešitev:

  1. V nastavitvah onemogočite bližnjico za preklapljanje postavitev tipkovnice (počistite vsa potrditvena polja v razdelku Preklopi na drugo postavitev);
  2. Ustvari svojo lastno bližnjico, ki bi zamenjala postavitev zame

Opis rešitve

Najprej namestimo program, ki omogoča dodeljevanje ukazov tipkam Xbindkeys. Na žalost mi standardna orodja niso omogočila ustvarjanja bližnjične tipke za kombinacijo, kot je Alt+Shift, prek čudovitega vmesnika. To je mogoče za Alt+S, Alt+1, Alt+shift+Y itd. itd., vendar to ni primerno za našo nalogo.

sudo dnf install xbindkeysrc

Več podrobnosti o tem je na voljo na ArchWiki
Nato bomo ustvarili vzorčno datoteko z nastavitvami za program. Vzorec je precej kratek, z nekaj ukazi, kar potrebujete, da ugotovite, kako delati z njim:

xbindkeys -d > ~/.xbindkeysrc

Kot lahko vidite iz primera v datoteki, moramo navesti bližnjično tipko, ki jo želimo uporabiti, in ukaz, ki naj se izvede. Videti preprosto.


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

Kot bližnjično tipko lahko uporabite človeku berljivo pisavo ali uporabite kode tipk. Pri meni je delovalo samo s kodami, vendar ti nihče ne brani malo eksperimentirati.

Če želite pridobiti kode, morate uporabiti ukaz:

xbindkeys -k

Odpre se majhno okno "X". Tipke morate pritisniti le, ko je fokus na tem oknu! Samo v tem primeru boste v terminalu videli nekaj takega:


[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

V mojem primeru je kombinacija tipk Alt+Shift videti takole:

m:0x8 + c:50

Zdaj se moramo prepričati, da se postavitev preklopi, ko kliknete to kombinacijo. Našel sem samo en delujoč ukaz za določanje postavitve:


setxkbmap ru
setxkbmap us

Kot lahko vidite iz primera, lahko omogoči le eno ali drugo postavitev, zato mi ni padlo na misel nič drugega kot pisanje skripta.


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

Če se datoteki .xbindkeysrc in layout.sh nahajata v istem imeniku, je končni pogled datoteke .xbindkeysrc videti takole:


# 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

Po tem uporabimo spremembe:


xbindkeys -p

In lahko preverite. Ne pozabite onemogočiti vseh možnosti za preklapljanje postavitev v standardnih nastavitvah.

Skupaj

Kolegi, upam, da bo ta članek nekomu pomagal, da se hitro znebi nadležne težave. Osebno sem cel prost dan porabil za to, da bi problem nekako ugotovil in rešil, da me ne bi več motil med delovnim časom. Ta članek sem napisal, da nekomu prihranim čas in živce. Mnogi od vas uporabljajo alternativni način preklapljanja postavitev in ne razumejo, v čem je težava. Osebno rad preklapljam z Alt+Shift. In tako želim, da deluje. Če delite moje mnenje in se soočate s to težavo, bi vam moral ta članek pomagati.

Vir: www.habr.com

Dodaj komentar