Analọgụ ọhụrụ nke Punto Switcher maka Linux: xswitcher

Ọgwụgwụ nkwado xneur emeela m ụfọdụ nhụjuanya n'ime ọnwa isii gara aga. (n'ọbịbịa nke OpenSUSE 15.1 na desktọpụ m: na xneur nyeere, windo na-atụgharị uche ma na-akpa ọchị na oge na ntinye keyboard).

"Oh, dam, amalitere m ịpịnye n'ụdị na-adịghị mma ọzọ" - n'ọrụ m nke a na-eme n'ụzọ na-ekwesịghị ekwesị mgbe mgbe. Ọ naghị agbakwunye ihe ọ bụla dị mma.

Analọgụ ọhụrụ nke Punto Switcher maka Linux: xswitcher
N'otu oge ahụ, m (dị ka onye injinia imewe) nwere ike ịkọwapụta ihe m chọrọ n'ụzọ doro anya. Ma achọrọ m (nke mbụ sitere na Punto Switcher, na mgbe ahụ, ekele maka Windows Vista, n'ikpeazụ na-agbanye na Linux, site na xneur) kpọmkwem otu ihe. N'ịghọta na ihe mkpofu na ihuenyo dị na nhazi na-ezighị ezi (nke a na-emekarị na njedebe nke ịpịpụta okwu ọhụrụ), stom na "kwụsịtụ/nkwụsị". Nweta ihe ị bipụtara.

N'oge a, ngwaahịa ahụ nwere ọrụ kachasị mma (site n'echiche m) arụmọrụ / mgbagwoju anya. Oge erugo ikesa.

TL.DR

A ga-enwe ụdị nkọwa teknụzụ niile ma emechaa, yabụ nke mbụ - njikọ "iji metụ" maka ndị na-enweghị ndidi.

Ugbu a omume a bụ koodu siri ike:

  • “Kwụsị/Nkwụsịtụ”: na-atụgharị okwu ikpeazụ, gbanwee okirikiri nhọrọ ukwuu na mpio arụ ọrụ (n'etiti 0 na 1) wee pịa ọzọ.
  • "Ctrl aka ekpe na-enweghị ihe ọ bụla": gbanwee okirikiri nhọrọ ukwuu na mpio arụ ọrụ (n'etiti 0 na 1).
  • "Mgbanwe aka ekpe na-enweghị ihe ọ bụla": gbanye okirikiri nhọrọ ukwuu. 0 na mpio arụ ọrụ.
  • "Ntụgharị aka nri na-enweghị ihe ọ bụla": gbanye okirikiri nhọrọ ukwuu na mpio arụ ọrụ.

Site ugbu a gaa n'ihu, m na-eme atụmatụ ịhazi omume ahụ. Enweghị nzaghachi, ọ bụghị ihe na-adọrọ mmasị (ọ dị m mma na ya). Ekwenyere m na na Habré a ga-enwe pasentị zuru oke nke ndị na-ege ntị nwere nsogbu ndị yiri ya.

NB N'ihi na na ụdị ugbu a, keylogger na-agbakwunyere na "/ dev/input/", xswitcher ga-eji ikike mgbọrọgwụ malite:

chown root:root xswitcher
chmod +xs xswitcher

Biko mara: Onye nwe faịlụ nwere suid ga-abụrịrị mgbọrọgwụ, n'ihi na onye ọ bụla bụ onye nwe a ga-atụgharị ka ọ bụrụ suid na mmalite.

Paranoids (Adịghị m iche) nwere ike imechi GIT ma gbakọta na saịtị. Dị ka nke ahụ:

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

Tinye autostart ka ọ nụrụ ụtọ (dabere na DE).

Ọ na-arụ ọrụ, "anaghị arịọ maka porridge" (≈30 sekọnd CPU kwa ụbọchị, ≈12 MB na RSS).

Lee nkọwa

Ugbu a - nkọwa.

Ebubere ebe nchekwa ahụ niile maka ọrụ anụ ụlọ m, ọ dịkwa m umengwụ ịmalite nke ọzọ. Ya mere, a na-achịkọta ihe niile (naanị na nchekwa) ma kpuchie ya AGPL ("patent reverse").

Edere koodu xswitcher na golang, yana obere ntinye nke C. A na-eche na ụzọ a ga-eme ka mgbalị kachasị nta (ka ọ dị ugbu a). Mgbe ị na-ejigide ikike iji cgo jikọọ ihe na-efu.

Edemede ahụ nwere nkọwa gbasara ebe esitere ya na ihe kpatara ya. N'ihi na koodu xneur "anaghị agba m ume", ewere m ya dịka mmalite loloswitcher.

Iji "/ dev/input/" nwere ma uru ya (ihe niile na-ahụ anya, gụnyere igodo ugboro ugboro ugboro ugboro) na adịghị ike. Ọdịmma ya bụ:

  • Megharịa onwe ya (ihe omume nwere koodu “2”) anaghị ejikọta ya na ikwugharị na x.
  • Ntinye site na oghere X11 adịghị ahụ anya (nke a bụ ka VNC si arụ ọrụ, dịka ọmụmaatụ).
  • Achọrọ mgbọrọgwụ.

N'aka nke ọzọ, ọ ga-ekwe omume ịdenye aha na ihe omume X site na "XSelectExtensionEvent()". Ị nwere ike ile anya koodu xinput. Ahụghị m ihe ọ bụla dị ka nke a maka ịga, na mmejuputa iwu siri ike were otu narị ahịrị C koodu ozugbo. Wepụ ya ugbu a.

A na-emepụta mmepụta "reverse" ugbu a site na ịpịa ahụigodo mebere. Ekele dịrị onye odee keybd_event, mana abstraction enwere ọkwa dị elu ma a ga-emegharị ya ọzọ. Dịka ọmụmaatụ, m na-eji igodo mmeri ziri ezi ịhọrọ ahịrị nke atọ. Na naanị mmeri aka ekpe na-ebunye azụ.

Nchinchi amaara

  • Anyị amaghị ihe ọ bụla gbasara ntinye "mkpokọta" (atụ: ½). Ọ dịghị mkpa ugbu a.
  • Anyị na-egwu Win ezighi ezi. N'ọnọdụ m, ọ na-agbaji mesiri ike.
  • Enweghị ntụnye ntinye doro anya. Kama, enwere ọtụtụ ọrụ: Tụlee (), CtrlSequence(), RepeatSequence(), SpaceSequence(). Achọpụta nsmcan maka nlekọta gị: mezie ya na koodu na ebe a. Site na ụfọdụ ihe puru omume, ị nwere ike ijide ahụhụ mgbe ị na-edochi anya.
    N'oge a, amaghị m "otu esi eme" na m ga-anabata aro ọ bụla.
  • (Oh Chineke) iji ọwa asọmpi (keyboardEvents, miceEvents).

nkwubi

Koodu bụ usoro kachasị mfe. Na nzuzu ka m. Ya mere, m na-eto onwe m n'olileanya na ihe fọrọ nke nta ka ọ bụrụ ọkachamara ọ bụla ga-enwe ike imezu ihe ọ chọrọ. Na ekele maka nke a, ngwaahịa a agaghị ala n'iyi na-enweghị nkwado, dị ka ọtụtụ ihe na-atọ ụtọ.

Jisie!

isi: www.habr.com

Tinye a comment