Analóg ùr de Punto Switcher airson linux: xswitcher

Tha deireadh taic xneur air beagan fulangas adhbhrachadh dhomh thairis air na sia mìosan a dh’ fhalbh. (le teachd OpenSUSE 15.1 air an deasg agam: le xneur air a chomasachadh, bidh uinneagan a’ call fòcas agus flicker èibhinn ann an ùine le cuir a-steach meur-chlàr).

“O, damn e, thòisich mi a’ taipeadh a-steach an cruth ceàrr a-rithist” - nam obair bidh seo a’ tachairt gu mì-mhodhail gu tric. Agus chan eil e a 'cur rud sam bith adhartach.

Analóg ùr de Punto Switcher airson linux: xswitcher
Aig an aon àm, is urrainn dhomh (mar innleadair dealbhaidh) na tha mi ag iarraidh a dhealbhadh gu soilleir. Ach bha mi ag iarraidh (an toiseach bho Punto Switcher, agus an uairsin, le taing dha Windows Vista, mu dheireadh ag atharrachadh gu Linux, bho xneur) dìreach aon rud. An dèidh tuigsinn gu bheil an sgudal air an sgrion anns a 'chruth ceàrr (bidh seo mar as trice a' tachairt aig deireadh a bhith a 'sgrìobhadh facal ùr), stad air "Pause / Break". Agus faigh na tha thu air a chlò-bhualadh.

Aig an àm seo, tha an co-mheas gnìomhachd / iom-fhillteachd as fheàrr (bho mo shealladh) aig an toradh. Tha an t-àm ann a roinn.

TL.DR

Bidh a h-uile seòrsa de mhion-fhiosrachadh teicnigeach ann nas fhaide air adhart, mar sin an toiseach - ceangal "to touch" airson an neo-fhoighidneach.

An-dràsta tha còd cruaidh air a’ ghiùlan a leanas:

  • “Pause / Break”: cuir cùl ris an fhacal mu dheireadh, atharraich an cruth san uinneag ghnìomhach (eadar 0 agus 1) agus dials a-rithist.
  • “Ctrl clì gun dad”: ag atharrachadh an cruth san uinneag ghnìomhach (eadar 0 agus 1).
  • “Left Shift without anything”: tionndaidh air cruth Àir. 0 san uinneag ghnìomhach.
  • “Ceart Shift gun dad”: tionndaidh air cruth Àir. 1 san uinneag ghnìomhach.

Bho seo a-mach tha mi an dùil an giùlan a ghnàthachadh. Às aonais fios air ais, chan eil e inntinneach (tha mi ceart gu leòr leis co-dhiù). Tha mi a’ creidsinn gum bi àireamh sa cheud gu leòr den luchd-èisteachd le duilgheadasan coltach ris air Habré.

NB Air sgàth anns an tionndadh làithreach, tha an keylogger ceangailte ri "/ dev/input/", feumaidh xswitcher a bhith air a chur air bhog le còraichean freumh:

chown root:root xswitcher
chmod +xs xswitcher

Thoiribh fa-near: Feumaidh sealbhadair an fhaidhle le suid a bhith freumh, oir ge bith cò an sealbhadair bidh e air a thionndadh gu suid nuair a thòisicheas e.

Faodaidh paranoids (chan eil mi idir) clonadh bho GIT agus cruinneachadh air an làrach. Mar sin:

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

Cuir autostart ri blas (a rèir DE).

Tha e ag obair, “chan eil e ag iarraidh brochan” (≈30 diogan CPU gach latha, ≈12 MB ann an RSS).

Seall mion-fhiosrachadh

A-nis - am mion-fhiosrachadh.

Bha an stòr gu lèir coisrigte an toiseach don phròiseact peata agam, agus tha mi ro leisg airson fear eile a thòiseachadh. Mar sin, tha a h-uile càil air a chàrnadh (dìreach ann am pasganan) agus air a chòmhdach le AGPL ("patent cùl").

Tha an còd xswitcher sgrìobhte ann an golang, le glè bheag de in-ghabhail de C. Thathas a 'gabhail ris gun toir an dòigh-obrach seo an ìre as lugha de oidhirp (gu ruige seo). Fhad ‘s a chumas tu an comas na tha a dhìth a cheangal a’ cleachdadh cgo.

Tha beachdan anns an teacsa air cò às a fhuair e iasad agus carson. Air sgàth cha do bhrosnaich an còd xneur “mi”, ghabh mi e mar thoiseach tòiseachaidh loloswitcher.

Tha buannachdan aig a bhith a’ cleachdadh “/ dev/input/” (tha a h-uile dad ri fhaicinn, a’ toirt a-steach an iuchair ath-aithris fèin-ghluasadach) agus eas-bhuannachdan. Is iad na h-eas-bhuannachdan:

  • Chan eil ath-aithris fèin-ghluasadach (tachartasan le còd “2”) co-cheangailte ri ath-aithris le x.
  • Chan eil cuir a-steach tro eadar-aghaidh X11 ri fhaicinn (seo mar a tha VNC ag obair, mar eisimpleir).
  • Feumaidh freumh.

Air an làimh eile, tha e comasach fo-sgrìobhadh gu X tachartasan tro "XSelectExtensionEvent()". Faodaidh tu sùil a thoirt air còd xinput. Cha do lorg mi dad mar seo airson a dhol, agus thug an gnìomh garbh ceud loidhne de chòd C sa bhad. Cuir gu aon taobh e airson a-nis.

Tha an toradh “cùil” ga dhèanamh an-dràsta le bhith a’ sgrìobadh a’ mheur-chlàr brìgheil. Taing don ùghdar keybd_event, ach tha an tarraing a-mach an sin ro àrd-ìre agus feumar ath-nuadhachadh. Mar eisimpleir, bidh mi a’ cleachdadh an iuchair Win ceart gus an 3mh sreath a thaghadh. Agus chan eil ach an Win clì air a ghluasad air ais.

Sùil air ais

  • Chan eil fios againn càil mu dheidhinn cuir a-steach “composite” (eisimpleir: ½). Chan eil feum air an-dràsta.
  • Tha sinn a’ cluich an Win ceart gu ceàrr. Anns a 'chùis agam, bidh e a' briseadh cuideam.
  • Chan eil parsadh inntrigidh soilleir ann. An àite sin, tha grunn ghnìomhan ann: Dèan coimeas (), CtrlSequence (), RepeatSequence (), SpaceSequence (). Спасибо nsmcan airson do chùram: ceartaich e sa chòd agus an seo. Le coltachd sònraichte, faodaidh tu biastagan a ghlacadh nuair a nì thu ath-chuir air.
    Aig an ìre seo chan eil fios agam “ciamar a nì mi” agus chuirinn fàilte air molaidhean sam bith.
  • (O Dhia) cleachdadh farpaiseach de shianalan (meur-chlàr tachartasan, luchainnEvents).

co-dhùnadh

Is e an còd am modh-obrach as sìmplidh. Agus gòrach mar mise. Mar sin, bidh mi a’ dèanamh rèidh rium fhìn leis an dòchas gum bi e comasach dha cha mhòr teicneòlaiche sam bith na tha e ag iarraidh a choileanadh. Agus le taing dha seo, cha tèid an toradh seo às aonais taic, mar a’ mhòr-chuid dìreach airson spòrs.

Beannachd leat

Source: www.habr.com

Cuir beachd ann