I-analogue entsha ye-Punto Switcher ye-linux: xswitcher

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.

I-analogue entsha ye-Punto Switcher ye-linux: xswitcher
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 - isixhumanisi "to touch" kwabangenasineke.

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 IGITHI futhi bahlangane esizeni. Kanjalo:

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

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 ikhodi ye-xinput. Angitholanga lutho olufana nalokhu, futhi ukuqaliswa okunzima ngokushesha kwathatha imigqa eyikhulu yekhodi C. Ibeke eceleni okwamanje.

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

Engeza amazwana