Ü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. , 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. . Nagyon köszönöm a kollégának, , 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.

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:
- 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);
- 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
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 > ~/.xbindkeysrcAhogy 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 -kEgy 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:50Most ú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
