Analogu ġdid ta' Punto Switcher għal linux: xswitcher

It-tmiem tal-appoġġ xneur ikkawżali xi tbatija matul l-aħħar sitt xhur. (bil-miġja ta' OpenSUSE 15.1 fuq id-desktops tiegħi: bl-xneur attivat, it-twieqi jitilfu l-fokus u jitfekptu umoristiċi fil-ħin bl-input tat-tastiera).

"Oh, kkritikat, bdejt nittajpja fit-tqassim ħażin mill-ġdid" - fix-xogħol tiegħi dan jiġri b'mod indiċenti ta 'spiss. U ma żżid xejn pożittiv.

Analogu ġdid ta' Punto Switcher għal linux: xswitcher
Fl-istess ħin, jien (bħala inġinier tad-disinn) nista 'nifformula b'mod pjuttost ċar dak li rrid. Imma ridt (l-ewwel minn Punto Switcher, u mbagħad, grazzi għall-Windows Vista, fl-aħħar naqleb għal Linux, minn xneur) eżattament ħaġa waħda. Wara li rrealizzaw li ż-żibel fuq l-iskrin huwa fit-tqassim ħażin (dan is-soltu jiġri fi tmiem it-tajpjar ta 'kelma ġdida), stomp fuq "Pause / Break". U ġib dak li stampajt.

Bħalissa, il-prodott għandu l-aħjar (mill-punt di vista tiegħi) proporzjon funzjonalità/kumplessità. Wasal iż-żmien li taqsam.

TL.DR

Se jkun hemm kull xorta ta 'dettalji tekniċi aktar tard, allura l-ewwel - link "tmiss" għall-paċenzja.

Bħalissa l-imġieba li ġejja hija hardcoded:

  • “Pawża/Pawża”: tgħaddi lura l-aħħar kelma, taqleb it-tqassim fit-tieqa attiva (bejn 0 u 1) u terġa’ tiċċempel.
  • "Left Ctrl mingħajr xejn": taqleb it-tqassim fit-tieqa attiva (bejn 0 u 1).
  • "Left Shift mingħajr xejn": jixgħel it-tqassim Nru 0 fit-tieqa attiva.
  • "Shift Right mingħajr xejn": jixgħel it-tqassim Nru 1 fit-tieqa attiva.

Minn issa qed nippjana li nippersonalizza l-imġieba. Mingħajr feedback, mhuwiex interessanti (jien tajjeb xorta waħda). Nemmen li fuq Habré se jkun hemm persentaġġ suffiċjenti tal-udjenza bi problemi simili.

NB Għax fil-verżjoni attwali, it-keylogger huwa mehmuż ma '"/dev/input/", xswitcher għandu jitnieda bi drittijiet ta' għeruq:

chown root:root xswitcher
chmod +xs xswitcher

Jekk jogħġbok innota: Is-sid tal-fajl b'suid għandu jkun root, għaliex min hu s-sid jinbidel fis-suid mal-istartjar.

Paranojdi (I am ebda eċċezzjoni) jistgħu klonu minn GIT u tiġbor fuq il-post. Hekk:

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

Żid l-awtostart għat-togħma (jiddependi fuq DE).

Jaħdem, "ma jitlobx porridge" (≈30 sekonda CPU kuljum, ≈12 MB f'RSS).

Dettalji

Issa - id-dettalji.

Ir-repożitorju kollu kien oriġinarjament iddedikat għall-proġett tal-annimali domestiċi tiegħi, u jien għażżien wisq biex nibda ieħor. Allura, kollox huwa miġbur (biss f'folders) u kopert minn AGPL ("privattiva inversa").

Il-kodiċi xswitcher huwa miktub fil-golang, b'inklużjonijiet minimi ta 'C. Huwa preżunt li dan l-approċċ se jirriżulta fl-inqas ammont ta' sforz (s'issa għandu). Filwaqt li tinżamm il-kapaċità li tikkonnettja dak li jkun nieqes bl-użu ta 'cgo.

It-test fih kummenti dwar minn fejn ġie misluf u għaliex. Għax il-kodiċi xneur "ma ispiraniex", ħadtha bħala punt tat-tluq loloswitcher.

L-użu ta '"/dev/input/" għandu kemm il-vantaġġi tiegħu (kollox huwa viżibbli, inkluża ċ-ċavetta awto-repeat ippressata) kif ukoll l-iżvantaġġi. L-iżvantaġġi huma:

  • Ir-ripetizzjoni awtomatika (avvenimenti bil-kodiċi "2") ma tikkorrelatax mar-ripetizzjoni ma 'x.
  • L-input permezz ta 'interfaces X11 mhuwiex viżibbli (dan huwa kif jaħdem VNC, pereżempju).
  • Ħtieġa għerq.

Min-naħa l-oħra, huwa possibbli li tabbona għal X avvenimenti permezz "XSelectExtensionEvent()". Tista 'peek fuq kodiċi xinput. Ma sibt xejn bħal dan għal go, u l-implimentazzjoni approssimattiva immedjatament ħadet mitt linja ta 'kodiċi C. Poġġiha fil-ġenb għalissa.

L-output "reverse" bħalissa huwa magħmul permezz tal-kamin tat-tastiera virtwali. Grazzi għall-awtur ta 'keybd_event, iżda l-astrazzjoni hemm livell għoli wisq u se jkollha terġa' ssir aktar. Pereżempju, nuża ċ-ċavetta Win dritt biex nagħżel it-3 ringiela. U biss ir-Win tax-xellug tiġi trażmessa lura.

Bugs Magħrufa

  • Ma nafu xejn dwar input "kompost" (eżempju: ½). Mhuwiex meħtieġ bħalissa.
  • Qed nilagħbu r-Rebħa t-tajba b'mod żbaljat. Fil-każ tiegħi, tkisser l-enfasi.
  • M'hemm l-ebda parsing ċar tal-input. Minflok, hemm diversi funzjonijiet: Qabbel (), CtrlSequence (), RepeatSequence (), SpaceSequence (). Grazzi nsmcan għall-kura tiegħek: ikkoreġuha fil-kodiċi u hawn. B'ċerta probabbiltà, tista 'taqbad bugs meta tissostitwixxi.
    F'dan il-punt ma nafx "kif" u nilqa' kull suġġeriment.
  • (O Alla) użu kompetittiv tal-kanali (keyboardEvents, miceEvents).

Konklużjoni

Il-kodiċi huwa l-aktar sempliċi proċedurali. U stupidu bħali. Għalhekk, niflaħ ruħi bit-tama li kważi kull tekniku jkun jista’ jlesti dak li jrid. U grazzi għal dan, dan il-prodott mhux se jitħassar mingħajr appoġġ, bħall-biċċa l-kbira biss għall-gost.

Xorti tajba!

Sors: www.habr.com

Żid kumment