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
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
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.
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:
- 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);
- 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
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