Hej kolleger!
Jeg vil gerne dele min løsning på problemet, der er nævnt i titlen. Jeg blev inspireret til at skrive denne artikel af en kollega , 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
Использовал Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью . Mange tak til min ven , som uddybede problemet og delte sin løsningsmetode. Men den metode, der er angivet i artiklen, løste problemet med kun én applikation, nemlig Skype. Det var også afgørende for mig at finde ud af Visual Studio Code, fordi det er irriterende at skrive beskeder med en springende menu, men ikke så meget, hvis man laver udvikling. Plus, en kollega foreslog en løsning, hvor applikationsmenuen forsvinder helt, og jeg ville egentlig ikke miste menuen i VS Code.
Jeg prøvede at forstå, hvad der foregik
Så jeg besluttede mig for at tage mig tid til at finde ud af, hvad der foregik. Nu vil jeg kort beskrive den vej, jeg tog. Måske kan en person med mere viden om dette emne 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, mens jeg så applikationen reagere. I næsten alle tilfælde fungerede alle kombinationer undtagen Alt+Shift uden at miste fokus. Det virkede som om nogen spiste det nedtrykkede Shift-tryk, der fulgte efter at have holdt Alt nede, og appen troede, jeg havde trykket på Alt, men trykkede så ikke på noget, slap Alt og kastede heldigvis mit fokus over på sin menu, hvilket virkede ret logisk for den.
Jeg åbnede indstillingerne for tastaturlayoutskift (du ved, den lange liste med afkrydsningsfelter og alle mulige indstillinger for taster) og indstillede layoutskiftet til Alt-knappen uden yderligere klik.

Efter dette stoppede Alt+Tab med at virke til at skifte vinduer. Kun Tab virkede, hvilket betød at nogen "spiste" min Alt igen. Der var ingen tvivl tilbage om, hvem denne “nogen” var, men jeg havde ingen idé om, hvad man kunne gøre med ham.
Men da problemet skulle løses på en eller anden måde, kom man i tanke om en løsning:
- I indstillingerne skal du deaktivere genvejstasten til at skifte tastaturlayout (fjern markeringen i alle afkrydsningsfelter i afsnittet Skift til et andet layout);
- Lav min egen genvejstast, der ville ændre mit layout
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øjerne mig ikke at oprette en genvejstast til en kombination som Alt+Shift gennem en smuk brugerflade. 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 kan findes på
Dernæst opretter vi en eksempelindstillingsfil til programmet. Eksemplet er ret kort, med et par kommandoer, lige hvad du behøver for at finde ud af, hvordan du arbejder med det:
xbindkeys -d > ~/.xbindkeysrcSom du kan se fra eksemplet i filen, skal vi angive den genvejstast, vi vil bruge, og den kommando, der skal udføres. Det 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
Du kan bruge menneskeligt læsbare stave- eller tastekoder som genvejstast. Det virkede kun for mig med koder, men ingen forhindrer dig i at eksperimentere lidt.
For at få koder skal du bruge kommandoen:
xbindkeys -kEt lille "X"-vindue åbnes. Du må kun trykke på tasterne, når fokus er på dette vindue! Kun i dette tilfælde vil du se noget lignende 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 tastekombinationen for Alt+Shift sådan ud:
m:0x8 + c:50Nu skal vi sørge for, at layoutet skifter, når du trykker på denne kombination. Jeg fandt kun én fungerende kommando til at angive layoutet:
setxkbmap ru
setxkbmap us
Som du kan se på eksemplet, kan den kun aktivere det ene eller det andet layout, så intet andet end at skrive et script faldt mig ind.
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
Hvis filerne .xbindkeysrc og layout.sh er i samme mappe, ser .xbindkeysrc-filens endelige udseende 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 alle layoutskiftemuligheder i standardindstillingerne.
Total
Kolleger, jeg håber, at denne artikel vil hjælpe nogen med hurtigt at slippe af med et irriterende problem. Personligt brugte jeg hele min fridag på at forsøge 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 måde at skifte layout på og forstår ikke, hvad problemet er. Personligt kan jeg godt lide at skifte med Alt+Shift. Og jeg vil gerne have, at det fungerer præcis sådan. Hvis du deler min mening og har stødt på dette problem, burde denne artikel hjælpe dig.
Kilde: www.habr.com
