Løsning af problemet med at skifte ved hjælp af alt+shift i Linux, i Electron-applikationer

Hej kolleger!

Jeg vil gerne dele min løsning på problemet, der er angivet i titlen. Jeg blev inspireret til at skrive denne artikel af en kollega brnovk, som ikke var doven og tilbød en delvis (for mig) løsning på problemet. Jeg lavede min egen "krykke", som hjalp mig. Jeg deler med dig.

Beskrivelse af problemet

Jeg brugte Ubuntu 18.04 til arbejde og bemærkede for nylig, at når jeg skiftede layout ved hjælp af alt+shift i applikationer som Visual Studio Code, Skype, Slack og andre, der blev oprettet ved hjælp af Electron, opstår følgende problem: fokus fra inputfeltet går til toppen vinduets panel (menu). Af andre grunde flyttede jeg til Fedora + KDE og indså, at problemet ikke var forsvundet. Mens jeg ledte efter en løsning, fandt jeg en vidunderlig artikel Sådan reparerer du Skype selv. Mange tak kammerat brnovk, som talte detaljeret om problemet og delte sin metode til at løse det. Men metoden angivet i artiklen løste problemet med kun én applikation, nemlig Skype. For mig var det også kritisk at forstå Visual Studio Code, fordi at skrive beskeder med en springende menu, selvom det er irriterende, er ikke så meget, hvis du er involveret i udvikling. Plus, en kollega foreslog en løsning, hvor applikationsmenuen forsvinder fuldstændigt, og jeg ville ikke rigtig gerne miste menuen i VS Code.

Forsøgte at forstå, hvad der er galt

Så jeg besluttede at tage mig tid til at finde ud af, hvad der foregik. Nu vil jeg kort beskrive den vej, jeg tog, måske vil nogen, der er mere vidende i denne sag, hjælpe med at forklare de vanskeligheder, jeg stødte på.

Jeg åbnede Visual Studio Code og begyndte at trykke på forskellige Alt+<%something%>-kombinationer for at se, hvordan applikationen reagerede. I næsten alle tilfælde fungerede alle kombinationer undtagen Alt+Shift uden at miste fokus. Det virkede som om nogen spiste det trykket Shift, som fulgte efter at have holdt Alt nede, og applikationen troede, at jeg trykkede Alt, så ikke trykkede på noget, slap Alt og det kastede glædeligt mit fokus ind i sin menu, hvilket virkede ret logisk at det.

Jeg åbnede indstillingerne for at skifte tastaturlayout (du ved, denne lange liste med afkrydsningsfelter og alle mulige indstillinger for taster) og indstillede den til at skifte layout ved hjælp af Alt-knappen uden yderligere klik.

Løsning af problemet med at skifte ved hjælp af alt+shift i Linux, i Electron-applikationer

Derefter holdt Alt+Tab for at skifte vinduer op med at fungere. Kun Tab virkede, det vil sige nogen "spiste" min Alt igen. Der var ingen spørgsmål tilbage om, hvem denne "nogen" var, men jeg anede ikke, hvad der kunne gøres med ham.

Men da problemet skulle løses på en eller anden måde, kom der en løsning i tankerne:

  1. I indstillingerne skal du deaktivere genvejstasten til at skifte tastaturlayout (fjern markeringen af ​​alle afkrydsningsfelter i sektionen Skift til et andet layout);
  2. Opret din egen genvejstast, der ville ændre layoutet for mig

Beskrivelse af løsningen

Lad os først installere et program, der giver dig mulighed for at tildele kommandoer til Xbindkeys-tasterne. Desværre tillod standardværktøjer mig ikke at oprette en genvejstast til en kombination som Alt+Shift gennem en smuk grænseflade. Kan gøres for Alt+S, Alt+1, Alt+shift+Y osv. osv., men dette er ikke egnet til vores opgave.

sudo dnf install xbindkeysrc

Flere detaljer om det findes på ArchWiki
Dernæst vil vi oprette en prøveindstillingsfil til programmet. Eksemplet er ret kort med et par kommandoer, lige hvad du skal bruge for at finde ud af, hvordan du arbejder med det:

xbindkeys -d > ~/.xbindkeysrc

Som du kan se fra eksemplet i filen, skal vi angive den genvejstast, vi vil bruge, og den kommando, der skal udføres. Ser simpelt ud.


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

Som genvejstast kan du bruge menneskelig læsbar skrift eller bruge nøglekoder. Det fungerede kun for mig med koder, men ingen forbyder dig at eksperimentere lidt.

For at få koderne skal du bruge kommandoen:

xbindkeys -k

Et lille "X" vindue åbnes. Du behøver kun at trykke på tasterne, når fokus er på dette vindue! Kun i dette tilfælde vil du se noget som dette i terminalen:


[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

I mit tilfælde ser Alt+Shift-tastkombinationen sådan ud:

m:0x8 + c:50

Nu skal vi sikre os, at layoutet skifter, når du klikker på denne kombination. Jeg fandt kun en arbejdskommando til at specificere layoutet:


setxkbmap ru
setxkbmap us

Som du kan se fra eksemplet, kan det kun aktivere et eller andet layout, så der kom ikke noget til mig andet end at skrive et 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

Nu, hvis .xbindkeysrc- og layout.sh-filerne er placeret i samme mappe, så ser den endelige visning af .xbindkeysrc-filen således ud:


# 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

Derefter anvender vi ændringerne:


xbindkeys -p

Og du kan tjekke. Glem ikke at deaktivere eventuelle muligheder for at skifte layout i standardindstillingerne.

Total

Kolleger, jeg håber, at denne artikel kan hjælpe nogen med hurtigt at slippe af med et irriterende problem. Personligt brugte jeg hele min fridag på at finde ud af og løse problemet på en eller anden måde, så jeg ikke længere ville blive distraheret af det i arbejdstiden. Jeg skrev denne artikel for at spare nogen tid og nerver. Mange af jer bruger en alternativ metode til at skifte layout og forstår ikke, hvad problemet er. Jeg kan personligt godt lide at skifte med Alt+Shift. Og det er sådan jeg vil have det til at fungere. Hvis du deler min mening og står over for dette problem, bør denne artikel hjælpe dig.

Kilde: www.habr.com

Tilføj en kommentar