Los die probleem op met skakeling deur alt + shift in Linux, in toepassings op Electron

Hallo kollegas!

Ek wil my oplossing deel vir die probleem wat in die titel aangedui word. Skryf 'n artikel geïnspireer deur 'n kollega brnovk, wat nie te lui was nie en 'n gedeeltelike (vir my) oplossing vir die probleem gebied het. Ek het my “kruk” gemaak wat my gehelp het. Ek deel met jou.

Beskrywing van die probleem

Ek het Ubuntu 18.04 vir werk gebruik en onlangs het ek opgemerk dat wanneer die uitleg verander word met alt + shift in toepassings soos Visual Studio Code, Skype, Slack en ander wat met Electron geskep word, die volgende probleem ontstaan: fokus vanaf die invoerveld gaan na die boonste balk van die venster (kieslys). Om ander redes het ek na Fedora + KDE geskuif en besef dat die probleem nie verdwyn het nie. Op soek na 'n oplossing het ek 'n wonderlike artikel gevind Doen-dit-self Skype herstel. Baie dankie kameraad brnovkdat hy breedvoerig oor die probleem gepraat het en sy manier om dit op te los, gedeel het. Maar die metode wat in die artikel aangedui word, het die probleem met slegs een toepassing, naamlik Skype, gesluit. Dit was ook vir my van kritieke belang om Visual Studio Code te hanteer, want die skryf van boodskappe met 'n springmenu is irriterend, maar nie soseer as jy besig is om te ontwikkel nie. Boonop het 'n kollega 'n oplossing voorgestel waar die toepassingskieslys heeltemal verdwyn, en ek wil nie regtig die spyskaart in VS-kode verloor nie.

Het probeer uitvind wat aangaan

So, ek het besluit om die tyd te neem om uit te vind wat aangaan. Nou sal ek kortliks beskryf watter pad ek gegaan het, miskien sal iemand wat meer vaardig is in hierdie saak, help om die probleme wat ek teëgekom het, op te klaar.

Ek het Visual Studio Code oopgemaak en verskillende kombinasies van Alt+<%something%> begin druk en kyk hoe die toepassing gereageer het. In byna alle gevalle het alle kombinasies, behalwe Alt + Shift, uitgewerk sonder om fokus te verloor. Dit het gelyk of iemand die gedrukte Shift eet, wat gevolg het nadat jy Alt ingehou en ingehou het, en die toepassing dink dat ek Alt gedruk het, toe niks gedruk het nie, Alt vrygelaat het en dit het my fokus vreugdevol in sy spyskaart gegooi, wat redelik logies gelyk het om hom.

Ek het die sleutelborduitleg-skakeling-instellings oopgemaak (jy weet, hierdie lang lys met merkblokkies en allerhande instellings vir die sleutels) en die sleutelborduitleg oorskakel na die Alt-knoppie, sonder enige bykomende klik.

Los die probleem op met skakeling deur alt + shift in Linux, in toepassings op Electron

Daarna het Alt+Tab opgehou werk om vensters te verander. Net Tab het gewerk, dit wil sê iemand het weer my Alt “geëet”. Wie hierdie “iemand” was, vra nie meer nie, maar ek het geen idee wat met hom gedoen kan word nie.

Maar aangesien die probleem op een of ander manier opgelos moes word, het die oplossing by my opgekom:

  1. In die instellings, deaktiveer die sneltoets om sleutelborduitlegte te verander (vee alle merkblokkies uit in die Skakel na 'n ander uitleg-afdeling uit);
  2. Skep jou eie sneltoets wat my uitleg sal verander

Oplossing Beskrywing

Kom ons installeer eers 'n program waarmee u opdragte aan Xbindkeys kan toewys. Ongelukkig het die gewone gereedskap my nie toegelaat om 'n sneltoets te skep vir 'n kombinasie van die Alt + Shift-tipe deur 'n pragtige koppelvlak nie. Kan gedoen word vir Alt+S, Alt+1, Alt+shift+Y ens. ens., maar dit is nie geskik vir ons taak nie.

sudo dnf install xbindkeysrc

Meer besonderhede daaroor is op ArchWiki
Kom ons skep dan 'n voorbeeldinstellingslêer vir die program. Die voorbeeld is redelik kort, met 'n paar opdragte net wat jy nodig het om uit te vind hoe om daarmee te werk:

xbindkeys -d > ~/.xbindkeysrc

Soos u kan sien uit die voorbeeld wat in die lêer is, moet ons die snelsleutel spesifiseer wat ons wil gebruik en die opdrag wat uitgevoer moet word. Lyk eenvoudig.


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

As 'n snelsleutel kan jy mensleesbare spelling gebruik of sleutelkodes gebruik. Dit het vir my net met kodes gewerk, maar niemand verbied jou om 'n bietjie te eksperimenteer nie.

Om die kodes te kry, moet jy die opdrag gebruik:

xbindkeys -k

'n Klein "X" venster sal oopmaak. Jy hoef net die sleutels te druk wanneer jy op hierdie venster fokus! Slegs in hierdie geval sal jy iets soos hierdie in die terminale sien:


[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

In my geval lyk die kombinasie vir die Alt + Shift-sleutels soos volg:

m:0x8 + c:50

Nou moet jy seker maak dat wanneer jy op hierdie kombinasie klik, die uitleg verander word. Ek het net een werkende opdrag gevind om die uitleg te spesifiseer:


setxkbmap ru
setxkbmap us

Soos jy uit die voorbeeld kan sien, kan sy net die een of ander uitleg aanskakel, so niks anders as om 'n draaiboek te skryf het by my opgekom nie.


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

Nou as die .xbindkeysrc- en layout.sh-lêers in dieselfde gids is, dan lyk die finale vorm van die .xbindkeysrc-lêer so:


# 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

Pas daarna die veranderinge toe:


xbindkeys -p

En jy kan kyk. Moenie vergeet om enige opsies vir die omskakeling van uitlegte in die standaardinstellings te deaktiveer nie.

Totale

Kollegas, ek hoop dat hierdie artikel iemand kan help om vinnig van 'n irriterende probleem ontslae te raak. Persoonlik het ek my hele dag af spandeer om die probleem op een of ander manier te probeer uitpluis en oplos, sodat ek nie meer hierdeur afgelei word gedurende werksure nie. Ek het hierdie artikel geskryf om iemand tyd en senuwees te bespaar. Baie van julle gebruik 'n alternatiewe manier om uitleg te verander en verstaan ​​nie wat die probleem is nie. Ek persoonlik hou daarvan om met Alt+Shift te wissel. En ek wil hê dit moet so werk. As jy my mening deel en met hierdie probleem gekonfronteer word, behoort hierdie artikel jou te help.

Bron: will.com

Voeg 'n opmerking