Сәлем әріптестер!
Тақырыпта айтылған мәселенің шешімімен бөліскім келеді. Бұл мақаланы жазуға әріптесім шабыттандырды. , мәселенің ішінара (меніңше) шешімін ұсыну үшін қиындыққа тап болды. Мен өзіме көмектескен өзімнің «алдауымды» жасадым. Мен оны сіздермен бөлісіп отырмын.
Мәселенің сипаттамасы
Қолданылды Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью Көп рақмет, жолдас. , мәселені егжей-тегжейлі сипаттап, шешімімен бөлісті. Дегенмен, мақалада сипатталған шешім тек бір ғана қолданбамен, Skype-пен жұмыс істеді. Мен үшін Visual Studio кодын түсіну де өте маңызды болды, себебі мәзірді секіру арқылы хабарлама жіберу тітіркендіргіш болғанымен, егер сіз әзірлеп жатсаңыз, бұл онша жаман емес. Сонымен қатар, әріптесім қолданба мәзірін толығымен жоятын шешім ұсынды, және мен VS Code-та мәзірді жоғалтқым келмеді.
Не болып жатқанын түсінуге тырыстым.
Сонымен, мен не болып жатқанын түсінуге уақыт бөлуді шештім. Мен жүріп өткен жолды қысқаша сипаттаймын; мүмкін, осы салада білімді біреу менің кездескен қиындықтарымды түсіндіруге көмектесе алады.
Мен Visual Studio Code кодын ашып, қолданбаның жауабын бақылап, әртүрлі Alt+<%something%> комбинацияларын басуды бастадым. Барлық дерлік жағдайларда Alt+Shift-тен басқа барлық комбинациялар фокусты жоғалтпай жұмыс істеді. Alt пернесін ұстап тұрғаннан кейін басқан Shift пернесін бірдеңе жеп қойғандай сезілді, ал қолданба менің Alt пернесін басқанымды ойлап, ештеңе баспадым, Alt пернесін жібердім, сонда ол менің фокусымды өзінің мәзіріне қуана ауыстырды, бұл оған өте логикалық көрінді.
Мен пернетақта орналасуын ауыстыру параметрлерін ашып (құсбелгілер мен пернелердің барлық параметрлері бар ұзын тізімді білесіз), қосымша баспай орналасуды ауыстыруды Alt пернесіне орнаттым.

Осыдан кейін Alt+Tab пернелері терезелерді ауыстыру үшін жұмыс істемей қалды. Тек Tab пернелері ғана жұмыс істеді, яғни біреу менің Alt пернемді қайтадан «жеп» жатты. Бұл «біреу» кім екені туралы сұрақ енді қалмады, бірақ мен онымен не істерімді білмедім.
Бірақ мәселені қандай да бір жолмен шешу керек болғандықтан, шешім ойыма келді:
- Параметрлерде пернетақта орналасуын ауыстыруға арналған жылдам пернені өшіріңіз («Басқа орналасуға ауысу» бөліміндегі барлық құсбелгілерді алып тастаңыз);
- Орналасуымды өзгертетін өзімнің ыстық пернелерімді жасаңыз
Шешімнің сипаттамасы
Алдымен, пернелерге командаларды тағайындауға мүмкіндік беретін 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
