Zdravo kolege!
Želim podijeliti svoje rješenje za problem koji je naznačen u naslovu. Na pisanje ovog članka inspirisao me je kolega
Opis problema
Koristio sam Ubuntu 18.04 za rad i nedavno sam primijetio da se prilikom prebacivanja rasporeda koristeći alt+shift u aplikacijama kao što su Visual Studio Code, Skype, Slack i druge koje su kreirane pomoću Electron-a, javlja sljedeći problem: fokus iz polja za unos ide na vrh panel prozora (meni). Iz drugih razloga, prešao sam na Fedora + KDE i shvatio da problem nije nestao. Tražeći rješenje, pronašao sam divan članak
Pokušao da shvatim šta nije u redu
Stoga sam odlučio da odvojim vrijeme da shvatim šta se dešava. Sada ću ukratko opisati put kojim sam krenuo, možda će neko bolje upućen u ovu materiju objasniti poteškoće na koje sam naišao.
Otvorio sam Visual Studio Code i počeo da udaram različite kombinacije Alt+<%something%> da vidim kako je aplikacija reagovala. U gotovo svim slučajevima, sve kombinacije osim Alt+Shift su radile bez gubitka fokusa. Činilo se kao da neko jede pritisnut Shift, koji je uslijedio nakon držanja Alt, a aplikacija je mislila da sam pritisnuo Alt, pa nisam ništa pritisnuo, pustio Alt i radosno je bacio moj fokus u svoj meni, što se činilo sasvim logičnim to.
Otvorio sam podešavanja za prebacivanje rasporeda tastature (znate, ovu dugačku listu sa kvadratićima za potvrdu i svim vrstama podešavanja za tastere) i podesio je da menja raspored pomoću dugmeta Alt, bez ikakvih dodatnih klikova.
Nakon toga, Alt+Tab za promjenu prozora prestao je raditi. Proradio je samo Tab, odnosno neko je opet "pojeo" moj Alt. Više nije bilo pitanja ko je taj „neko“, ali nisam imao pojma šta bi se moglo uraditi sa njim.
Ali pošto je problem morao nekako da se reši, palo mi je na pamet rešenje:
- U postavkama onemogućite prečicu za promjenu rasporeda tastature (poništite sve potvrdne okvire u odjeljku Prebaci na drugi raspored);
- Kreirajte svoj vlastiti hotkey koji bi promijenio izgled umjesto mene
Opis rješenja
Prvo, instalirajmo program koji vam omogućava da dodijelite komande tipkama Xbindkeys. Nažalost, standardni alati mi nisu omogućili da kreiram prečicu za kombinaciju poput Alt+Shift preko prekrasnog interfejsa. Može se uraditi za Alt+S, Alt+1, Alt+shift+Y, itd. itd., ali ovo nije prikladno za naš zadatak.
sudo dnf install xbindkeysrc
Više detalja o tome dostupno je na
Zatim ćemo kreirati uzorak datoteke postavki za program. Uzorak je prilično kratak, sa nekoliko naredbi, upravo ono što vam je potrebno da shvatite kako raditi s njim:
xbindkeys -d > ~/.xbindkeysrc
Kao što možete vidjeti iz primjera u datoteci, moramo naznačiti prečicu koju želimo koristiti i naredbu koju treba izvršiti. Izgleda jednostavno.
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
Kao interventni taster, možete koristiti čitljivo pisanje ili koristiti šifre tastera. Meni je išlo samo sa kodovima, ali niko ti ne brani da malo eksperimentišeš.
Da biste dobili kodove trebate koristiti naredbu:
xbindkeys -k
Otvoriće se mali „X“ prozor. Potrebno je samo pritisnuti tipke kada je fokus na ovom prozoru! Samo u ovom slučaju ćete vidjeti nešto poput ovoga u terminalu:
[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
U mom slučaju kombinacija tipki Alt+Shift izgleda ovako:
m:0x8 + c:50
Sada moramo biti sigurni da kada kliknete na ovu kombinaciju, raspored se promijeni. Našao sam samo jednu radnu naredbu za određivanje izgleda:
setxkbmap ru
setxkbmap us
Kao što možete vidjeti iz primjera, može omogućiti samo jedan ili drugi izgled, tako da mi ništa nije palo na pamet osim pisanja skripte.
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
Sada, ako se datoteke .xbindkeysrc i layout.sh nalaze u istom direktoriju, konačni prikaz datoteke .xbindkeysrc izgleda ovako:
# 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
Nakon toga primjenjujemo promjene:
xbindkeys -p
I možete provjeriti. Ne zaboravite onemogućiti sve opcije za promjenu izgleda u standardnim postavkama.
Rezultat
Kolege, nadam se da će ovaj članak nekome pomoći da se brzo riješi dosadnog problema. Lično sam ceo svoj slobodan dan proveo pokušavajući da nekako shvatim i rešim problem, kako mi više ne bi smetao tokom radnog vremena. Napisao sam ovaj članak da nekome uštedim vrijeme i živce. Mnogi od vas koriste alternativnu metodu prebacivanja rasporeda i ne razumiju u čemu je problem. Ja lično volim da prelazim sa Alt+Shift. I tako želim da funkcionira. Ako dijelite moje mišljenje i suočeni ste s ovim problemom, ovaj članak bi vam trebao pomoći.
izvor: www.habr.com