Ný hliðstæða Punto Switcher fyrir Linux: xswitcher

Endalok xneur stuðning hefur valdið mér þjáningum undanfarna sex mánuði. (með tilkomu OpenSUSE 15.1 á skjáborðunum mínum: með xneur virkt missa gluggar fókus og flökta fyndið í takt við lyklaborðsinnslátt).

„Ó, fjandinn hafi það, ég byrjaði aftur að slá inn vitlaust skipulag“ - í vinnunni minni gerist þetta ósæmilega oft. Og það bætir engu jákvætt við.

Ný hliðstæða Punto Switcher fyrir Linux: xswitcher
Á sama tíma get ég (sem hönnunarverkfræðingur) alveg skýrt mótað það sem ég vil. En ég vildi (fyrst frá Punto Switcher, og síðan, þökk sé Windows Vista, loksins skipta yfir í Linux, frá xneur) nákvæmlega eitt. Þegar þú hefur áttað þig á því að ruslið á skjánum er í röngu skipulagi (þetta gerist venjulega í lok nýs orðs), stappaðu á „Pause/Break“. Og fáðu það sem þú prentaðir.

Í augnablikinu hefur varan ákjósanlegasta (frá mínu sjónarhorni) virkni/flókið hlutfall. Það er kominn tími til að deila.

TL.DR

Það verða alls kyns tæknilegar upplýsingar síðar, svo fyrst - tengill "að snerta" fyrir óþolinmóða.

Eins og er er eftirfarandi hegðun harðkóða:

  • „Pause/Break“: bakkar síðasta orðið, skiptir um útlit í virka glugganum (á milli 0 og 1) og hringir aftur.
  • „Vinstri Ctrl án nokkurs“: skiptir um skipulag í virka glugganum (á milli 0 og 1).
  • „Left Shift án nokkurs“: kveikir á skipulagi nr. 0 í virka glugganum.
  • „Hægri vakt án nokkurs“: kveikir á skipulagi nr. 1 í virka glugganum.

Héðan í frá ætla ég að sérsníða hegðunina. Án viðbragða er það ekki áhugavert (mér líður samt vel með það). Ég tel að á Habré verði nægilegt hlutfall áhorfenda með svipuð vandamál.

NB Vegna þess að í núverandi útgáfu er keyloggerinn tengdur við "/dev/input/", xswitcher verður að vera ræst með rótarréttindum:

chown root:root xswitcher
chmod +xs xswitcher

Vinsamlegast athugið: Eigandi skráarinnar með suid verður að vera rót, því hver sem er eigandinn verður breytt í suid við ræsingu.

Paranoids (ég er engin undantekning) geta klónað frá GIT og setja saman á staðnum. Svona:

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

Bættu við sjálfvirkri ræsingu eftir smekk (fer eftir DE).

Það virkar, "bíður ekki um hafragraut" (≈30 sekúndur örgjörvi á dag, ≈12 MB í RSS).

Upplýsingar

Nú - smáatriðin.

Öll geymslan var upphaflega tileinkuð gæludýraverkefninu mínu og ég er of latur til að byrja á öðru. Svo, allt er hrúgað upp (bara í möppum) og undir AGPL ("öfugt einkaleyfi").

Xswitcher kóðinn er skrifaður í golang, með lágmarks innifalið C. Gert er ráð fyrir að þessi nálgun muni leiða til minnstu fyrirhafnar (enn sem komið er). Þó að viðhalda getu til að tengja það sem vantar með því að nota cgo.

Textinn inniheldur athugasemdir um hvaðan hann var fengin að láni og hvers vegna. Vegna þess að xneur kóðinn „hvatti mér ekki innblástur“, ég tók það sem útgangspunkt loloswitcher.

Að nota "/dev/input/" hefur bæði sína kosti (allt er sýnilegt, þar á meðal ýtt á sjálfvirka endurtekningu takkann) og ókosti. Ókostirnir eru:

  • Sjálfvirk endurtekning (atburðir með kóða „2“) tengist ekki endurtekningu með x.
  • Inntak í gegnum X11 tengi er ekki sýnilegt (svona virkar VNC, til dæmis).
  • Vantar rót.

Aftur á móti er hægt að gerast áskrifandi að X viðburðum í gegnum "XSelectExtensionEvent()". Þú getur kíkt á xinntakskóði. Ég fann ekkert þessu líkt til að fara, og grófa útfærslan tók strax hundrað línur af C kóða. Leggðu það til hliðar í bili.

„Andstæða“ framleiðslan er nú gerð með því að skrúfa sýndarlyklaborðið. Þökk sé höfundi keybd_event, en útdrátturinn þar er á of háu stigi og verður að endurgera hana frekar. Til dæmis nota ég hægri Win takkann til að velja 3. röðina. Og aðeins vinstri Win er sendur til baka.

Þekktar pöddur

  • Við vitum ekkert um „samsett“ inntak (dæmi: ½). Það er ekki þörf núna.
  • Við erum að spila réttan Win rangt. Í mínu tilfelli brýtur það áherslurnar.
  • Það er engin skýr inntaksþáttun. Þess í stað eru nokkrar aðgerðir: Compare(), CtrlSequence(), RepeatSequence(), SpaceSequence(). Takk nsmcan til umönnunar: leiðrétti það í kóðanum og hér. Með ákveðnum líkum geturðu lent í villum þegar þú skiptir um.
    Á þessum tímapunkti veit ég ekki "hvernig" og myndi fagna öllum ábendingum.
  • (Ó Guð) samkeppnishæf notkun rása (keyboardEvents, miceEvents).

Ályktun

Kóðinn er einfaldasta málsmeðferðin. Og heimskur eins og ég. Þannig að ég smjaðra um sjálfan mig með von um að nánast hvaða tæknimaður sem er geti klárað það sem hann vill. Og þökk sé þessu mun þessi vara ekki farast án stuðnings, eins og flest bara til skemmtunar.

Gangi þér vel!

Heimild: www.habr.com

Bæta við athugasemd