Ukuphela kokusekelwa kwe-xneur kungibangele ukuhlupheka ezinyangeni eziyisithupha ezedlule. (ngokufika kwe-OpenSUSE 15.1 kumadeskithophu ami: nge-xneur enikwe amandla, amafasitela alahlekelwa ukugxila kanye nokucwayiza okuhlekisayo ngesikhathi ngokufaka kwekhibhodi).
“Hhawu, mah, ngiqale ukuthayipha ngesakhiwo esingalungile futhi” - emsebenzini wami lokhu kwenzeka kaningi ngendlela engafanele. Futhi akungezi lutho oluhle.
Ngaso leso sikhathi, mina (njengonjiniyela wokuklama) ngingakwazi ukwenza ngokucacile engikufunayo. Kodwa bengifuna (okokuqala ku-Punto Switcher, bese, ngenxa yeWindows Vista, ekugcineni ngishintshele ku-Linux, kusuka ku-xneur) into eyodwa impela. Ngemva kokuqaphela ukuthi udoti osesikrinini ukwisakhiwo esingalungile (lokhu kuvame ukwenzeka ekupheleni kokuthayipha igama elisha), cindezela u-“Misa okwesikhashana/Yephula”. Futhi uthole lokho okuphrintiwe.
Okwamanje, umkhiqizo unesilinganiso esiphezulu (ngokombono wami) sokusebenza/okuyinkimbinkimbi. Isikhathi sokwabelana.
I-TL.DR
Kuzoba nazo zonke izinhlobo zemininingwane yobuchwepheshe kamuva, ngakho okokuqala -
Okwamanje lokhu kuziphatha okulandelayo kufakwe ikhodi kanzima:
- “Misa isikhashana/Qhosha”: ibuyisela emuva igama lokugcina, ishintsha isakhiwo efasiteleni elisebenzayo (phakathi kuka-0 no-1) bese iyadayela futhi.
- "I-Ctrl engakwesobunxele ngaphandle kwanoma yini": ishintsha isakhiwo efasiteleni elisebenzayo (phakathi kuka-0 no-1).
- “I-Shift Yesokunxele ngaphandle kwanoma yini”: ivula isakhiwo No. 0 efasiteleni elisebenzayo.
- “I-Shift Yesokudla ngaphandle kwanoma yini”: ivula isakhiwo No. 1 efasiteleni elisebenzayo.
Kusukela manje kuqhubeke ngihlela ukwenza ngendlela oyifisayo ukuziphatha. Ngaphandle kwempendulo, ayithakazelisi (ngiyahamba nayo noma kunjalo). Ngikholelwa ukuthi ku-Habré kuzoba nephesenti elanele lezilaleli ezinezinkinga ezifanayo.
NB Ngoba enguqulweni yamanje, i-keylogger inamathiselwe ku-"/dev/input/", i-xswitcher kumele yethulwe ngamalungelo ezimpande:
chown root:root xswitcher
chmod +xs xswitcher
Sicela uqaphele: Umnikazi wefayela nge-suid kumele abe yimpande, ngoba noma ngubani ongumnikazi uzophendulwa i-suid ekuqaleni.
Ama-Paranoids (angihlukile) angakwazi ukufana nawo
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
Engeza i-autostart ukunambitha (kuye ngokuthi i-DE).
Iyasebenza, "ayibuzi iphalishi" (≈30 isekhondi CPU ngosuku, ≈12 MB ku-RSS).
Imininingwane
Manje - imininingwane.
Yonke inqolobane yanikezelwa kuphrojekthi yami yezilwane ezifuywayo, futhi ngivilapha kakhulu ukuqala enye. Ngakho-ke, yonke into inqwabelana (kumafolda nje) futhi imbozwe yi-AGPL ("i-patent reverse").
Ikhodi ye-xswitcher ibhalwe nge-golang, enokufakwa okuncane kwe-C. Kucatshangwa ukuthi le ndlela izoholela enanini elincane lomzamo (kuze kube manje). Ngenkathi ugcina ikhono lokuxhuma lokho okushodayo usebenzisa i-cgo.
Umbhalo uqukethe ukuphawula kokuthi ubolekwe kuphi nokuthi kungani. Ngoba ikhodi ye-xneur "ayizange ingikhuthaze", ngiyithathe njengesiqalo
Ukusebenzisa okuthi "/dev/input/" kunezinzuzo zakho zombili (yonke into iyabonakala, kuhlanganise nokhiye ocindezelwe wokuphindaphinda okuzenzakalelayo) kanye nokubi. Okubi yilezi:
- Ukuphindaphinda okuzenzakalelayo (imicimbi enekhodi “2”) ayihambelani nokuphindaphinda no-x.
- Okokufaka nge-X11 interface akubonakali (le yindlela i-VNC esebenza ngayo, isibonelo).
- Udinga impande.
Ngakolunye uhlangothi, kuyenzeka ubhalisele imicimbi ye-X nge-"XSelectExtensionEvent()". Ungalunguza
Okukhiphayo "okuhlehlayo" okwamanje kwenziwa ngokusebenzisa isikulufu ikhibhodi ebonakalayo. Siyabonga kumbhali we-keybd_event, kodwa ukufinyezwa lapho kusezingeni eliphezulu kakhulu futhi kuzomele kwenziwe kabusha ngokuqhubekayo. Isibonelo, ngisebenzisa ukhiye Wokuwina ongakwesokudla ukuze ukhethe umugqa wesi-3. Futhi Win kwesokunxele kuphela kudluliselwa emuva.
Izimbungulu ezaziwayo
- Asazi lutho mayelana nokufaka “okuhlanganisiwe” (isibonelo: ½). Ayidingeki njengamanje.
- Sidlala Win efanele ngokungalungile. Endabeni yami, iphula ukugcizelela.
- Akukho ukuhlaziya okokufaka okucacile. Kunalokho, kunemisebenzi embalwa: Qhathanisa(), CtrlSequence(), RepeatSequence(), SpaceSequence(). Спасибо
nsmcan ngokunakekela kwakho: uyilungise kukhodi nalapha. Ngamathuba athile, ungakwazi ukubamba iziphazamisi lapho ushintsha.
Kuleli qophelo angazi "ukwenza kanjani" futhi ngingakwamukela noma yiziphi iziphakamiso. - (Oh Nkulunkulu) ukusetshenziswa ngokuncintisana kweziteshi (keyboardEvents, miceEvents).
isiphetho
Ikhodi iyinqubo elula kunazo zonke. Futhi oyisiphukuphuku njengami. Ngakho-ke, ngiyazincoma ngethemba lokuthi cishe noma yimuphi uchwepheshe uzokwazi ukuqedela akufunayo. Futhi ngenxa yalokhu, lo mkhiqizo ngeke ubhubhe ngaphandle kokusekelwa, njengokuningi nje okokuzijabulisa.
Good luck!
Source: www.habr.com