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.
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 -
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
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
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
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