Vaihdon ongelman ratkaiseminen alt+shiftillä Linuxissa, Electron-sovelluksissa

Hei kollegat!

Haluan jakaa ratkaisuni otsikossa mainittuun ongelmaan. Minua inspiroi tämän artikkelin kirjoittaminen kollegaltani brnovk, joka ei ollut laiska ja tarjosi osittaisen (minulleni) ratkaisun ongelmaan. Tein oman "sauvan", joka auttoi minua. jaan kanssasi.

Ongelman kuvaus

Käytin Ubuntu 18.04:ää töihin ja huomasin äskettäin, että kun vaihdat asetteluja käyttämällä alt+shift-näppäintä sellaisissa sovelluksissa, kuten Visual Studio Code, Skype, Slack ja muissa Electronilla luoduissa sovelluksissa, ilmenee seuraava ongelma: kohdistus syöttökentästä menee ylös ikkunan paneeli (valikko). Muista syistä siirryin Fedora + KDE:hen ja tajusin, että ongelma ei ollut poistunut. Etsiessäni ratkaisua löysin upean artikkelin Kuinka korjata Skype itse. Paljon kiitoksia toveri brnovk, joka puhui yksityiskohtaisesti ongelmasta ja jakoi menetelmänsä sen ratkaisemiseksi. Mutta artikkelissa mainittu menetelmä ratkaisi ongelman vain yhdellä sovelluksella, nimittäin Skypellä. Minulle oli myös kriittistä ymmärtää Visual Studio Code, koska viestien kirjoittaminen hyppäävällä valikolla, vaikka ärsyttävää, ei ole niin paljon, jos olet mukana kehityksessä. Lisäksi kollega ehdotti ratkaisua, jossa sovellusvalikko katoaa kokonaan, enkä todellakaan haluaisi menettää valikkoa VS Codessa.

Yritti ymmärtää mikä on vialla

Joten päätin käyttää aikaa selvittääkseni, mitä tapahtuu. Nyt kuvailen lyhyesti polkua, jonka kulkisin, ehkä joku asiasta paremmin perehtynyt auttaa selittämään kohtaamiani vaikeuksia.

Avasin Visual Studio Coden ja aloin painaa erilaisia ​​Alt+<%something%> yhdistelmiä nähdäkseni, miten sovellus reagoi. Lähes kaikissa tapauksissa kaikki yhdistelmät paitsi Alt+Shift toimivat ilman tarkennusta. Näytti siltä, ​​että joku söi painettua Shift-näppäintä, joka seurasi Alt-näppäintä alhaalla pitämisen jälkeen ja sovellus luuli, että painoin Alt, sitten en painanut mitään, vapautti Alt ja se heitti iloisesti huomioni valikkoon, mikä vaikutti varsin loogiselta. se.

Avasin näppäimistöasettelujen vaihtamisen asetukset (tiedäthän, tämä pitkä lista, jossa on valintaruudut ja kaikenlaiset näppäinasetukset) ja asetin sen vaihtamaan asettelua Alt-painikkeella ilman lisänapsautuksia.

Vaihdon ongelman ratkaiseminen alt+shiftillä Linuxissa, Electron-sovelluksissa

Sen jälkeen Alt+Tab ikkunoiden vaihtamiseksi lakkasi toimimasta. Vain Tab toimi, eli joku "söi" Altin uudelleen. Ei jäänyt kysymyksiä siitä, kuka tämä "joku" oli, mutta minulla ei ollut aavistustakaan, mitä hänen kanssaan voitaisiin tehdä.

Mutta koska ongelma piti jotenkin ratkaista, niin mieleen tuli ratkaisu:

  1. Poista asetuksista pikanäppäin käytöstä näppäimistöasettelujen vaihtamiseksi (poista kaikki valintaruudut Vaihda toiseen asetteluun -osiossa);
  2. Luo oma pikanäppäin, joka vaihtaisi asettelua puolestani

Ratkaisun kuvaus

Ensin asennetaan ohjelma, jonka avulla voit määrittää komentoja Xbindkeys-näppäimille. Valitettavasti vakiotyökalut eivät sallineet minun luoda pikanäppäintä Alt+Shift-yhdistelmälle kauniin käyttöliittymän kautta. Voidaan tehdä Alt+S, Alt+1, Alt+Shift+Y jne. jne., mutta tämä ei sovellu tehtäväämme.

sudo dnf install xbindkeysrc

Lisätietoja siitä on saatavilla osoitteessa ArchWiki
Seuraavaksi luomme ohjelmalle malliasetustiedoston. Näyte on melko lyhyt, ja siinä on muutama komento, juuri mitä tarvitset selvittääksesi, kuinka sen kanssa työskentelet:

xbindkeys -d > ~/.xbindkeysrc

Kuten näet tiedoston esimerkistä, meidän on ilmoitettava pikanäppäin, jota haluamme käyttää, ja komento, joka tulee suorittaa. Näyttää yksinkertaiselta.


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

Pikanäppäimenä voit käyttää ihmisen luettavaa kirjoitusta tai avainkoodeja. Se toimi minulle vain koodien kanssa, mutta kukaan ei kiellä sinua kokeilemasta vähän.

Saadaksesi koodit sinun on käytettävä komentoa:

xbindkeys -k

Pieni X-ikkuna avautuu. Sinun tarvitsee vain painaa näppäimiä, kun tarkennus on tässä ikkunassa! Vain tässä tapauksessa näet jotain tällaista terminaalissa:


[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

Minun tapauksessani Alt+Shift-näppäinyhdistelmä näyttää tältä:

m:0x8 + c:50

Nyt meidän on varmistettava, että kun napsautat tätä yhdistelmää, asettelu vaihtuu. Löysin vain yhden toimivan komennon asettelun määrittämiseksi:


setxkbmap ru
setxkbmap us

Kuten esimerkistä näkyy, se voi ottaa käyttöön vain yhden tai toisen asettelun, joten minulle ei tullut mieleen muuta kuin skriptin kirjoittaminen.


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

Jos .xbindkeysrc- ja layout.sh-tiedostot sijaitsevat samassa hakemistossa, .xbindkeysrc-tiedoston lopullinen näkymä näyttää tältä:


# 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

Tämän jälkeen otamme muutokset käyttöön:


xbindkeys -p

Ja voit tarkistaa. Älä unohda poistaa asettelujen vaihtamista koskevia asetuksia vakioasetuksista.

Koko

Hyvät kollegat, toivon, että tämä artikkeli voi auttaa jotakuta pääsemään nopeasti eroon ärsyttävästä ongelmasta. Itse vietin koko vapaapäiväni yrittäessäni selvittää ja ratkaista ongelma jotenkin, jotta se ei enää häiritsisi minua työaikana. Kirjoitin tämän artikkelin säästääkseni jonkun aikaa ja hermoja. Monet teistä käyttävät vaihtoehtoista menetelmää asettelun vaihtamiseen, eivätkä ymmärrä, mikä ongelma on. Itse pidän vaihtamisesta Alt+Shiftillä. Ja niin haluan sen toimivan. Jos jaat mielipiteeni ja kohtaat tämän ongelman, tämän artikkelin pitäisi auttaa sinua.

Lähde: will.com

Lisää kommentti