teisipäev, 17. detsember 2013

Hiir andis otsad

Tere

Sai siis umbes kuu aega tagasi Euronicst ostetud endale Thrusti juhtmevaba hiir nimega MaxTrack.

Kuna tegu oli suhteliselt impulss ostuga (hädasti oli vaja uut hiirt) siis ma muidugi ei lugenud netist mis kommentaare inimesed on sellele hiirele jätnud.



Ja noh muidugi lõpetas mul ka rullik töötamise aga kuna poodi ma hiirega tagasi minna ei viitsinud ja kerida ikka tahaks siis mõtlesin, et võiks ära kasutada hiire külje peal olevad kaks nuppu mis küll on mõeldud veebilehitsejates edasi tagasi liikumiseks aga vaevalt keegi keelab mul nendest kerimis nupud teha. 

Kõigepealt sai netist otsitud võimalust kuidas saaksin ma hiire külje nupud lihtsalt ümber mappida kerimist nuppudeks. See otsing andis mulle vastuseks sellise käsu:
  xinput set-button-map 1 2 3 4 5 6 7 8 9  
mis siis võimaldab linuxi all hiirel nuppe ümber tõsta. Kirjutasin siis sellise käsu terminali:
  xinput set-button-map 1 2 3 4 5 6 7 4 5  
kus siis nagu näha olen nupud 8 ja 9 ümber muutnud nuppudeks 4 ja 5.
8 ja 9 on need külje nuppud ja 4 ning 5 on üles/alla kerimis nuppud. See väike häkk isegi töötas aga tuli välja, et kolm rida üles või alla kerida peab külje nuppu alla vajutama ning lahti laskma kolm korda järjest, see ei ole üldse nii mugav kui rullikuga kerida. Jätkasin parema lahenduse välja nuputamisega.

Järgmine mõte oli kuulata eraldi programmis neid hiire külje nuppe ja teha nii, et kui nuppu all hoian siis kerib lehte, lahti laskmisel jätab kerimise seisma. Kuna mulle meeldib Pyhton siis sai see väike programm pythonis kirjutatud. Kõigepealt oli vaja mingit teeki mis oskaks vastu võtta hiire nupuvajutuse sündmusi, esimene sobiv teek oli PyMouse aga kuna see oli hiljuti lisatud PyUserInput teeki siis sai valitud see viimane mis teeb paeaegu kõike hiire ja klaviatuuri eventide saatmise ja vastuvõtmisega nii, et pyhoni teegi leidmise mure oli lahendatud.

Edasi oli vaja kirjutada programm mis kasutaks seda PyUserInput teeki ja hakkaks hiire külje nupuvajutuse peale lehte kerima. See oli suhteliselt kerge, peaprogramm võtab hiire evente vastu ja saadab need taustal töötavale protsessile mis siis vastavalt hiire nupu olekule kas kerib või ei keri. Paar probleemi mis ma selle programmi kirjutamisel avastasin olid, et
  1. PyUserInput pymouse teek jookseb kokku kui üritad vastu võtta hiire nuppe mis ei ole esimesed 3 nuppu ja mis ei ole üles/alla, paremale/vasakule kerimis nupud, ehk siis nupud 1, 2, 3, 4, 5, 6, 7 on okeid aga nupud 8 ja 9 mis on minu hiirel külje nuppudeks, nende peale jookseb see kokku. Kiire teegi koodi muutus parandas selle vea.
  2. hiirel külje peal olevad nupud 8 ja 9 töötavad ikkagi veebilehitsejas edasi ja tagasi liikumis nuppudena. Tõstsin siis need nupud ümber nuppudeks 10 ja 11, tegin vastavad muudatused enda ja pymouse teegi koodis ning seejärel töötad kõik ilusti. :)
lisaks sai peale natukest kastuamist lisatud ka kood, et mida pikemalt nuppu all hoiad, seda kiiremini kerima hakkab.

Lõpp kood on siis selline:
Väike video kogu selle värgi kohta koos näidisega kuidas see siis töötab:

Kommentaare ei ole:

Postita kommentaar