Paglutas ng problema sa paglipat gamit ang alt+shift in Linux, sa mga aplikasyon ng Elektron

Hello mga kasamahan!

Nais kong ibahagi ang aking solusyon sa problemang binanggit sa pamagat. Na-inspire akong isulat ang artikulong ito ng isang kasamahan. brnovk, na naghirap upang mag-alok ng bahagyang (para sa akin) na solusyon sa problema. Gumawa ako ng sarili kong "cheat" na nakatulong sa akin. Ibinabahagi ko ito sa iyo.

Paglalarawan ng problema

Использовал Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью Pag-aayos ng Skype gamit ang Iyong Sariling mga KamayMaraming salamat, kasama. brnovk, na inilarawan ang problema nang detalyado at ibinahagi ang kanyang solusyon. Gayunpaman, ang solusyon na inilarawan sa artikulo ay nagtrabaho lamang sa isang application, Skype. Mahalaga rin para sa akin na malaman ang Visual Studio Code, dahil habang nakakainis ang pagmemensahe gamit ang jumping menu, hindi naman ganoon kalala kung ikaw ay nagde-develop. Dagdag pa, iminungkahi ng isang kasamahan ang isang solusyon na ginagawang ganap na mawala ang menu ng application, at talagang ayaw kong mawala ang menu sa VS Code.

Sinubukan kong intindihin ang nangyayari.

Kaya, nagpasya akong maglaan ng oras upang malaman kung ano ang nangyayari. Sa madaling sabi ay ilalarawan ko ang landas na aking tinahak; marahil ang isang mas may kaalaman sa lugar na ito ay maaaring makatulong na linawin ang mga paghihirap na aking naranasan.

Binuksan ko ang Visual Studio Code at sinimulan kong pindutin ang iba't ibang kumbinasyon ng Alt+<%something%>, pinapanood ang tugon ng app. Sa halos lahat ng kaso, gumana ang lahat ng kumbinasyon maliban sa Alt+Shift nang hindi nawawala ang focus. Parang may kinakain ang Shift key na pinindot ko pagkatapos hawakan ang Alt, at naisip ng app na pinindot ko ang Alt, pagkatapos ay pinindot ang wala, inilabas ang Alt, at masayang inilipat nito ang aking focus sa menu nito, na tila ganap na lohikal dito.

Binuksan ko ang mga setting ng paglipat ng layout ng keyboard (alam mo, ang mahabang listahang iyon na may mga checkbox at lahat ng uri ng mga setting para sa mga key) at itinakda ang paglipat ng layout sa Alt key, nang walang anumang karagdagang pagpindot.

Paglutas ng problema sa paglipat gamit ang alt+shift in Linux, sa mga aplikasyon ng Elektron

Pagkatapos noon, huminto sa paggana ang Alt+Tab para sa paglipat ng mga bintana. Tab lang ang gumana, ibig sabihin, may "kumakain" ulit sa Alt key ko. Wala nang tanong kung sino ang "isang tao" na ito, ngunit wala akong ideya kung ano ang gagawin dito.

Ngunit dahil ang problema ay kailangang malutas kahit papaano, pagkatapos ay isang solusyon ang naisip:

  1. Sa mga setting, huwag paganahin ang hotkey para sa paglipat ng layout ng keyboard (alisan ng tsek ang lahat ng mga checkbox sa seksyong Lumipat sa ibang layout);
  2. Lumikha ng sarili kong hotkey na magpapalipat sa aking layout

Paglalarawan ng solusyon

Una, i-install natin ang Xbindkeys, isang program na nagbibigay-daan sa iyong magtalaga ng mga command sa mga key. Sa kasamaang palad, hindi ako pinahintulutan ng mga built-in na tool na lumikha ng hotkey para sa kumbinasyon tulad ng Alt+Shift gamit ang kaakit-akit na interface nito. Maaari kang lumikha ng isa para sa Alt+S, Alt+1, Alt+shift+Y, at iba pa, ngunit hindi iyon angkop para sa aming mga layunin.

sudo dnf install xbindkeysrc

Higit pang mga detalye tungkol dito ay matatagpuan sa ArchWiki
Susunod, gumawa tayo ng sample na file ng mga setting para sa programa. Ito ay medyo maikli, na may ilang mga utos lamang, kung ano ang kailangan mong maunawaan kung paano ito gamitin:

xbindkeys -d > ~/.xbindkeysrc

Tulad ng makikita mo mula sa halimbawa sa file, kailangan naming tukuyin ang hotkey na gusto naming gamitin at ang command na dapat isagawa. Mukhang simple lang.


# Examples of commands:
"xbindkeys_show"
  control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

Maaari mong gamitin ang mga spelling o key code na nababasa ng tao bilang isang hotkey. Ang mga pangunahing code ay ang tanging bagay na nagtrabaho para sa akin, ngunit huwag mag-atubiling mag-eksperimento nang kaunti.

Upang makakuha ng mga code kailangan mong gamitin ang command:

xbindkeys -k

Magbubukas ang isang maliit na "X" na window. Dapat mo lang pindutin ang mga key kapag nakatutok ang window na ito! Saka ka lang makakakita ng ganito sa terminal:


[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

Sa aking kaso, ang kumbinasyon ng Alt+Shift key ay ganito:

m:0x8 + c:50

Ngayon kailangan kong gawin ito upang ang pagpindot sa kumbinasyon ng key na ito ay aktwal na lumipat sa layout ng keyboard. Nakakita lang ako ng isang gumaganang command para sa pagtukoy ng layout ng keyboard:


setxkbmap ru
setxkbmap us

Tulad ng makikita mo mula sa halimbawa, maaari lamang nitong paganahin ang isa o isa pang layout, kaya walang iba kundi ang pagsusulat ng script ang pumasok sa isip ko.


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

Ngayon, kung ang .xbindkeysrc at layout.sh na mga file ay matatagpuan sa parehong direktoryo, ang huling hitsura ng .xbindkeysrc file ay ganito ang hitsura:


# 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

Pagkatapos nito, inilalapat namin ang mga pagbabago:


xbindkeys -p

At maaari mong suriin. Huwag kalimutang huwag paganahin ang anumang mga pagpipilian sa paglipat ng layout sa mga default na setting.

Kabuuan

Mga kasamahan, umaasa ako na ang artikulong ito ay makakatulong sa isang tao na mabilis na mapupuksa ang isang nakakainis na problema. Sa personal, ginugol ko ang aking buong katapusan ng linggo sa pagsisikap na malaman at kahit papaano ay malutas ang problema upang hindi ko na kailangang mag-alala muli tungkol dito sa oras ng trabaho. Isinulat ko ang artikulong ito upang makatipid ng oras at pagkabigo ng isang tao. Marami sa inyo ang gumagamit ng alternatibong paraan upang lumipat ng mga layout ng keyboard at hindi nauunawaan ang problema. Sa personal, mas gusto ko ang Alt+Shift, at gusto kong gumana ito sa ganoong paraan. Kung ibinabahagi mo ang aking opinyon at nararanasan mo ang problemang ito, makakatulong sa iyo ang artikulong ito.

Pinagmulan: www.habr.com

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS 🔥 Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster