Analogue yatsopano ya Punto Switcher ya linux: xswitcher

Kutha kwa chithandizo cha xneur kwandipangitsa kuvutika m'miyezi isanu ndi umodzi yapitayo. (ndi kubwera kwa OpenSUSE 15.1 pa desktops yanga: ndi xneur yathandizidwa, windows kutaya chidwi ndikuseka moseketsa pakapita nthawi ndikulowetsa kiyibodi).

"O, zowopsa, ndidayambanso kulemba molakwika" - m'ntchito yanga izi zimachitika mopanda ulemu. Ndipo sichimawonjezera chilichonse chabwino.

Analogue yatsopano ya Punto Switcher ya linux: xswitcher
Nthawi yomweyo, ine (monga injiniya wopanga) nditha kupanga zomwe ndikufuna. Koma ndimafuna (choyamba kuchokera ku Punto Switcher, ndiyeno, chifukwa cha Windows Vista, potsiriza kusintha ku Linux, kuchokera ku xneur) chinthu chimodzi. Pozindikira kuti zinyalala zomwe zili pazenera zili m'malo olakwika (izi zimachitika kumapeto kwa kulemba liwu latsopano), pondani "Imani / Dulani". Ndipo pezani zomwe mwasindikiza.

Pakalipano, malonda ali ndi mulingo woyenera kwambiri (kuchokera kumalingaliro anga) magwiridwe antchito / zovuta. Yakwana nthawi yogawana.

TL.DR

Padzakhala mitundu yonse yaukadaulo pambuyo pake, kotero choyamba - link "to touch" kwa osapirira.

Pakadali pano machitidwe awa ndi hardcode:

  • "Imani / Dulani": ikani kumbuyo mawu omaliza, imasintha mawonekedwe pawindo lomwe likugwira ntchito (pakati pa 0 ndi 1) ndikuyimbanso.
  • "Kumanzere Ctrl popanda chilichonse": amasintha masanjidwe pawindo lomwe likugwira ntchito (pakati pa 0 ndi 1).
  • "Left Shift popanda chilichonse": imayatsa masanjidwe No. 0 pawindo logwira ntchito.
  • "Shift Yoyenera popanda chilichonse": imayatsa masanjidwe No. 1 pawindo logwira ntchito.

Kuyambira pano ndikukonzekera kusintha khalidwe. Popanda mayankho, sizosangalatsa (ndili bwino nazo). Ndikukhulupirira kuti pa HabrΓ© padzakhala chiwerengero chokwanira cha omvera omwe ali ndi mavuto ofanana.

NB Chifukwa mu mtundu wapano, keylogger imalumikizidwa ku "/dev/input/", xswitcher iyenera kukhazikitsidwa ndi ufulu wa mizu:

chown root:root xswitcher
chmod +xs xswitcher

Chonde dziwani: Mwini fayilo ndi suid ayenera kukhala mizu, chifukwa Yemwe ali mwiniwake adzasinthidwa kukhala suid poyambitsa.

Ma Paranoids (inenso sindiri wosiyana nawo) amatha kukhala nawo GIT ndi kusonkhana pamalowo. Monga choncho:

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

Onjezani autostart kuti mulawe (kutengera DE).

Zimagwira ntchito, "sapempha phala" (β‰ˆ30 masekondi CPU patsiku, β‰ˆ12 MB mu RSS).

Onani zambiri

Tsopano - tsatanetsatane.

Chosungira chonsecho chidaperekedwa ku polojekiti yanga ya ziweto, ndipo ndine waulesi kuti ndiyambe ina. Chifukwa chake, chilichonse chimawunjika (mumafoda okha) ndikukutidwa ndi AGPL ("reverse patent").

Khodi ya xswitcher imalembedwa mu golang, yokhala ndi zochepa zochepa za C. Zimaganiziridwa kuti njirayi idzapangitsa kuti pakhale khama lochepa (mpaka pano). Pokhala ndi kuthekera kolumikiza zomwe zikusowa pogwiritsa ntchito cgo.

Lembalo lili ndi ndemanga za komwe anabwereka komanso chifukwa chake. Chifukwa nambala ya xneur "siinandilimbikitse", ndinaitenga ngati poyambira loloswitcher.

Kugwiritsa ntchito "/dev/input/" kuli ndi zabwino zonse (chilichonse chikuwoneka, kuphatikiza kiyi yobwereza yokha) ndi zovuta zake. Zoyipa zake ndi:

  • Kubwereza-bwereza (zochitika zokhala ndi code "2") sikulumikizana ndi kubwereza ndi x.
  • Kulowetsa kudzera pa X11 sikukuwoneka (umu ndi momwe VNC imagwirira ntchito, mwachitsanzo).
  • Amafuna mizu.

Kumbali ina, ndizotheka kulembetsa ku X zochitika kudzera pa "XSelectExtensionEvent()". Mutha kuyang'ana xinput kodi. Sindinapeze chilichonse chonga ichi kuti ndipite, ndipo kukhazikitsa movutikira kudatenga mizere zana ya C code. Ikani pambali pano.

Kutulutsa kwa "reverse" pano kumapangidwa kudzera mukuboola kiyibodi yeniyeni. Tithokoze mlembi wa keybd_event, koma kutulutsa komwe kuli kokwezeka kwambiri ndipo kuyenera kukonzedwanso. Mwachitsanzo, ndimagwiritsa ntchito kiyi ya Win yoyenera kusankha mzere wachitatu. Ndipo Win yakumanzere yokha imatumizidwanso.

Zodziwika Bugs

  • Sitikudziwa kalikonse za kuyika kwa "composite" (chitsanzo: Β½). Sichikufunika pakali pano.
  • Tikusewera Win yoyenera molakwika. Kwa ine, zimaswa kutsindika.
  • Palibe zofotokozera momveka bwino. M'malo mwake, pali ntchito zingapo: Fananizani (), CtrlSequence (), RepeatSequence (), SpaceSequence (). Бпасибо nsmcan kwa chisamaliro chanu: anakonza izo mu code ndi apa. Ndi kuthekera kwina, mutha kugwira nsikidzi posintha.
    Pakadali pano sindikudziwa "momwe" ndipo ndingalandire malingaliro aliwonse.
  • (O Mulungu) kugwiritsa ntchito njira zopikisana (keyboardEvents, miceEvents).

Pomaliza

Code ndiyo njira yosavuta. Ndipo opusa ngati ine. Chifukwa chake, ndimadzisangalatsa ndi chiyembekezo kuti pafupifupi katswiri aliyense atha kukwaniritsa zomwe akufuna. Ndipo chifukwa cha izi, mankhwalawa sangawonongeke popanda kuthandizidwa, monga zambiri zongosangalatsa.

Zabwino zonse!

Source: www.habr.com

Kuwonjezera ndemanga