It probleem oplosse mei wikseljen mei alt+shift yn Linux, yn Electron-applikaasjes

Hallo kollega's!

Ik wol myn oplossing diele foar it probleem dat yn de titel oanjûn is. Ik waard ynspirearre om dit artikel te skriuwen troch in kollega brnovk, dy't net lui wie en in part (foar my) oplossing foar it probleem oanbean. Ik makke myn eigen "kruk" dy't my holp. Ik diel mei dy.

Beskriuwing fan it probleem

Ik brûkte Ubuntu 18.04 foar wurk en hat koartlyn opmurken dat by it wikseljen fan yndielingen mei alt+shift yn applikaasjes lykas Visual Studio Code, Skype, Slack en oaren dy't makke binne mei Electron, it folgjende probleem optreedt: fokus fan it ynfierfjild giet nei boppen paniel fan it finster (menu). Om oare redenen ferhuze ik nei Fedora + KDE en realisearre dat it probleem net fuort wie. Wylst ik nei in oplossing socht, fûn ik in prachtich artikel Hoe kinne jo Skype sels reparearje. Tige tank kameraad brnovk, dy't yn detail spruts oer it probleem en dielde syn metoade om it op te lossen. Mar de metoade oanjûn yn it artikel hat it probleem oplost mei mar ien applikaasje, nammentlik Skype. Foar my wie it ek kritysk om Visual Studio Code te begripen, om't it skriuwen fan berjochten mei in springmenu, hoewol ferfelend, net sa folle is as jo belutsen binne by ûntwikkeling. Plus, in kollega suggerearre in oplossing wêryn it tapassing menu ferdwynt folslein, en ik soe net echt wolle ferlieze it menu yn VS Code.

Besykje te begripen wat der mis is

Dat, ik besleat de tiid te nimmen om út te finen wat der bart. No sil ik koart it paad beskriuwe dat ik naam, miskien sil ien mei mear kennis yn dizze saak helpe om de swierrichheden te ferklearjen dy't ik tsjinkaam.

Ik iepene Visual Studio Code en begon ferskate Alt +<%something%>-kombinaasjes te slaan om te sjen hoe't de applikaasje reagearre. Yn hast alle gefallen wurken alle kombinaasjes útsein Alt + Shift sûnder fokus te ferliezen. It like derop dat immen de yndrukte Shift iet, dy't folge nei it hâlden fan Alt, en de applikaasje tocht dat ik Alt yndrukte, doe neat yndrukte, Alt loslitte en it smiet myn fokus bliid yn har menu, wat frij logysk wie om it.

Ik iepene de ynstellings foar it wikseljen fan toetseboerdyndielingen (do witst, dizze lange list mei karfakjes en allerhanne ynstellings foar toetsen) en set it yn om yndielingen te wikseljen mei de Alt-knop, sûnder ekstra klikken.

It probleem oplosse mei wikseljen mei alt+shift yn Linux, yn Electron-applikaasjes

Dêrnei stoppe Alt + Tab om finsters te wikseljen mei wurkjen. Allinnich Tab wurke, dat is, immen "iten" myn Alt wer. Der wiene gjin fragen oer wa't dizze "ien" wie, mar ik hie gjin idee wat der mei him dien wurde koe.

Mar om't it probleem op ien of oare manier oplost wurde moast, kaam der in oplossing yn 't sin:

  1. Skeakelje yn 'e ynstellings de fluchtoets foar it wikseljen fan toetseboerdyndielingen út (útskeakelje alle karfakjes yn 'e seksje Switch to another layout);
  2. Meitsje dyn eigen fluchtoets dat soe wikselje de yndieling foar my

Beskriuwing fan de oplossing

Litte wy earst in programma ynstallearje wêrmei jo kommando's kinne tawize oan de Xbindkeys-toetsen. Spitigernôch, standert ark net tastean my in meitsje in fluchtoets foar in kombinaasje lykas Alt + Shift troch in prachtige ynterface. Kin dien wurde foar Alt+S, Alt+1, Alt+shift+Y, ensfh. ensfh., mar dit is net geskikt foar ús taak.

sudo dnf install xbindkeysrc

Mear details oer it binne beskikber op ArchWiki
Folgjende sille wy in foarbyldynstellingsbestân meitsje foar it programma. De stekproef is frij koart, mei in pear kommando's, krekt wat jo moatte útfine hoe't jo dermei wurkje:

xbindkeys -d > ~/.xbindkeysrc

Sa't jo sjen kinne út it foarbyld yn 'e triem, moatte wy de fluchtoets oanjaan dy't wy wolle brûke en it kommando dat moat wurde útfierd. Sjocht der ienfâldich út.


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

As fluchtoets, kinne jo gebrûk meitsje fan minsklik lêsber skriuwen of brûk kaai koades. It wurke foar my allinich mei koades, mar gjinien ferbiedt jo in bytsje te eksperimintearjen.

Om de koades te krijen moatte jo it kommando brûke:

xbindkeys -k

In lyts "X" finster sil iepenje. Jo hoege allinich op toetsen te drukken as de fokus op dit finster leit! Allinich yn dit gefal sille jo sa'n ding sjen yn 'e 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

Yn myn gefal sjocht de toetskombinaasje Alt + Shift der sa út:

m:0x8 + c:50

No moatte wy derfoar soargje dat as jo op dizze kombinaasje klikke, de yndieling skeakelt. Ik fûn mar ien wurkjend kommando om de yndieling oan te jaan:


setxkbmap ru
setxkbmap us

Sa't jo út it foarbyld sjen kinne, kin it allinich ien of oare yndieling ynskeakelje, dus kaam my neat oars yn 't sin as it skriuwen fan in skript.


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

No, as de .xbindkeysrc- en layout.sh-bestannen yn deselde map lizze, dan sjocht de definitive werjefte fan it .xbindkeysrc-bestân der sa út:


# 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

Dêrnei tapasse wy de wizigingen:


xbindkeys -p

En jo kinne kontrolearje. Ferjit net om alle opsjes út te skeakeljen foar it wikseljen fan yndielingen yn 'e standertynstellingen.

It resultaat

Kollega's, ik hoopje dat dit artikel immen kin helpe fluch kwyt te reitsjen fan in ferfelend probleem. Persoanlik haw ik myn hiele frije dei besocht it probleem op ien of oare manier út te finen en op te lossen, sadat ik der net mear troch yn wurktiden ôfliede soe. Ik skreau dit artikel om immen tiid en senuwen te besparjen. In protte fan jo brûke in alternative metoade foar it wikseljen fan layouts en begripe net wat it probleem is. Ik persoanlik graach wikselje mei Alt + Shift. En sa wol ik dat it wurket. As jo ​​​​myn miening diele en mei dit probleem konfrontearre wurde, soe dit artikel jo moatte helpe.

Boarne: www.habr.com

Add a comment