A probléma megoldása alt+shift váltásával Linuxon, Electron alkalmazásokban

Üdvözlöm, kollégák!

Szeretném megosztani a problémám megoldását, amely a címben szerepel. Az írás ötletét egy kollégámtól kaptam. brnovk, aki nem restellte, és részleges (számomra) megoldást ajánlott a problémára. Készítettem egy "tákolmányt", ami segített. Most megosztom veletek.

A probléma leírása

Az Ubuntu 18.04-et használtam a munkához, és az utóbbi időben észrevettem, hogy az alt+shift billentyűkombinációval történő billentyűkiosztás-változtatáskor olyan alkalmazásokban, mint a Visual Studio Code, Skype, Slack és más, Electron alapú programok, a fókusz a bemeneti mezőről a felső menüsávra vált. Más okok miatt Fedora + KDE rendszerre váltottam, és rájöttem, hogy a probléma nem tűnt el. Megoldást keresve találtam egy remek cikket. Skype javítása saját kezűleg. Nagyon köszönöm a kollégának, brnovk, aki részletesen elmondta a problémát, és megosztotta megoldását. De a cikkben említett megoldás csak egyetlen alkalmazásra, nevezetesen a Skype-ra vonatkozott. Számomra kritikus volt, hogy kiderítsem, mi a helyzet a Visual Studio Code-dal, mert a felugró menüvel rendelkező üzenetek írása bármennyire is zavaró, nem annyira kellemetlen, ha éppen fejlesztéssel foglalkozom. Ráadásul a kolléga egy olyan megoldást kínált, amely teljesen eltünteti az alkalmazás menüjét, pedig én nem szeretném elveszíteni a menüt a VS Code-ban.

Próbáltam kideríteni, mi a probléma.

Úgy döntöttem, hogy időt szánok arra, hogy utána járjak a dolognak. Most röviden elmondom, hogy milyen úton haladtam, hátha valaki, aki jobban ért a témához, segít tisztázni azokat a nehézségeket, amelyekkel szembesültem.

Megnyitottam a Visual Studio Code-ot, és elkezdtem különböző Alt+<%valami%> kombinációkat nyomogatni, figyelve az alkalmazás reakcióját. Szinte minden esetben minden kombináció, kivéve az Alt+Shift-ot, veszteség nélkül működött. Az a benyomásom alakult ki, hogy valaki "megeszi" a megnyomott Shift-et, ami az Alt lenyomása és tartása után következett, és az alkalmazás azt hiszi, hogy lenyomtam az Alt-ot, majd nem nyomtam semmit, felengedtem az Alt-ot, és ő boldogan az én fókuszomat a menüjére dobta, ami számára teljesen logikusnak tűnt.

Megnyitottam a billentyűkiosztás-váltás beállításait (tudod, az a hosszú lista jelölőnégyzetekkel és rengeteg beállítással a billentyűkhez), és beállítottam a billentyűkiosztás váltását az Alt gomb megnyomásával, további lenyomások nélkül.

A probléma megoldása alt+shift váltásával Linuxon, Electron alkalmazásokban

Ezután leállt az Alt+Tab a Windows közötti váltásra. Csak a Tab működött, tehát valaki megint "megette" az Alt-omat. Ki ez a "valaki", arra már nem volt kérdésem, de hogy mit lehet vele tenni, azt nem tudom.

De mivel a problémát valahogy meg kellett oldani, akkor az jutott eszembe, hogy:

  1. A beállításokban tiltsam le a billentyűparancsot a billentyűzetkiosztás váltására (távolítsam el az összes pipa jelet a Váltás másik kiosztásra részben);
  2. Hozzak létre saját billentyűparancsot, amely átváltja nekem a kiosztást.

A megoldás leírása

Először telepítsük a programot, amely lehetővé teszi, hogy parancsokat rendeljünk a billentyűkhöz, ez az Xbindkeys. Sajnos, a beépített eszközök nem tették lehetővé, hogy szép felületen létrehozzak billentyűparancsot Alt+Shift típusú kombinációhoz. Lehet csinálni Alt+S, Alt+1, Alt+Shift+Y stb., de a mi feladatunkhoz ez nem megfelelő.

sudo dnf install xbindkeysrc

Részletesebb információt róla a ArchWiki
Ezután létrehozunk egy mintát a program beállítási fájljához. A minta elég rövid, néhány parancsot tartalmaz, éppen arra van szükség, hogy megértsük, hogyan kell használni:

xbindkeys -d > ~/.xbindkeysrc

Ahogy az a példából látható, meg kell adnunk a billentyűparancsot, amit használni szeretnénk, és a parancsot, amelynek végre kell hajtódnia. Egyszerűen hangzik.


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

Bármi, ami érthető emberi nyelven van, használható billentyűparancsként, vagy használhatjuk a billentyűkódokat. Nálam csak a kódokkal működött, de senki sem tilthatja meg, hogy kicsit kísérletezz.

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

xbindkeys -k

Egy kis "X-es" ablak fog megnyílni. A billentyűket csak akkor kell lenyomni, ha az ablak fókuszban van! Csak így fogsz valami ilyesmit látni a terminálban:


[podkmax@localhost ~]$ xbindkeys -k
Nyomj meg egy billentyűkombinációt és/vagy kattints az ablak alatt.
Használhatsz egyet a "NoCommand" után lévő két sor közül
$aHOME/.xbindkeysrc fájlban a billentyűk hozzárendelésére.
"(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 úgy kell megoldani, hogy ennek a kombinációnak a lenyomásakor ténylegesen átváltás történjen a kiosztásra. Csak egy működő parancsot találtam a kiosztás megadására:


setxkbmap ru
setxkbmap us

Ahogy a példa mutatja, csak a kiosztás ki- és bekapcsolására képes, ezért más, csak egy script írása 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

Most már, ha a .xbindkeysrc és a layout.sh fájlok ugyanabban a könyvtárban vannak, a .xbindkeysrc fájl végeredménye í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 lehet tesztelni. Ne felejtsd el kikapcsolni a billentyűzetkiosztás váltási lehetőségeit a szokásos beállításokban.

Result

Kollégák, remélem, hogy ez a cikk gyors segítséget nyújt valakinek a zavaró problémával kapcsolatban. Személy szerint én az egész szabadnapomat arra fordítottam, hogy kiderítsem és megoldjam a problémát, hogy ne vonja el a figyelmemet munkaidőben. Ezt a cikket azzal a céllal írtam, hogy időt és idegeket spóroljak valakinek. Sokan közületek alternatív módszert használnak a billentyűzetkiosztás váltására, és nem értik, hogy mi a probléma. Én személy szerint a billentyűzetkiosztást Alt+Shift kombinációval szeretem váltani, és szeretném, ha ez működne. Ha egyetértesz a véleményemmel, és szembesültél ezzel a problémával, akkor ez a cikk segíteni fog neked.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster