Здраво колеги!
Сакам да го споделам моето решение за проблемот што е наведен во насловот. Бев инспириран да ја напишам оваа статија од колега , кој не беше мрзлив и понуди делумно (за мене) решение на проблемот. Направив своја „патерица“ што ми помогна. Јас споделувам со вас.
Опис на проблемот
Использовал Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью . Многу благодарам другар , кој детално зборуваше за проблемот и го сподели својот метод на негово решавање. Но, методот наведен во статијата го реши проблемот со само една апликација, имено Skype. За мене, исто така, беше критично да го разберам Visual Studio Code, бидејќи пишувањето пораки со скокачко мени, иако досадно, не е толку многу ако сте вклучени во развојот. Плус, еден колега предложи решение во кое менито на апликацијата целосно ќе исчезне, а јас навистина не би сакал да го изгубам менито во VS Code.
Се обиде да разбере што не е во ред
Затоа, решив да одвојам време да сфатам што се случува. Сега накратко ќе го опишам патот по кој тргнав, можеби некој поупатен во ова прашање ќе помогне да ги објасни тешкотиите на кои наидов.
Го отворив Visual Studio Code и почнав да притискам различни комбинации Alt+<%something%> за да видам како реагира апликацијата. Речиси во сите случаи, сите комбинации освен Alt+Shift работеа без губење на фокусот. Изгледаше како некој да го јаде притиснато Shift, што следеше откако го задржав Alt, а апликацијата мислеше дека јас притиснав Alt, а потоа не притиснав ништо, пушти Alt и радосно ми го фрли фокусот во своето мени, што изгледаше сосема логично за тоа.
Ги отворив поставките за префрлување распореди на тастатурата (знаете, оваа долга листа со полиња за избор и секакви поставки за копчиња) и поставив да менува распоред со помош на копчето Alt, без никакви дополнителни кликнувања.

После тоа, Alt+Tab за префрлање на прозорци престана да работи. Работеше само Таб, односно некој повторно ми го „изеде“ Алт. Немаше повеќе прашања за тоа кој е овој „некој“, но немав поим што може да се направи со него.
Но, бидејќи проблемот мораше некако да се реши, тогаш на ум ми дојде решение:
- Во поставките, оневозможете го брзото копче за префрлување распоред на тастатурата (отштиклирајте ги сите полиња за избор во делот Префрли на друг распоред);
- Создадете ваше копче кое ќе го промени распоредот за мене
Опис на решението
Прво, да инсталираме програма која ви овозможува да доделувате команди на копчињата Xbindkeys. За жал, стандардните алатки не ми дозволија да креирам копче за комбинација како Alt+Shift преку прекрасен интерфејс. Може да се направи за Alt+S, Alt+1, Alt+shift+Y, итн. итн., но ова не е соодветно за нашата задача.
sudo dnf install xbindkeysrc Повеќе детали за тоа се достапни на
Следно, ќе создадеме примерок датотека за поставки за програмата. Примерокот е прилично краток, со неколку команди, само она што ви треба за да дознаете како да работите со него:
xbindkeys -d > ~/.xbindkeysrcКако што можете да видите од примерот во датотеката, треба да го означиме клучот што сакаме да го користиме и командата што треба да се изврши. Изгледа едноставно.
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
Како брза копче, можете да користите пишување читливо од човек или да користите копчиња. Мене ми работеше само со шифри, но никој не ти забранува да експериментираш малку.
За да ги добиете кодовите, треба да ја користите командата:
xbindkeys -kЌе се отвори мал прозорец „X“. Треба да притиснете само копчиња кога фокусот е на овој прозорец! Само во овој случај ќе видите вакво нешто во терминалот:
[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
Во мојот случај, комбинацијата на копчиња Alt+Shift изгледа вака:
m:0x8 + c:50Сега треба да се увериме дека кога ќе кликнете на оваа комбинација, распоредот се префрла. Најдов само една работна команда за одредување на изгледот:
setxkbmap ru
setxkbmap us
Како што можете да видите од примерот, може да овозможи само еден или друг распоред, така што ништо не ми падна на ум освен да напишам скрипта.
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
Сега, ако датотеките .xbindkeysrc и layout.sh се наоѓаат во истиот директориум, тогаш конечниот приказ на датотеката .xbindkeysrc изгледа вака:
# 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
После тоа ги применуваме промените:
xbindkeys -p
И можете да проверите. Не заборавајте да ги оневозможите сите опции за префрлување распоред во стандардните поставки.
Вкупно
Колеги, се надевам дека оваа статија може да помогне некому брзо да се ослободи од досадниот проблем. Лично, целиот слободен ден го поминав обидувајќи се некако да го сфатам и да го решам проблемот, за повеќе да не ми го одвлекува вниманието во работното време. Ја напишав оваа статија за да заштедам некого време и нерви. Многумина од вас користат алтернативен метод за префрлување распоред и не разбираат што е проблемот. Јас лично сакам да се префрлам со Alt+Shift. И така сакам да функционира. Ако го делите моето мислење и се соочувате со овој проблем, оваа статија треба да ви помогне.
Извор: www.habr.com
