A váltás problémájának megoldása az alt+shift használatával Linuxban, Electron alkalmazásokban

Hello kollégák!

Szeretném megosztani a megoldásomat a címben jelzett problémára. A cikk megírására egy kollégám inspirált brnovk, aki nem volt lusta és részleges (számomra) megoldást kínált a problémára. Megcsináltam a saját „mankómat”, ami segített. megosztom veled.

A probléma leírása

Az Ubuntu 18.04-et használtam munkához, és nemrégiben észrevettem, hogy amikor elrendezést váltok az alt+shift billentyűkombinációval olyan alkalmazásokban, mint a Visual Studio Code, a Skype, a Slack és mások, amelyeket Electron használatával hoztak létre, a következő probléma lép fel: a fókusz a beviteli mezőből a tetejére kerül az ablak panelje (menü). Más okok miatt áttértem a Fedora + KDE-re, és rájöttem, hogy a probléma nem szűnt meg. A megoldás keresése közben találtam egy csodálatos cikket Hogyan javítsa ki a Skype-ot saját maga. Nagyon köszönöm elvtárs brnovk, aki részletesen beszélt a problémáról és megosztotta a megoldási módszerét. De a cikkben jelzett módszer csak egy alkalmazással, nevezetesen a Skype-tal oldotta meg a problémát. Számomra az is kritikus volt, hogy megértsem a Visual Studio Code-ot, mert az ugráló menüvel üzeneteket írni, bár bosszantó, nem annyira, ha részt veszel a fejlesztésben. Ráadásul egy kolléga olyan megoldást javasolt, hogy az alkalmazás menüje teljesen eltűnjön, és nem igazán szeretném elveszíteni a menüt a VS Code-ban.

Megpróbálta megérteni, mi a baj

Úgyhogy úgy döntöttem, szánok időt arra, hogy kitaláljam, mi történik. Most röviden leírom, milyen utat jártam be, talán valaki, aki jártas ebben a kérdésben, segít elmagyarázni a nehézségeket, amelyekbe ütköztem.

Megnyitottam a Visual Studio Code-ot, és elkezdtem leütni a különböző Alt+<%something%> kombinációkat, hogy megnézzem, hogyan reagál az alkalmazás. Szinte minden esetben az Alt+Shift kivételével minden kombináció működött a fókusz elvesztése nélkül. Úgy tűnt, hogy valaki megette a lenyomott Shift-et, ami az Alt lenyomva tartása után következett, és az alkalmazás azt gondolta, hogy megnyomtam az Alt-t, aztán nem nyomtam meg semmit, elengedtem az Alt-ot, és örömmel a menüjébe dobta a fókuszt, ami teljesen logikusnak tűnt. azt.

Megnyitottam a billentyűzetkiosztás váltási beállításait (tudod, ez a hosszú lista jelölőnégyzetekkel és mindenféle billentyűbeállítással), és beállítottam, hogy az Alt gombbal minden további kattintás nélkül váltson elrendezést.

A váltás problémájának megoldása az alt+shift használatával Linuxban, Electron alkalmazásokban

Ezt követően az Alt+Tab billentyűkombináció az ablakok váltásához leállt. Csak a Tab működött, vagyis valaki megint „megette” az Altomat. Nem maradt kérdés, hogy ki ez a „valaki”, de fogalmam sem volt, mit lehetne vele kezdeni.

De mivel a problémát valahogy meg kellett oldani, akkor eszembe jutott egy megoldás:

  1. A beállításokban tiltsa le a gyorsbillentyűt a billentyűzetkiosztások váltásához (törölje az összes jelölőnégyzet bejelölését a Váltás másik elrendezésre szakaszban);
  2. Hozzon létre saját gyorsbillentyűt, amely megváltoztatja az elrendezést számomra

A megoldás leírása

Először is telepítsünk egy programot, amivel parancsokat rendelhetünk az Xbindkeys billentyűihez. Sajnos a szabványos eszközök nem tették lehetővé, hogy gyorsbillentyűt hozzak létre az olyan kombinációkhoz, mint az Alt+Shift egy gyönyörű felületen. Megtehető az Alt+S, Alt+1, Alt+shift+Y stb. stb., de ez nem alkalmas a mi feladatunkra.

sudo dnf install xbindkeysrc

További részletek a címen érhetők el ArchWiki
Ezután létrehozunk egy minta beállítási fájlt a programhoz. A minta meglehetősen rövid, néhány paranccsal, csak az kell, hogy rájöjjön, hogyan kell dolgozni vele:

xbindkeys -d > ~/.xbindkeysrc

Amint az a fájlban található példából látható, meg kell jelölnünk a használni kívánt gyorsbillentyűt és a végrehajtandó parancsot. Egyszerűen néz ki.


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

Gyorsbillentyűként használhat ember által olvasható írást vagy kulcskódokat. Nekem csak kódokkal működött, de senki nem tiltja, hogy kicsit kísérletezzen.

A kódok lekéréséhez a következő parancsot kell használni:

xbindkeys -k

Megnyílik egy kis „X” ablak. Csak akkor kell megnyomnia a gombokat, ha a fókusz ezen az ablakon van! Csak ebben az esetben valami ehhez hasonlót fog látni a terminálban:


[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

Az én esetemben az Alt+Shift billentyűkombináció így néz ki:

m:0x8 + c:50

Most meg kell győződnünk arról, hogy amikor erre a kombinációra kattint, az elrendezés átvált. Csak egy működő parancsot találtam az elrendezés megadásához:


setxkbmap ru
setxkbmap us

Ahogy a példából is látszik, csak egyik-másik elrendezést tud engedélyezni, így a script megírásán kívül semmi más nem jutott eszembe.


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

Ha az .xbindkeysrc és a layout.sh fájlok ugyanabban a könyvtárban találhatók, akkor az .xbindkeysrc fájl végső nézete így néz ki:


# 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

Ezt követően alkalmazzuk a változtatásokat:


xbindkeys -p

És ellenőrizheti is. Ne felejtse el letiltani az elrendezés váltási opcióit a szabványos beállításokban.

Teljes

Kollégák, remélem, hogy ez a cikk segíthet valakinek gyorsan megszabadulni egy bosszantó problémától. Én személy szerint az egész szabadnapomat azzal töltöttem, hogy valahogy kitaláljam és megoldjam a problémát, nehogy munkaidőben többé elvonja a figyelmemet. Ezt a cikket azért írtam, hogy valakinek idejét és idegeit spóroljam meg. Sokan közületek alternatív módszert használnak az elrendezések közötti váltáshoz, és nem értik, mi a probléma. Én személy szerint szeretek Alt+Shift-el váltani. És így akarom, hogy működjön. Ha osztja a véleményemet, és ezzel a problémával szembesül, ennek a cikknek segítenie kell.

Forrás: will.com

Hozzászólás