Analogue nyowani yePunto Switcher yelinux: xswitcher

Kupera kwerutsigiro rwexneur kwakonzera kuti nditambure mumwedzi mitanhatu yapfuura. (nekuuya kweOpenSUSE 15.1 pamatafura angu: ine xneur inogoneswa, windows inorasikirwa nekutarisisa uye flicker inosekesa munguva nekuisa keyboard).

"Oo, zvakaipa, ndatanga kutaipa zvakare muchimiro chisiri icho" - mubasa rangu izvi zvinoitika zvisingaite kazhinji. Uye hazviwedzeri chinhu chakanaka.

Analogue nyowani yePunto Switcher yelinux: xswitcher
Panguva imwecheteyo, ini (sejinjiniya yekugadzira) ndinogona kunyatso gadzira zvandinoda. Asi ini ndaida (kutanga kubva kuPunto Switcher, uyezve, nekuda kweWindows Vista, pakupedzisira kuchinja kuLinux, kubva kuxneur) chinhu chimwe chete. Waona kuti marara ari pachiratidziro ari mune isiriyo marongero (izvi zvinowanzoitika pakupera kwekunyora izwi idzva), tsikitsira pa "Mira / Kupwanya". Uye tora zvawakadhinda.

Parizvino, chigadzirwa chine optimal (kubva pakuona kwangu) kushanda / kuoma kwechiyero. Inguva yekugovana.

TL.DR

Pachave nemhando dzese dzehunyanzvi ruzivo gare gare, saka kutanga - link "to touch" kune vasina moyo murefu.

Parizvino maitiro anotevera akaomeswa:

  • "Kumbomira / Kuputsa": inodzosera izwi rekupedzisira, inoshandura marongero muhwindo rinoshanda (pakati pe0 ne1) uye dials zvakare.
  • "Kuruboshwe Ctrl pasina chero chinhu": inoshandura dhizaini muhwindo rinoshanda (pakati pe0 ne1).
  • "Kuruboshwe Shift pasina chero chinhu": inobatidza marongero Nha. 0 muhwindo rinoshanda.
  • "Kurudyi Shift pasina chero chinhu": inovhura marongero Nha. 1 muhwindo rinoshanda.

Kubva zvino zvichienda mberi ndinoronga kugadzirisa maitiro. Pasina mhinduro, hazvinakidze (ini zvakanaka nazvo zvakadaro). Ndinotenda kuti paHabrΓ© pachave nechikamu chakakwana chevateereri vane matambudziko akafanana.

NB Nokuti mune yazvino vhezheni, keylogger inonamirwa ku "/dev/input/", xswitcher inofanira kutangwa ine midzi kodzero:

chown root:root xswitcher
chmod +xs xswitcher

Tapota cherechedza: Muridzi wefaira ane suid anofanira kunge ari mudzi, nekuti ani nani muridzi achashandurwa kuita suid pakutanga.

Paranoids (ini handisi mutsauko) inogona kutevedzera kubva GIT uye kuungana panzvimbo. Saizvozvo:

go get "github.com/micmonay/keybd_event"
go get "github.com/gvalkov/golang-evdev"

### X11 headers for OpenSUSE/deb-based
zypper install libX11-devel libXmu-devel
apt-get install libx11-dev libxmu-dev

cd "x switcher/src/"
go build -o xswitcher -ldflags "-s -w" --tags static_all src/*.go

Wedzera autostart kuravira (zvinoenderana neDE).

Inoshanda, "haikumbire porridge" (β‰ˆ30 masekonzi CPU pazuva, β‰ˆ12 MB muRSS).

Ona zvakadzama

Zvino - ruzivo.

Iyo yese repository pakutanga yakatsaurirwa kupurojekiti yangu yemhuka, uye ndine nungo yekutanga imwe. Saka, zvese zvinounganidzwa (mumaforodha chete) uye zvakafukidzwa neAGPL ("reverse patent").

Iko xswitcher code yakanyorwa mu golang, ine zvishoma inclusions yeC. Zvinofungidzirwa kuti nzira iyi ichaguma nehuwandu hushoma hwekuedza (kusvika ikozvino). Uchiri kuchengetedza kugona kubatanidza izvo zvisipo uchishandisa cgo.

Rugwaro rwacho rwune tsinhiro dzokuti rwakakweretwa kupi uye nei. Nokuti iyo xneur code "haina kundikurudzira", ndakaitora sekutanga loloswitcher.

Kushandisa "/dev/input/" kune zvese zvayakanakira (zvese zvinoonekwa, kusanganisira yakadzvanywa auto-repeat kiyi) uye zvayakaipira. Zvakaipa ndezvekuti:

  • Kudzokorora otomatiki (zviitiko zvine kodhi "2") hazvienderane nedzokororo ne x.
  • Kupinza kuburikidza neX11 interfaces hazvionekwe (ndiwo mashandiro anoita VNC, semuenzaniso).
  • Inoda mudzi.

Kune rimwe divi, zvinokwanisika kunyorera kune X zviitiko kuburikidza ne "XSelectExtensionEvent()". Unogona kudongorera xinput code. Ini handina kuwana chero chinhu chakadai kuti ndiende, uye kuita kwakashata kwakabva kwatora zana mitsara yeC kodhi. Zviise parutivi izvozvi.

Iyo "reverse" inobuda parizvino inogadzirwa kuburikidza nekupuruzira iyo chaiyo kiyibhodhi. Kutenda kumunyori we keybd_event, asi iyo yekubvisa iripo yakanyanya-level uye ichafanirwa kuvandudzwa zvakare. Semuenzaniso, ini ndinoshandisa Win chaiyo kiyi kusarudza iyo 3rd mutsara. Uye Win chete yakasara inotumirwa kumashure.

Anozivikanwa Bugs

  • Isu hatizive chero chinhu nezve "composite" kuisa (muenzaniso: Β½). Hazvidiwe izvozvi.
  • Tiri kutamba Win chaiyo zvisizvo. Mune yangu, inoputsa kusimbisa.
  • Hapana kupatsanurwa kwakajeka. Pane kudaro, kune akati wandei mabasa: Enzanisa (), CtrlSequence(), RepeatSequence(), SpaceSequence(). Бпасибо nsmcan nekuchengeta kwako: yakagadzirisa mukodhi uye pano. Neimwe mukana, unogona kubata tsikidzi kana uchitsiva.
    Panguva ino handizive "kuita" uye ndingagamuchira chero mazano.
  • (Oh Mwari) kukwikwidza kushandiswa kwezviteshi (keyboardEvents, miceEvents).

mhedziso

Kodhi ndiyo nzira yakapfava. Uye benzi seni. Saka, ndinozvibata kumeso ndine tariro yekuti chero technician achakwanisa kuzadzisa zvaanoda. Uye nekuda kweizvi, chigadzirwa ichi hachizoparara pasina tsigiro, senge yakawanda-yekunakidzwa.

Good luck!

Source: www.habr.com

Voeg