Hei kollegaer!
Jeg vil dele min løsning på problemet som er angitt i tittelen. Jeg ble inspirert til å skrive denne artikkelen av en kollega
Beskrivelse av problemet
Jeg brukte Ubuntu 18.04 til jobb og la nylig merke til at når du bytter layout med alt+shift i applikasjoner som Visual Studio Code, Skype, Slack og andre som ble opprettet med Electron, oppstår følgende problem: fokus fra inndatafeltet går til toppen panelet i vinduet (menyen). Av andre grunner flyttet jeg til Fedora + KDE og innså at problemet ikke hadde forsvunnet. Mens jeg lette etter en løsning, fant jeg en fantastisk artikkel
Prøvde å forstå hva som er galt
Så jeg bestemte meg for å ta meg tid til å finne ut hva som foregikk. Nå skal jeg kort beskrive veien jeg tok, kanskje noen som er mer kunnskapsrike i denne saken vil hjelpe med å forklare vanskelighetene jeg møtte.
Jeg åpnet Visual Studio Code og begynte å trykke på forskjellige Alt+<%something%>-kombinasjoner for å se hvordan applikasjonen reagerte. I nesten alle tilfeller fungerte alle kombinasjoner unntatt Alt+Shift uten å miste fokus. Det virket som om noen spiste den trykket Shift, som fulgte etter å ha holdt nede Alt, og applikasjonen mente at jeg trykket Alt, så ikke trykket på noe, slapp Alt og det kastet gledelig fokuset mitt inn i menyen, noe som virket ganske logisk å den.
Jeg åpnet innstillingene for å bytte tastaturoppsett (du vet, denne lange listen med avmerkingsbokser og alle slags innstillinger for taster) og satte den til å bytte oppsett ved hjelp av Alt-knappen, uten ekstra klikk.
Etter det sluttet Alt+Tab for å bytte vinduer å fungere. Bare Tab fungerte, det vil si at noen "spiste" min Alt igjen. Det var ingen spørsmål om hvem denne "noen" var, men jeg hadde ingen anelse om hva som kunne gjøres med ham.
Men siden problemet måtte løses på en eller annen måte, kom en løsning til tankene:
- I innstillingene, deaktiver hurtigtasten for å bytte tastaturoppsett (fjern merket for alle avmerkingsboksene i delen Bytt til en annen layout);
- Lag din egen hurtigtast som ville bytte layout for meg
Beskrivelse av løsningen
La oss først installere et program som lar deg tilordne kommandoer til Xbindkeys-tastene. Dessverre tillot ikke standardverktøy meg å lage en hurtigtast for en kombinasjon som Alt+Shift gjennom et vakkert grensesnitt. Kan gjøres for Alt+S, Alt+1, Alt+shift+Y osv. osv., men dette er ikke egnet for vår oppgave.
sudo dnf install xbindkeysrc
Mer informasjon om det er tilgjengelig på
Deretter vil vi lage en eksempelinnstillingsfil for programmet. Eksemplet er ganske kort, med noen få kommandoer, akkurat det du trenger for å finne ut hvordan du jobber med det:
xbindkeys -d > ~/.xbindkeysrc
Som du kan se fra eksemplet i filen, må vi angi hurtigtasten vi vil bruke og kommandoen som skal utføres. Ser enkelt ut.
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
Som en hurtigtast kan du bruke menneskelig lesbar skrift eller bruke nøkkelkoder. Det fungerte for meg bare med koder, men ingen forbyr deg å eksperimentere litt.
For å få kodene må du bruke kommandoen:
xbindkeys -k
Et lite "X"-vindu åpnes. Du trenger bare å trykke på tastene når fokus er på dette vinduet! Bare i dette tilfellet vil du se noe slikt 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 mitt tilfelle ser Alt+Shift-tastkombinasjonen slik ut:
m:0x8 + c:50
Nå må vi sørge for at når du klikker på denne kombinasjonen, endres layouten. Jeg fant bare en fungerende kommando for å spesifisere oppsettet:
setxkbmap ru
setxkbmap us
Som du kan se fra eksempelet, kan det bare aktivere en eller annen layout, så ingenting kom til meg annet enn å skrive et manus.
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
Nå, hvis .xbindkeysrc- og layout.sh-filene er plassert i samme katalog, ser den endelige visningen av .xbindkeysrc-filen slik ut:
# 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
Etter det tar vi i bruk endringene:
xbindkeys -p
Og du kan sjekke. Ikke glem å deaktivere eventuelle alternativer for å bytte layout i standardinnstillingene.
Total
Kolleger, jeg håper at denne artikkelen kan hjelpe noen raskt å bli kvitt et irriterende problem. Personlig brukte jeg hele fridagen min på å prøve å finne ut og løse problemet på en eller annen måte, slik at jeg ikke lenger ble distrahert av det i arbeidstiden. Jeg skrev denne artikkelen for å spare tid og nerver. Mange av dere bruker en alternativ metode for å bytte layout og forstår ikke hva problemet er. Jeg personlig liker å bytte med Alt+Shift. Og det er slik jeg vil at det skal fungere. Hvis du deler min mening og står overfor dette problemet, bør denne artikkelen hjelpe deg.
Kilde: www.habr.com