Linux, Electron тиркемелеринде alt+shift аркылуу которулуу маселесин чечүү

Салам кесиптештер!

Мен темада көрсөтүлгөн көйгөйдү чечүү менен бөлүшкүм келет. Мага бул макаланы жазууга кесиптешим түрткү болду брновк, ким жалкоо эмес жана маселени жарым-жартылай (мен үчүн) чечүүнү сунуш кылган. Мага жардам берген “балдакымды” өзүм жасадым. Мен сиз менен бөлүшүп жатам.

Маселенин сүрөттөлүшү

Мен Ubuntu 18.04ду жумуш үчүн колдондум жана жакында эле байкадым, Electron аркылуу түзүлгөн Visual Studio Code, Skype, Slack жана башкалар сыяктуу тиркемелерде alt+shift аркылуу макеттерди которуштурууда, төмөнкү көйгөй пайда болот: киргизүү талаасынан фокус жогору карай кетет. терезенин панели (меню). Башка себептерден улам, мен Fedora + KDEге көчүп, көйгөй чечилбегенин түшүндүм. Чечим издеп жүрүп, мен сонун макала таптым Skype'ты кантип оңдосо болот. Чоң рахмат жолдош брновк, маселеге кеңири токтолуп, аны чечүүнүн ыкмасы менен бөлүштү. Бирок макалада көрсөтүлгөн ыкма көйгөйдү бир гана колдонмо, атап айтканда Skype менен чечти. Мен үчүн Visual Studio Code түшүнүү да абдан маанилүү болчу, анткени секирүү менюсу менен билдирүүлөрдү жазуу, бирок сиз иштеп чыгууга катышкан болсоңуз, анчалык деле көп эмес. Мындан тышкары, бир кесиптеш колдонмо менюсу толугу менен жок болуп кала турган чечимди сунуштады, жана мен чындыгында VS Code менюсун жоготкум келбейт.

Эмне болуп жатканын түшүнүүгө аракет кылды

Ошентип, мен эмне болуп жатканын түшүнүү үчүн убакыт бөлүүнү чечтим. Эми мен басып өткөн жолду кыскача сүрөттөп берейин, балким, бул маселеде көбүрөөк билген бирөө мага туш болгон кыйынчылыктарды түшүндүрүүгө жардам берет.

Мен Visual Studio Code ачып, колдонмо кандай жооп кайтарганын көрүү үчүн башка Alt+<%something%> айкалыштарын басып баштадым. Дээрлик бардык учурларда, Alt+Shiftден башка бардык комбинациялар фокусту жоготпостон иштеген. Кимдир бирөө басылган Shiftти жеп жаткандай сезилди, ал Alt баскычын басып тургандан кийин артынан келген жана колдонмо мен Alt баскычын басып, андан кийин эч нерсени баспай, Alt баскычын бошотту жана менин көңүлүмдү кубаныч менен менюсуна таштады деп ойлоду, бул логикага ылайыктуу көрүндү. ал.

Мен клавиатуранын макеттерин которуштуруу үчүн орнотууларды ачтым (сиз билесизби, бул узун тизмени белгилөө кутучалары жана баскычтар үчүн ар кандай орнотуулар) жана аны Alt баскычын колдонуп, эч кандай кошумча чыкылдатууларсыз макеттерди которууга койдум.

Linux, Electron тиркемелеринде alt+shift аркылуу которулуу маселесин чечүү

Андан кийин терезелерди которуу үчүн Alt+Tab иштебей калды. Tab гана иштеди, башкача айтканда, кимдир бирөө менин Altымды кайра "жеди". Бул «бирөөнүн» ким экендиги жөнүндө эч кандай суроолор калган жок, бирок мен аны менен эмне кылса болорун түшүнгөн жокмун.

Бирок көйгөй кандайдыр бир жол менен чечилиши керек болгондуктан, чечим акылга келди:

  1. Жөндөөлөрдөн клавиатуранын схемаларын которуу үчүн ысык баскычты өчүрүңүз (Башка калыпка өтүү бөлүмүндөгү бардык белгилерди алып салыңыз);
  2. Мен үчүн макетти алмаштыра турган өзүңүздүн ысык баскычыңызды түзүңүз

Чечимдин сүрөттөлүшү

Биринчиден, Xbindkeys баскычтарына буйруктарды дайындоого мүмкүндүк берүүчү программаны орнотобуз. Тилекке каршы, стандарттуу шаймандар мага кооз интерфейс аркылуу Alt+Shift сыяктуу айкалыштыруу үчүн ысык баскычты түзүүгө мүмкүндүк берген жок. Alt+S, Alt+1, Alt+shift+Y ж.б. үчүн аткарылышы мүмкүн. ж.б., бирок бул биздин милдетибизге ылайыктуу эмес.

sudo dnf install xbindkeysrc

Бул тууралуу кененирээк маалымат бул сайтта ArchWiki
Андан кийин, биз программа үчүн үлгү орнотуулар файлын түзөт. Үлгү абдан кыска, бир нече буйруктар менен, аны менен кантип иштөө керектигин түшүнүү үчүн эмне керек:

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 менен которууну жакшы көрөм. Ошондо мен анын иштешин каалайм. Эгерде сиз менин оюм менен бөлүшсөңүз жана бул көйгөйгө туш болсоңуз, анда бул макала сизге жардам бериши керек.

Source: www.habr.com

Комментарий кошуу