Analooga cusub ee Punto Switcher ee linux: xswitcher

Dhamaadka taageerada xneur waxay igu keentay xoogaa silic ah lixdii bilood ee la soo dhaafay. (Iyadoo ay soo ifbaxday OpenSUSE 15.1 miisaskayda: iyadoo xneur karti u leh, windows lumin diiradda oo waxay ku raaxaystaan ​​​​waqtiga gelinta kumbuyuutarka).

"Oh, nacalad, waxaan bilaabay in aan ku qoro qaab qaldan mar kale" - shaqadayda tani waxay dhacdaa si aan fiicneyn marar badan. Wax wanaagsanna kuma soo kordhinayso.

Analooga cusub ee Punto Switcher ee linux: xswitcher
Isla mar ahaantaana, aniga ( injineer naqshadeeye ahaan ) ayaa si cad u qaabayn kara waxa aan rabo. Laakiin waxaan rabay (marka hore Punto Switcher, ka dibna, mahadsanid Windows Vista, ugu dambeyntii u beddelashada Linux, ka xneur) hal shay. Markaan garwaaqsanay in qashinka shaashadu uu ku jiro qaab khaldan (tani waxay badanaa dhacdaa dhamaadka qoritaanka kelmad cusub), ku dhufo "Hakin/Nasasho". Oo hel waxaad daabacday.

Waqtigan xaadirka ah, alaabtu waxay leedahay sida ugu fiican (marka laga eego aragtidayda) shaqeynta / saamiga kakanaanta. Waa waqtigii la wadaagi lahaa

TL.DR

Waxaa jiri doona dhammaan noocyada faahfaahinta farsamada dambe, markaa marka hore - isku xidhka "in la taabto" kuwa aan dulqaadan karin.

Hadda hab-dhaqanka soo socda waa mid adag:

  • "Hakis/Nasasho": waxay gashaa ereyga u dambeeya, waxay beddeshaa naqshadaynta daaqadda firfircoon (inta u dhaxaysa 0 iyo 1) oo mar labaad garaac.
  • "Bidix Ctrl iyada oo aan waxba jirin": wuxuu beddelaa qaabka daaqada firfircoon (inta u dhaxaysa 0 iyo 1).
  • "Shift Bidix iyada oo aan waxba jirin": wuxuu daaraa nambarka 0 ee daaqada firfircoon.
  • "Isbedel sax ah oo aan waxba lahayn": wuxuu daaraa qaabka lambarka 1 ee daaqada firfircoon.

С этого момента я планирую кастомизировать поведение. Без обратной связи — не интересно (меня и так устраивает). Полагаю, на Хабре найдётся достаточный процент аудитории с аналогичными проблемами.

NB Sababtoo ah nooca hadda ah, keyloggerku wuxuu ku dheggan yahay "/ dev/input/", xswitcher waa in lagu bilaabo xuquuqaha xididka:

chown root:root xswitcher
chmod +xs xswitcher

Fadlan ogsoonow: Milkiilaha faylka leh suid waa inuu noqdaa xidid, sababtoo ah ku alla kii mulkiilaha ah waxa loo rogi doonaa suid marka la bilaabo.

Paranoids (ma ihi mid ka reeban) ayaa ka soo bixi kara GIT kuna soo ururi goobta. Sidan oo kale:

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

Ku dar autostart si aad u dhadhamiso (waxay kuxirantahay DE).

Way shaqeysaa, "ma weyddiiso boorash" (≈30 ilbiriqsi CPU maalintii, ≈12 MB gudaha RSS).

Faahfaahinta eeg

Hadda - faahfaahinta.

Kaydka oo dhan ayaa markii hore loo hibeeyay mashruucayga xayawaanka, aad baan uga caajisay inaan mid kale bilaabo. Marka, wax walba waa la ururiyay (kaliya faylalka) waxaana daboolay AGPL ("patent reverse").

Koodhka xswitcher waxa uu ku qoran yahay golang, oo ay ku jiraan ugu yar ee C. Waxa loo malaynayaa in habkani uu keeni doono dadaalka ugu yar (ilaa hadda waxa uu leeyahay). Iyadoo la ilaalinayo awoodda isku xirka waxa maqan iyadoo la adeegsanayo cgo.

Qoraalku wuxuu ka kooban yahay faallooyin ku saabsan halka laga soo amaahday iyo sababta. Sababtoo ah code xneur "ma i dhiirigelin", waxaan u qaatay sidii meel bilow ah loloswitcher.

Isticmaalka "/ dev/input/" waxay leedahay labadaba faa'iidooyinkeeda (wax walba waa la arki karaa, oo ay ku jiraan furaha auto-ku celiska ah) iyo faa'iido darrooyinka. Khasaaruhu waa:

  • Ku celcelinta tooska ah (dhacdooyinka leh koodka “2”) kuma xidhna ku celcelinta x.
  • Input dhex X11 interfaces ma muuqato (sidan waa sida VNC u shaqeyso, tusaale ahaan).
  • Waxaan u baahanahay xidid

Dhanka kale, waxaa suurtagal ah in aad iska diiwaan geliso dhacdooyinka X adigoo isticmaalaya "XSelectExtensionEvent()". Waad fiirin kartaa xinput code. Ma helin wax sidan oo kale ah oo aan tago, iyo hirgelinta qallafsan ayaa isla markiiba qaadatay boqol xariiq oo C code ah. Iska dhig hadda.

Soo saarida "dib-u-celinta" ayaa hadda lagu sameeyay iyada oo la isku duubayo kiiboodhka casriga ah. Waad ku mahadsan tahay qoraaga keybd_event, laakiin soo koobidda waxaa jira heer aad u sarreeya waana in dib loo sii hagaajiyaa. Tusaale ahaan, waxaan isticmaalaa furaha Win ee saxda ah si aan u doorto safka 3aad. Kaliya bidixda Win ayaa dib loo kala qaadaa.

Cayayaanka la yaqaan

  • Waxba kama naqaanno wax ku galinta "isku dhafan" (tusaale: ½). Looma baahna hadda.
  • Waxaan u ciyaareynaa guusha saxda ah si qaldan. Xaaladeyda, waxay jebisaa xoojinta.
  • Ma jiro wax gelinta oo cad Taa beddelkeeda, waxaa jira dhowr hawlood: Isbarbardhig (), CtrlSequence(), Ku celcelinta(), SpaceSequence(). Спасибо nsmcan daryeelkaaga: ku saxay koodka iyo halkan. Iyada oo ay jirto suurtogalnimo gaar ah, waxaad ku qaadi kartaa cayayaanka marka aad beddesho.
    Halkaa marka ay marayso ma garanayo "sida" waxaana soo dhawaynayaa wixii talo bixin ah.
  • (Ilaahoow) isticmaalka kanaalada tartanka ah (keyboardEvents, miceEvents).

gunaanad

Xeerku waa habka ugu fudud. Iyo doqon sidayda oo kale. Sidaa darteed, waxaan naftayda ku faanayaa rajo ah in ku dhawaad ​​​​farsamo yaqaan kasta uu awoodi doono inuu dhammaystiro waxa uu rabo. Oo mahad tan, alaabtani ma baabi'i doonto taageero la'aan, sida inta badan madadaalo-doon

nasiib wacan!

Source: www.habr.com

Add a comment