Paglutas ng problema sa paglipat gamit ang alt+shift sa Linux, sa mga Electron application

Hello mga kasamahan!

Gusto kong ibahagi ang aking solusyon sa problemang nakasaad sa pamagat. Na-inspire akong isulat ang artikulong ito ng isang kasamahan brnovk, na hindi tamad at nag-alok ng bahagyang (para sa akin) na solusyon sa problema. Gumawa ako ng sarili kong "saklay" na nakatulong sa akin. Ibinabahagi ko sa iyo.

Paglalarawan ng problema

Gumamit ako ng Ubuntu 18.04 para sa trabaho at napansin ko kamakailan na kapag lumipat ng mga layout gamit ang alt+shift sa mga application tulad ng Visual Studio Code, Skype, Slack at iba pa na nilikha gamit ang Electron, ang sumusunod na problema ay nangyayari: ang focus mula sa input field ay napupunta sa itaas panel ng window (menu). Para sa iba pang mga kadahilanan, lumipat ako sa Fedora + KDE at napagtanto na hindi nawala ang problema. Habang naghahanap ng solusyon, nakakita ako ng magandang artikulo Paano ayusin ang Skype sa iyong sarili. Maraming salamat kasama brnovk, na nagsalita nang detalyado tungkol sa problema at ibinahagi ang kanyang paraan ng paglutas nito. Ngunit ang pamamaraan na ipinahiwatig sa artikulo ay nalutas ang problema sa isang application lamang, katulad ng Skype. Para sa akin, kritikal din na maunawaan ang Visual Studio Code, dahil ang pagsusulat ng mga mensahe na may jumping menu, bagama't nakakainis, ay hindi gaanong kung kasangkot ka sa pag-unlad. Dagdag pa, ang isang kasamahan ay nagmungkahi ng isang solusyon kung saan ang menu ng application ay ganap na nawawala, at hindi ko talaga nais na mawala ang menu sa VS Code.

Sinubukan kong intindihin kung ano ang mali

Kaya, nagpasya akong maglaan ng oras upang malaman kung ano ang nangyayari. Ngayon ay maikli kong ilalarawan ang landas na aking tinahak, marahil ang isang taong mas may kaalaman sa bagay na ito ay makakatulong na ipaliwanag ang mga paghihirap na aking naranasan.

Binuksan ko ang Visual Studio Code at nagsimulang pindutin ang iba't ibang kumbinasyon ng Alt+<%something%> upang makita kung paano tumugon ang application. Sa halos lahat ng kaso, gumana ang lahat ng kumbinasyon maliban sa Alt+Shift nang hindi nawawala ang focus. Tila may kumakain ng pinindot na Shift, na sumunod pagkatapos na pinindot ang Alt, at naisip ng application na pinindot ko ang Alt, pagkatapos ay hindi pinindot ang anuman, inilabas ang Alt at masayang itinapon nito ang aking pagtuon sa menu nito, na tila lohikal sa ito.

Binuksan ko ang mga setting para sa paglipat ng mga layout ng keyboard (alam mo, ang mahabang listahang ito na may mga checkbox at lahat ng uri ng mga setting para sa mga key) at itinakda ito upang lumipat ng mga layout gamit ang Alt button, nang walang anumang karagdagang pag-click.

Paglutas ng problema sa paglipat gamit ang alt+shift sa Linux, sa mga Electron application

Pagkatapos noon, tumigil sa paggana ang Alt+Tab para lumipat ng mga bintana. Tab lang ang gumana, ibig sabihin, may "kumain" ulit ng Alt ko. Walang mga tanong na natitira tungkol sa kung sino ang "isang tao" na ito, ngunit wala akong ideya kung ano ang maaaring gawin sa kanya.

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 mga layout ng keyboard (alisan ng tsek ang lahat ng mga checkbox sa seksyong Lumipat sa ibang layout);
  2. Lumikha ng sarili mong hotkey na magpapalit ng layout para sa akin

Paglalarawan ng solusyon

Una, mag-install tayo ng program na nagbibigay-daan sa iyong magtalaga ng mga command sa Xbindkeys keys. Sa kasamaang palad, hindi ako pinahintulutan ng mga karaniwang tool na lumikha ng hotkey para sa kumbinasyon tulad ng Alt+Shift sa pamamagitan ng magandang interface. Maaaring gawin para sa Alt+S, Alt+1, Alt+shift+Y, atbp. atbp., ngunit hindi ito angkop para sa ating gawain.

sudo dnf install xbindkeysrc

Higit pang mga detalye tungkol dito ay makukuha sa ArchWiki
Susunod, gagawa kami ng sample na file ng mga setting para sa programa. Ang sample ay medyo maikli, na may ilang mga utos, kung ano ang kailangan mo upang malaman kung paano ito gagawin:

xbindkeys -d > ~/.xbindkeysrc

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


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

Bilang isang hotkey, maaari mong gamitin ang pagsusulat na nababasa ng tao o gumamit ng mga key code. Ito ay nagtrabaho para sa akin lamang sa mga code, ngunit walang sinuman ang nagbabawal sa iyo na mag-eksperimento nang kaunti.

Upang makuha ang mga code kailangan mong gamitin ang command:

xbindkeys -k

Magbubukas ang isang maliit na window ng "X". Kailangan mo lang pindutin ang mga key kapag ang focus ay nasa window na ito! Sa kasong ito lamang makikita mo ang isang bagay na tulad nito 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 naming tiyakin na kapag nag-click ka sa kumbinasyong ito, ang layout ay lumipat. Natagpuan ko lamang ang isang gumaganang utos upang tukuyin ang layout:


setxkbmap ru
setxkbmap us

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


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 view 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 opsyon para sa paglipat ng mga layout sa karaniwang mga 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 araw na walang pasok sa pagsisikap na malaman at malutas ang problema kahit papaano, upang hindi na ako magambala nito sa oras ng trabaho. Isinulat ko ang artikulong ito upang makatipid ng oras at nerbiyos ng isang tao. Marami sa inyo ang gumagamit ng alternatibong paraan ng pagpapalit ng mga layout at hindi nauunawaan kung ano ang problema. Personal kong gustong lumipat gamit ang Alt+Shift. At iyon ang gusto kong gumana. Kung ibinabahagi mo ang aking opinyon at nahaharap sa problemang ito, makakatulong sa iyo ang artikulong ito.

Pinagmulan: www.habr.com

Magdagdag ng komento