Здраво колеге!
Желим да поделим своје решење за проблем који је назначен у наслову. На писање овог чланка инспирисао ме је колега , који није био лењ и понудио делимично (за мене) решење проблема. Направио сам своју „штаку“ која ми је помогла. делим са вама.
Опис проблема
Использовал Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью . Много хвала друже , који је детаљно говорио о проблему и поделио свој начин његовог решавања. Али метода наведена у чланку решила је проблем само са једном апликацијом, а то је Скипе. За мене је такође било критично да разумем Висуал Студио Цоде, јер писање порука помоћу менија за прескакање, иако досадно, није толико ако се бавите развојем. Поред тога, колега је предложио решење у којем мени апликације потпуно нестаје, а ја не бих баш желео да изгубим мени у ВС Цоде-у.
Покушао сам да схватим шта није у реду
Зато сам одлучио да одвојим време да схватим шта се дешава. Сада ћу укратко описати пут којим сам кренуо, можда ће неко боље упућен у ову материју помоћи да објасни потешкоће на које сам наишао.
Отворио сам Висуал Студио Цоде и почео да ударам различите комбинације Алт+<%сометхинг%> да видим како је апликација реаговала. У скоро свим случајевима, све комбинације осим Алт+Схифт су радиле без губитка фокуса. Деловало је као да неко једе притиснут Схифт, који је уследио након држања Алт, а апликација је мислила да сам притиснуо Алт, па ништа нисам притиснуо, пустио Алт и радосно је бацио мој фокус у свој мени, што је изгледало сасвим логично да то.
Отворио сам подешавања за пребацивање распореда тастатуре (знате, ову дугачку листу са потврдним оквирима и свим врстама подешавања за тастере) и подесио је да мења распоред помоћу дугмета Алт, без икаквих додатних кликова.

Након тога, Алт+Таб за пребацивање прозора је престао да ради. Само Таб је радио, односно неко је поново „појео“ мој Алт. Више није било питања ко је тај „неко“, али нисам имао појма шта би се могло урадити са њим.
Али пошто је проблем морао некако да се реши, онда ми је на памет пало решење:
- У подешавањима онемогућите интервентни тастер за пребацивање распореда тастатуре (поништите сва поља за потврду у одељку Пребаци на други распоред);
- Креирајте сопствени интервентни тастер који би променио изглед за мене
Опис решења
Прво, хајде да инсталирамо програм који вам омогућава да доделите команде тастерима Ксбиндкеис. Нажалост, стандардни алати ми нису дозволили да креирам интервентни тастер за комбинацију као што је Алт+Схифт кроз прелеп интерфејс. Може се урадити за Алт+С, Алт+1, Алт+схифт+И, итд. итд., али ово није прикладно за наш задатак.
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Отвориће се мали „Кс“ прозор. Потребно је само да притиснете тастере када је фокус на овом прозору! Само у овом случају ћете видети нешто овако у терминалу:
[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
У мом случају, комбинација тастера Алт+Схифт изгледа овако:
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
Сада, ако се датотеке .кбиндкеисрц и лаиоут.сх налазе у истом директоријуму, коначни приказ датотеке .кбиндкеисрц изгледа овако:
# 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
И можете проверити. Не заборавите да онемогућите све опције за пребацивање распореда у стандардним подешавањима.
Укупан
Колеге, надам се да ће овај чланак некоме помоћи да се брзо реши досадног проблема. Лично сам цео свој слободан дан провео покушавајући да некако схватим и решим проблем, како ми више не би сметао током радног времена. Написао сам овај чланак да некоме уштедим време и живце. Многи од вас користе алтернативни метод промене распореда и не разумеју у чему је проблем. Ја лично волим да прелазим са Алт+Схифт. И тако желим да функционише. Ако делите моје мишљење и ако се суочите са овим проблемом, овај чланак би требало да вам помогне.
Извор: ввв.хабр.цом
