Perjungimo problemos sprendimas naudojant alt+shift sistemoje Linux, Electron programose

Sveiki kolegos!

Noriu pasidalinti savo pavadinime nurodytos problemos sprendimu. Parašyti šį straipsnį mane įkvėpė kolega brnovk, kuri netingėjo ir pasiūlė dalinį (man) problemos sprendimą. Sukūriau savo „ramentą“, kuris man padėjo. Dalinuosi su jumis.

Problemos aprašymas

Darbui naudojau Ubuntu 18.04 ir neseniai pastebėjau, kad perjungiant išdėstymus naudojant alt+shift tokiose programose kaip Visual Studio Code, Skype, Slack ir kitose, kurios buvo sukurtos naudojant Electron, iškyla tokia problema: fokusas iš įvesties lauko pereina į viršų lango skydelis (meniu). Dėl kitų priežasčių perėjau į Fedora + KDE ir supratau, kad problema neišnyko. Ieškodama sprendimo radau nuostabų straipsnį Kaip patiems susitvarkyti Skype. Labai ačiū drauge brnovk, kuris išsamiai papasakojo apie problemą ir pasidalijo jos sprendimo būdu. Tačiau straipsnyje nurodytas metodas išsprendė problemą tik su viena programa, būtent „Skype“. Man taip pat buvo labai svarbu suprasti Visual Studio kodą, nes rašyti žinutes su šokinėjančiu meniu, nors ir erzina, bet jei esi susijęs su kūrimu, tai nelabai. Be to, kolega pasiūlė sprendimą, kad programos meniu visiškai dingtų, ir aš tikrai nenorėčiau prarasti meniu VS Code.

Bandė suprasti, kas negerai

Taigi, nusprendžiau skirti laiko išsiaiškinti, kas vyksta. Dabar trumpai aprašysiu kelią, kuriuo nuėjau, gal kas labiau išmanantis šiuo klausimu padės paaiškinti su kokiais sunkumais susidūriau.

Atidariau „Visual Studio Code“ ir pradėjau paspausti skirtingus „Alt“ + <%something%> derinius, kad pamatyčiau, kaip programa reaguoja. Beveik visais atvejais visi deriniai, išskyrus Alt+Shift, veikė neprarandant dėmesio. Atrodė, kad kažkas valgo paspaustą Shift klavišą, kuris sekė paspaudus Alt, o programa manė, kad aš nuspaudžiau Alt, tada nieko nespaudžiau, atleidau Alt ir ji džiaugsmingai nukreipė mano dėmesį į savo meniu, o tai atrodė gana logiška. tai.

Atsidariau klaviatūros išdėstymo perjungimo nustatymus (žinote, šis ilgas sąrašas su žymimaisiais laukeliais ir visokiais klavišų nustatymais) ir nustačiau, kad perjungtų išdėstymus mygtuku Alt, be jokių papildomų paspaudimų.

Perjungimo problemos sprendimas naudojant alt+shift sistemoje Linux, Electron programose

Po to nustojo veikti Alt + Tab, kad perjungtumėte langus. Tik Tab veikė, tai yra, kažkas vėl „suvalgė“ mano Alt. Neliko klausimų, kas tas „kažkas“, bet neįsivaizdavau, ką su juo būtų galima padaryti.

Bet kadangi problemą reikėjo kažkaip išspręsti, tada atsirado sprendimas:

  1. Nustatymuose išjunkite klaviatūros išdėstymo perjungimo spartųjį klavišą (atžymėkite visus žymimuosius langelius skyriuje Perjungti į kitą išdėstymą);
  2. Sukurkite savo spartųjį klavišą, kuris pakeistų išdėstymą

Sprendimo aprašymas

Pirmiausia įdiegkime programą, kuri leidžia priskirti komandas Xbindkeys klavišams. Deja, standartiniai įrankiai neleido man sukurti greitojo klavišo tokiam deriniui kaip Alt + Shift per gražią sąsają. Galima atlikti naudojant Alt + S, Alt + 1, Alt + Shift + Y ir kt. ir tt, bet tai netinka mūsų užduočiai.

sudo dnf install xbindkeysrc

Daugiau informacijos apie tai rasite adresu ArchWiki
Tada sukursime programos nustatymų failo pavyzdį. Pavyzdys yra gana trumpas, su keliomis komandomis, tik tai, ko jums reikia norint išsiaiškinti, kaip su juo dirbti:

xbindkeys -d > ~/.xbindkeysrc

Kaip matote iš failo pavyzdžio, turime nurodyti greitąjį klavišą, kurį norime naudoti, ir komandą, kurią reikia vykdyti. Atrodo paprasta.


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

Kaip spartųjį klavišą galite naudoti žmonėms suprantamą rašymą arba naudoti klavišų kodus. Man pavyko tik su kodais, bet niekas nedraudžia šiek tiek eksperimentuoti.

Norėdami gauti kodus, turite naudoti komandą:

xbindkeys -k

Atsidarys mažas „X“ langas. Mygtukus reikia paspausti tik tada, kai dėmesys nukreiptas į šį langą! Tik šiuo atveju terminale pamatysite kažką panašaus:


[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

Mano atveju Alt + Shift klavišų derinys atrodo taip:

m:0x8 + c:50

Dabar turime įsitikinti, kad spustelėjus šį derinį išdėstymas persijungs. Radau tik vieną darbo komandą išdėstymui nurodyti:


setxkbmap ru
setxkbmap us

Kaip matote iš pavyzdžio, jis gali įjungti tik vienokį ar kitokį išdėstymą, todėl man į galvą neatėjo nieko, išskyrus scenarijaus rašymą.


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

Dabar, jei .xbindkeysrc ir layout.sh failai yra tame pačiame kataloge, galutinis .xbindkeysrc failo vaizdas atrodo taip:


# 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 to taikome pakeitimus:


xbindkeys -p

Ir tu gali patikrinti. Nepamirškite išjungti bet kokių išdėstymo perjungimo parinkčių standartiniuose nustatymuose.

Visas

Kolegos, tikiuosi, kad šis straipsnis padės kam nors greitai atsikratyti erzinančios problemos. Asmeniškai aš visą laisvą dieną bandžiau išsiaiškinti ir kažkaip išspręsti problemą, kad darbo valandomis daugiau jos nesiblaškyčiau. Rašiau šį straipsnį, kad sutaupyčiau kažkam laiko ir nervų. Daugelis iš jūsų naudoja alternatyvų išdėstymo perjungimo būdą ir nesupranta, kokia yra problema. Man asmeniškai patinka perjungti su Alt+Shift. Ir taip noriu, kad tai veiktų. Jei pritariate mano nuomonei ir susiduriate su šia problema, šis straipsnis turėtų jums padėti.

Šaltinis: www.habr.com

Добавить комментарий