Analoga nû ya Punto Switcher ji bo linux: xswitcher

Dawiya piştevaniya xneur di şeş mehên borî de bûye sedema hin êşan. (bi hatina OpenSUSE 15.1-ê li ser sermaseyên min: bi xneur-ê aktîfkirî re, pencereyên balê winda dikin û bi têketina klavyeyê re di wextê de kêfa xwe dihejînin).

"Oh, lanet bike, min dîsa dest bi nivîsandina nexşeya xelet kir" - di xebata min de ev pir caran bi neheqî diqewime. Û ew tiştek erênî zêde nake.

Analoga nû ya Punto Switcher ji bo linux: xswitcher
Di heman demê de, ez (wek endezyarek sêwiranê) dikarim bi zelalî tiştê ku ez dixwazim formul bikim. Lê min (destpêkê ji Punto Switcher, û dûv re, bi saya Windows Vista, di dawiyê de veguherî Linux, ji xneur) tam tiştek dixwest. Gava ku hûn fêm bikin ku çopê li ser ekranê di nexşeyek xelet de ne (ev bi gelemperî di dawiya nivîsandina peyvek nû de çêdibe), bişkînin "Pause / Break". Û tiştê ku we çap kiriye bistînin.

Heya nuha, hilber xwedan rêjeya fonksiyonê / tevliheviyê ya çêtirîn (ji nêrîna min) ye. Dem dema parvekirinê ye.

TL.DR

Dê paşê her cûre hûrguliyên teknîkî hebin, ji ber vê yekê pêşî - lînka "têkilkirin" ji bo bêsebiran.

Heya nuha, tevgerê jêrîn hişk e:

  • "Pause / Break": peyva paşîn paşde vedigerîne, di pencereya çalak de (navbera 0 û 1-ê) layoutê diguherîne û ji nû ve vedigere.
  • "Çep Ctrl bêyî tiştek": di pencereya çalak de (navbera 0 û 1) layoutê diguherîne.
  • "Guhertina çepê bêyî tiştek": di pencereya çalak de nexşeya hejmar 0 vedike.
  • "Rast Shift bêyî tiştek": di pencereya çalak de nexşeya No. 1 vedike.

Ji niha û pê ve ez plan dikim ku tevgerê xweş bikim. Bêyî bertek, ew ne balkêş e (ez bi her awayî jê re baş im). Ez bawer dikim ku li ser Habré dê rêjeyek têr a temaşevanan bi pirsgirêkên mîna wan hebin.

NB Bo di guhertoya heyî de, keylogger bi "/dev/input/" ve girêdayî ye, divê xswitcher bi mafên root ve were destpêkirin:

chown root:root xswitcher
chmod +xs xswitcher

Ji kerema xwe not bikin: Xwediyê pelê bi suid divê root be, ji ber kî ku xwediyê wê be dê di destpêkê de bibe suid.

Paranoîd (ez ne îstîsna me) dikarin ji wan klon bikin GIT û li ser malperê bicivînin. Wisa:

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

Destpêkirina otomatîkî li tama xwe zêde bikin (li gorî DE).

Ew dixebitî, "pişkê napirse" (≈30 saniye CPU-ya rojê, ≈12 MB di RSS de).

Agahdarî bibînin

Niha - hûrgulî.

Tevahiya depo bi eslê xwe ji projeya heywanê min re hate veqetandin, û ez pir tembel im ku dest bi yekê din bikim. Ji ber vê yekê, her tişt tê berhev kirin (tenê di peldankan de) û ji hêla AGPL ("patenta berevajî") ve tê girtin.

Koda xswitcher bi golangê, bi hindiktirîn tevlêbûnên C-yê tê nivîsandin. Tê texmîn kirin ku ev nêzîkatî dê bi kêmanî hewildanek encam bide (heta nuha heye). Digel ku bi karanîna cgo ve kapasîteya girêdana tiştê ku wenda ye diparêze.

Di nivîsê de şîroveyên li ser ku ji ku û çima hatiye deynkirin hene. Bo koda xneur "ez îlham neda", min ew wekî xala destpêkê girt loloswitcher.

Bikaranîna "/dev/input/" hem avantajên wê hene (her tişt xuya ye, di nav de bişkojka dubarekirina otomatîkî ya çapkirî) û hem jî dezawantajên wê hene. Dezavantaj ev in:

  • Xweber dubarekirin (bûyerên bi koda "2") bi dubarekirina bi x re têkildar nabe.
  • Ketina bi navgînên X11 nayê xuyang kirin (mînakî VNC çawa dixebite).
  • Pêdivî ye root.

Ji hêla din ve, gengaz e ku meriv bi "XSelectExtensionEvent()" ve bibe abonetiya bûyerên X. Hûn dikarin lê binêrin koda xinput. Min tiştek wusa ji bo çûnê nedît, û pêkanîna hişk tavilê sed rêzikên koda C girt. Ji bo niha bidin aliyekî.

Hilberîna "berepaş" naha bi lêdana klavyeya virtual tê çêkirin. Spas ji nivîskarê keybd_event re, lê abstraksiyona li wir pir astek bilind e û dê pêdivî ye ku bêtir were çêkirin. Mînakî, ez bişkojka rastê ya Win bikar tînim da ku rêza sêyemîn hilbijêrin. Û tenê Win ya çepê paş ve tê veguhestin.

Bugs naskirî

  • Em di derbarê têketina "pêkhatî" de tiştek nizanin (mînak: ½). Niha ne hewce ye.
  • Em win rast bi xeletî dilîzin. Di rewşa min de, ew giraniyê dişkîne.
  • Parsinga têketina zelal tune. Di şûna wê de, gelek fonksiyon hene: Compare (), CtrlSequence (), RepeatSequence (), SpaceSequence (). Sipî nsmcan ji bo lênêrîna we: ew di kodê û vir de rast kir. Bi îhtimalek diyarkirî, hûn dikarin dema ku li şûna xwe guhezînin xeletiyan bigirin.
    Di vê nuqteyê de ez nizanim "çawa" û ez pêşwaziya her pêşniyaran dikim.
  • (Ey Xwedê) bikaranîna reqabetê ya kanalan (keyboardEvents, miceEvents).

encamê

Kod pêvajoya herî hêsan e. Û wek min ehmeq. Ji ber vê yekê, ez xwe bi hêvî dikim ku hema hema her teknîsyenek karibe tiştê ku ew dixwaze temam bike. Û bi saya vê yekê, ev hilber dê bêyî piştgirî, mîna pir-kêfxweşiyê, winda nebe.

Bextê te xweş bî

Source: www.habr.com

Add a comment