Problēmas risināšana ar pārslēgšanu, izmantojot alt+shift operētājsistēmā Linux, Electron lietojumprogrammās

Sveiki kolēģi!

Es vēlos dalīties ar savu virsrakstā norādītās problēmas risinājumu. Uzrakstīt šo rakstu mani iedvesmoja kolēģe brnovk, kurš nebija slinks un piedāvāja daļēju (priekš manis) problēmas risinājumu. Es pats izveidoju savu “kruķi”, kas man palīdzēja. Es dalos ar jums.

Problēmas apraksts

Es izmantoju Ubuntu 18.04 darbam un nesen pamanīju, ka, pārslēdzot izkārtojumus, izmantojot alt+shift tādās lietojumprogrammās kā Visual Studio Code, Skype, Slack un citās, kas tika izveidotas, izmantojot Electron, rodas šāda problēma: fokuss no ievades lauka pāriet uz augšu loga panelis (izvēlne). Citu iemeslu dēļ es pārgāju uz Fedora + KDE un sapratu, ka problēma nav pazudusi. Meklējot risinājumu, atradu brīnišķīgu rakstu Kā pats labot Skype. Liels paldies biedri brnovk, kurš detalizēti runāja par problēmu un dalījās ar savu metodi tās risināšanai. Bet rakstā norādītā metode problēmu atrisināja tikai ar vienu lietojumprogrammu, proti, Skype. Man arī bija ļoti svarīgi saprast Visual Studio Code, jo ziņu rakstīšana ar lēkājošu izvēlni, lai arī kaitinoša, tomēr nav tik liela, ja esi iesaistīts izstrādē. Turklāt kolēģis ieteica risinājumu, kurā lietojumprogrammas izvēlne pilnībā pazūd, un es patiešām nevēlētos pazaudēt izvēlni VS Code.

Mēģināja saprast, kas par vainu

Tāpēc es nolēmu veltīt laiku, lai noskaidrotu, kas notiek. Tagad es īsi aprakstīšu ceļu, kuru gāju, iespējams, kāds šajā jautājumā zinošāks palīdzēs izskaidrot grūtības, ar kurām es saskāros.

Es atvēru Visual Studio Code un sāku izmantot dažādas Alt+<%something%> kombinācijas, lai redzētu, kā lietojumprogramma reaģē. Gandrīz visos gadījumos visas kombinācijas, izņemot Alt+Shift, darbojās, nezaudējot fokusu. Likās, ka kāds ēd nospiesto Shift, kas sekoja pēc Alt turēšanas, un aplikācija domāja, ka es nospiedu Alt, tad neko nenospiedu, atlaidu Alt un tas priecīgi iemeta manu fokusu savā izvēlnē, kas šķita diezgan loģiski. to.

Es atvēru tastatūras izkārtojumu pārslēgšanas iestatījumus (ziniet, šis garais saraksts ar izvēles rūtiņām un visādiem taustiņu iestatījumiem) un iestatīju, lai tas pārslēgtu izkārtojumus, izmantojot taustiņu Alt, bez papildu klikšķiem.

Problēmas risināšana ar pārslēgšanu, izmantojot alt+shift operētājsistēmā Linux, Electron lietojumprogrammās

Pēc tam Alt+Tab, lai pārslēgtu logus, pārstāja darboties. Nostrādāja tikai Tab, tas ir, kāds atkal “apēda” manu Alt. Nebija jautājumu par to, kas ir šis “kāds”, bet man nebija ne jausmas, ko ar viņu varētu darīt.

Bet tā kā problēma bija kaut kā jārisina, tad prātā ienāca risinājums:

  1. Iestatījumos atspējojiet karsto taustiņu tastatūras izkārtojumu pārslēgšanai (noņemiet atzīmi no visām izvēles rūtiņām sadaļā Pārslēgt uz citu izkārtojumu);
  2. Izveidojiet savu karsto taustiņu, kas mainītu izkārtojumu manā vietā

Risinājuma apraksts

Vispirms instalēsim programmu, kas ļauj piešķirt komandas Xbindkeys taustiņiem. Diemžēl standarta rīki neļāva man izveidot karsto taustiņu kombinācijai, piemēram, Alt+Shift, izmantojot skaistu interfeisu. To var izdarīt ar Alt+S, Alt+1, Alt+shift+Y utt. utt., bet tas nav piemērots mūsu uzdevumam.

sudo dnf install xbindkeysrc

Sīkāka informācija par to ir pieejama vietnē ArchWiki
Tālāk mēs izveidosim programmas iestatījumu faila paraugu. Paraugs ir diezgan īss, ar dažām komandām, tieši tas, kas jums nepieciešams, lai izdomātu, kā ar to strādāt:

xbindkeys -d > ~/.xbindkeysrc

Kā redzat no faila piemēra, mums ir jānorāda karstais taustiņš, kuru vēlamies izmantot, un komanda, kas jāizpilda. Izskatās vienkārši.


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

Kā karsto taustiņu varat izmantot cilvēkiem lasāmu rakstīšanu vai taustiņu kodus. Man tas strādāja tikai ar kodiem, bet neviens neliedz jums nedaudz eksperimentēt.

Lai iegūtu kodus, jums jāizmanto komanda:

xbindkeys -k

Tiks atvērts neliels "X" logs. Taustiņi ir jānospiež tikai tad, kad fokuss ir uz šo logu! Tikai šajā gadījumā terminālī redzēsit kaut ko līdzīgu:


[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

Manā gadījumā Alt+Shift taustiņu kombinācija izskatās šādi:

m:0x8 + c:50

Tagad mums ir jāpārliecinās, ka, noklikšķinot uz šīs kombinācijas, izkārtojums tiek pārslēgts. Es atradu tikai vienu darba komandu, lai norādītu izkārtojumu:


setxkbmap ru
setxkbmap us

Kā redzams no piemēra, tas var iespējot tikai vienu vai otru izkārtojumu, tāpēc man nekas cits neienāca prātā, kā tikai skripta rakstīšana.


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

Tagad, ja faili .xbindkeysrc un layout.sh atrodas vienā direktorijā, .xbindkeysrc faila galīgais skats izskatās šādi:


# 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

Pēc tam mēs piemērojam izmaiņas:


xbindkeys -p

Un jūs varat pārbaudīt. Neaizmirstiet standarta iestatījumos atspējot visas izkārtojuma pārslēgšanas iespējas.

Kopsavilkums

Kolēģi, es ceru, ka šis raksts kādam var palīdzēt ātri atbrīvoties no kaitinošas problēmas. Es personīgi visu savu brīvo dienu pavadīju, mēģinot kaut kā izdomāt un atrisināt problēmu, lai darba laikā mani tā vairs nenovērstu. Es uzrakstīju šo rakstu, lai ietaupītu kādam laiku un nervus. Daudzi no jums izmanto alternatīvu izkārtojumu pārslēgšanas metodi un nesaprot, kāda ir problēma. Man personīgi patīk pārslēgties ar Alt+Shift. Un tā es vēlos, lai tas darbotos. Ja piekrītat manam viedoklim un saskaraties ar šo problēmu, šim rakstam vajadzētu jums palīdzēt.

Avots: www.habr.com

Pievieno komentāru