Lösningen pÄ problemet med att vÀxla med alt+shift i Linux, i applikationer pÄ Electron

Hej kollegor!

Jag vill dela med mig av min lösning pÄ problemet som nÀmns i rubriken. Jag blev inspirerad till att skriva denna artikel av en kollega brnovk, som tog sig tid att föreslÄ en delvis (för mig) lösning pÄ problemet. Jag skapade min egen "lösning" som hjÀlpte mig. Jag delar detta med er.

Beskrivning av problemet

Jag anvÀnde Ubuntu 18.04 för arbete och har pÄ senare tid mÀrkt att nÀr jag vÀxlade layout med alt+shift i sÄdana applikationer som Visual Studio Code, Skype, Slack och andra som skapats med Electron, uppstÄr följande problem: fokus flyttas frÄn inmatningsfÀltet till den övre panelen i fönstret (menyn). Av andra skÀl flyttade jag till Fedora + KDE och insÄg att problemet fortfarande kvarstod. I jakten pÄ en lösning hittade jag en fantastisk artikel Reparera Skype pÄ egen hand. Stort tack till vÀnnen brnovk, som detaljerat berÀttade om problemet och delade med sig av sin lösning. Men den angivna metoden i artikeln löste endast frÄgan för en applikation, nÀmligen Skype. För mig var det ocksÄ kritiskt att fÄ bukt med Visual Studio Code, eftersom det Àr irriterande med en menyruta som hoppar, Àven om det inte Àr lika störande nÀr man arbetar med utvecklingen. Dessutom föreslog kollegan en lösning dÀr applikationens meny försvinner helt, men jag skulle helst vilja behÄlla menyn i VS Code.

Jag försökte förstÄ vad som var felet

SÄ jag bestÀmde mig för att avsÀtta tid för att förstÄ vad som var fel. HÀr kommer jag kort att beskriva vilken vÀg jag tog; kanske kan nÄgon som Àr mer insatt i denna frÄga hjÀlpa till att klarlÀgga de svÄrigheter jag stötte pÄ.

Jag öppnade Visual Studio Code och började trycka pÄ olika kombinationer av Alt+, medan jag observerade reaktionen frÄn applikationen. I nÀstan alla fall fungerade alla kombinationer utom Alt+Shift utan att tappa fokus. Det kÀndes som att nÄgon 'Ät' nedtryckt Shift som följde efter att ha hÄllit nere Alt, och applikationen trodde att jag hade tryckt pÄ Alt, sedan inget, slÀppte Alt och den glÀdjefullt flyttade mitt fokus till sin meny, vilket verkade logiskt.

Jag öppnade instÀllningarna för vÀxling av tangentbordslayout (ni vet, den dÀr lÄnga listan med kryssrutor och olika instÀllningar för tangenter) och stÀllde in vÀxlingen av layouten med knappen Alt, utan nÄgra ytterligare tryckningar.

Lösningen pÄ problemet med att vÀxla med alt+shift i Linux, i applikationer pÄ Electron

Efter detta slutade Alt+Tab att fungera för fönsterbyte. Endast Tab fungerade, vilket betyder att nÄgon igen 'Ät upp' min Alt. Vem den dÀr 'nÄgon' Àr, lÀmnade inga frÄgor, men vad man kan göra Ät det vet jag inte.

Men eftersom jag behövde lösa problemet pÄ nÄgot sÀtt, kom jag pÄ en lösning:

  1. I instÀllningarna inaktivera snabbkommandot för att byta tangentbordslayout (avmarkera alla kryssrutor i avsnittet Byt till en annan layout);
  2. Skapa mitt eget snabbkommando som skulle byta min layout

Lösningsbeskrivning

Först installerar vi programmet som tillÄter oss att tilldela kommandon till tangenter, Xbindkeys. TyvÀrr tillÀt de inbyggda verktygen mig inte att skapa ett snabbtkommando för en kombination som Alt+Shift genom ett fint grÀnssnitt. Man kan göra för Alt+S, Alt+1, Alt+shift+Y och sÄ vidare, men för vÄr uppgift passar det inte.

sudo dnf install xbindkeysrc

Mer information om det finns pÄ ArchWiki
DÀrefter skapar vi ett exempel pÄ instÀllningsfilen för programmet. Exemplet Àr ganska kort, med nÄgra kommandon, vilket Àr precis vad som behövs för att förstÄ hur man jobbar med det:

xbindkeys -d > ~/.xbindkeysrc

Som syns i exemplet, som finns i filen, mÄste vi ange det snabbkommando vi vill anvÀnda och kommandot som ska utföras. Det ser enkelt ut.


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

Som snabbkommando kan man anvÀnda ett mÀnskligt begripligt skrivsÀtt eller anvÀnda tangentspecifika koder. Jag fick det bara att fungera med koder, men ingen hindrar dig frÄn att experimentera lite.

För att fÄ koderna behöver man anvÀnda kommandot:

xbindkeys -k

Ett litet 'X'-fönster öppnas. Tryck endast pÄ tangenterna nÀr detta fönster har fokus! Endast dÄ kommer du att se nÄgot sÄdant i terminalen:


[podkmax@localhost ~]$ xbindkeys -k
Tryck pÄ en tangentkombination och/eller klicka under fönstret.
Du kan anvÀnda en av de tvÄ raderna efter "NoCommand"
i $HOME/.xbindkeysrc för att binda en tangent.
"(Schemafunktion)"
    m:0x4 + c:39
    Control + s

I mitt fall ser kombinationen för tangenterna Alt+Shift ut sÄ hÀr:

m:0x8 + c:50

Nu mÄste vi se till att nÀr man trycker pÄ denna kombination sÄ sker just layoutbytet. Jag hittade bara en fungerande kommando för att ange layout:


setxkbmap ru
setxkbmap us

Som syns i exemplet kan den endast aktivera den ena eller andra layouten, sÄ ingenting förutom att skriva ett skript kom till mig.


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

Nu, om filerna .xbindkeysrc och layout.sh ligger i samma katalog, ser den slutgiltiga versionen av filen .xbindkeysrc ut sÄ hÀr:


# 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

Efter det tillÀmpar vi Àndringarna:


xbindkeys -p

Och nu kan vi kontrollera. Glöm inte att stÀnga av alla alternativ för att vÀxla tangentbordslayout i standardinstÀllningarna.

Resultat

Kollegor, jag hoppas att denna artikel kan hjÀlpa nÄgon att snabbt bli av med det irriterande problemet. Personligen spenderade jag hela min helg pÄ att förstÄ och lösa problemet sÄ att jag inte lÀngre skulle behöva distraheras av det pÄ arbetstid. Jag skrev denna artikel för att spara nÄgon tid och nerver. MÄnga av er anvÀnder ett alternativt sÀtt att vÀxla layout och förstÄr inte vad problemet Àr. Jag föredrar personligen att vÀxla med Alt+Shift. Och jag vill att det ska fungera just sÄ. Om ni delar min Äsikt och har stött pÄ detta problem, sÄ ska denna artikel hjÀlpa er.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster