Solvante la problemon kun ŝanĝado uzante alt+shift en Linukso, en Electron-aplikoj

Saluton kolegoj!

Mi volas konigi mian solvon al la problemo, kiu estas indikita en la titolo. Mi estis inspirita por skribi ĉi tiun artikolon de kolego brnovk, kiu ne estis maldiligenta kaj proponis partan (por mi) solvon de la problemo. Mi faris mian propran "lambastonon", kiu helpis min. Mi kundividas kun vi.

Priskribo de la problemo

Mi uzis Ubuntu 18.04 por laboro kaj lastatempe rimarkis, ke ŝanĝante aranĝojn per alt+shift en aplikaĵoj kiel Visual Studio Code, Skype, Slack kaj aliaj, kiuj estis kreitaj per Electron, okazas la sekva problemo: fokuso de la eniga kampo iras al la supro. panelo de la fenestro (menuo). Pro aliaj kialoj, mi translokiĝis al Fedora + KDE kaj rimarkis, ke la problemo ne malaperis. Serĉante solvon, mi trovis mirindan artikolon Kiel ripari Skype mem. Koran dankon kamarado brnovk, kiu parolis detale pri la problemo kaj konigis sian metodon por solvi ĝin. Sed la metodo indikita en la artikolo solvis la problemon per nur unu aplikaĵo, nome Skajpo. Por mi, estis ankaŭ kritike kompreni Visual Studio Code, ĉar skribi mesaĝojn kun saltanta menuo, kvankam ĝena, ne tiom multe se vi okupiĝas pri evoluo. Krome, kolego proponis solvon, en kiu la aplikaĵa menuo tute malaperas, kaj mi ne vere volus perdi la menuon en VS Code.

Provis kompreni kio estas malĝusta

Do, mi decidis preni tempon por ekscii, kio okazas. Nun mi mallonge priskribos la vojon, kiun mi prenis, eble iu pli sperta pri ĉi tiu afero helpos klarigi la malfacilaĵojn, kiujn mi renkontis.

Mi malfermis Visual Studio Code kaj komencis bati malsamajn Alt+<%something%> kombinaĵojn por vidi kiel la aplikaĵo respondis. En preskaŭ ĉiuj kazoj, ĉiuj kombinaĵoj krom Alt+Shift funkciis sen perdi fokuson. Ŝajnis, ke iu manĝas la premitan Shift, kiu sekvis post tenado de Alt, kaj la aplikaĵo opiniis, ke mi premis Alt, poste nenion premis, liberigis Alt kaj ĝi ĝoje ĵetis mian fokuson en sian menuon, kio ŝajnis sufiĉe logika por ĝi.

Mi malfermis la agordojn por ŝanĝi klavarajn aranĝojn (vi scias, ĉi tiu longa listo kun markobutonoj kaj ĉiaj agordoj por klavoj) kaj agordis ĝin por ŝanĝi aranĝojn per la Alt-butono, sen aldonaj klakoj.

Solvante la problemon kun ŝanĝado uzante alt+shift en Linukso, en Electron-aplikoj

Post tio, Alt+Tab por ŝanĝi fenestrojn ĉesis funkcii. Nur Tab funkciis, tio estas, iu denove "manĝis" mian Alt. Ne restis demandoj pri kiu ĉi tiu "iu" estas, sed mi tute ne sciis, kion oni povas fari kun li.

Sed ĉar la problemo devis esti solvita iel, tiam venis en menso solvo:

  1. En la agordoj, malŝaltu la klavklavon por ŝanĝi klavarajn aranĝojn (malmarku ĉiujn markobutonojn en la sekcio Ŝanĝi al alia aranĝo);
  2. Kreu vian propran klavon, kiu ŝanĝus la aranĝon por mi

Priskribo de la solvo

Unue, ni instalu programon, kiu ebligas al vi asigni komandojn al la klavoj de Xbindkeys. Bedaŭrinde, normaj iloj ne permesis al mi krei klavoklavon por kombinaĵo kiel Alt+Shift per bela interfaco. Fareblas por Alt+S, Alt+1, Alt+shift+Y ktp. ktp., sed tio ne taŭgas por nia tasko.

sudo dnf install xbindkeysrc

Pliaj detaloj pri ĝi haveblas ĉe ArchWiki
Poste, ni kreos specimenan agordan dosieron por la programo. La specimeno estas sufiĉe mallonga, kun kelkaj komandoj, ĝuste kion vi bezonas por ekscii kiel labori kun ĝi:

xbindkeys -d > ~/.xbindkeysrc

Kiel vi povas vidi el la ekzemplo en la dosiero, ni devas indiki la klavoklavon, kiun ni volas uzi, kaj la komandon, kiu devas esti efektivigita. Aspektas simpla.


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

Kiel klavoklavo, vi povas uzi homlegeblan skribon aŭ uzi ŝlosilkodojn. Ĝi funkciis por mi nur kun kodoj, sed neniu malpermesas al vi iomete eksperimenti.

Por akiri la kodojn vi devas uzi la komandon:

xbindkeys -k

Malgranda "X" fenestro malfermiĝos. Vi nur bezonas premi klavojn kiam la fokuso estas sur ĉi tiu fenestro! Nur en ĉi tiu kazo vi vidos ion tian en la terminalo:


[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

En mia kazo, la kombinaĵo de klavoj Alt+Shift aspektas jene:

m:0x8 + c:50

Nun ni devas certigi, ke kiam vi alklakas ĉi tiun kombinaĵon, la aranĝo ŝanĝas. Mi trovis nur unu funkciantan komandon por specifi la aranĝon:


setxkbmap ru
setxkbmap us

Kiel vi povas vidi el la ekzemplo, ĝi povas nur ebligi unu aŭ alian aranĝon, do nenio venis en mian kapon krom skribi skripton.


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

Nun, se la dosieroj .xbindkeysrc kaj layout.sh troviĝas en la sama dosierujo, tiam la fina vido de la dosiero .xbindkeysrc aspektas jene:


# 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

Post tio ni aplikas la ŝanĝojn:


xbindkeys -p

Kaj vi povas kontroli. Ne forgesu malŝalti iujn ajn opciojn por ŝanĝi aranĝojn en la normaj agordoj.

La rezulto

Kolegoj, mi esperas, ke ĉi tiu artikolo povas helpi iun rapide forigi ĝenan problemon. Persone, mi pasigis mian tutan liberan tagon provante eltrovi kaj solvi la problemon iel, por ke mi ne plu distriĝu de ĝi dum laborhoroj. Mi skribis ĉi tiun artikolon por ŝpari al iu tempon kaj nervojn. Multaj el vi uzas alternativan metodon por ŝanĝi aranĝojn kaj ne komprenas, kio estas la problemo. Mi persone ŝatas ŝanĝi per Alt+Shift. Kaj jen kiel mi volas, ke ĝi funkciu. Se vi dividas mian opinion kaj alfrontas ĉi tiun problemon, ĉi tiu artikolo devus helpi vin.

fonto: www.habr.com

Aldoni komenton