Rullahiiri toimimaan Linuxissa


Yleistä, toimintaperiaate, rulla toimimaan, sovellukset (Netscape)

Yleistä

Rullahiiri (eli siis hiiri, jossa on pyörä näppäinten välissä) on yleistynyt nopeasti. Kun kerran tällaisen kätevän hiiren omistaa, on normaalisti luonnollista, että haluaa saada sen toimimaan myös Linuxissa, mitä se ei automaattisesti tee. Tähän operaatioon tarvitaan XFree Server, jonka versio on vähintään 3.3.2, sekä sellainen rullahiiri, joka toimii Microsoftin Intellimousena.

Hankaluus asiassa kuitenkin on se, että useille sovelluksille pitää tehdä määritykset erikseen, että hiiri toimisi (kts. alla). Kuitenkin Gnome ja KDE toimivat käytännössä suoraan, kun tekee tarvittavat asetukset XF86config-tiedostoon.

Tämä sivu perustuu pitkälti osoitteesta http://www-sop.inria.fr/koala/colas/mouse-wheel-scroll/ löytyvään sivustoon. Tälle sivustolle on sen tekijä koonnut erilaisia rullahiireen ja eri sovelluksiin liittyviä asetuksia. Esimerkiksi niiden ohjelmien suhteen, joita tästä ei löydä, voi käydä tarkistamassa asetukset tuolta.

Huom! Nykydistrot osaavat rullahiiren toiminnan ihan suoralta käsin. Näin ollen tämä dokumentti on monessa suhteessa tänä päivänä jo varsin turha...


Toimintaperiaate

Rullahiiri toimii X:ssä tällä periaatteella, että määritellään rulla suunnat hiiren painonapeiksi 4 ja 5. Seuraava kuvaaja pyrkii kuvaamaan sitä, miten homma tapahtuu:

Pyöritetään       X-palvelin      Nappuloiden 4 & 5      määritykset             rullaus
rullaa       ===> reagoi     ===> tapahtumat        ===> sovellusten        ===> toimii!
                                                         asetustiedostoissa

Näin ollen rullaa pyöritettäessä X-palvelin reagoi ja lähettää sovelluksille tiedon siitä, että näin on tapahtunut. Sovellukset sitten tarkistavat omista asetustiedostoistaan se, miten tähän tulee reagoida.


Rulla toimintaan

Jotta rulla toimisi, pitää hiiren toimia MS Intellimousena. Tällöin ei tarvitse kuin tiedostoon XF86config-4 (4-versiota vanhemmissa versioissa XF86config) osaan (section) Pointer tehdä seuraavien kahden rivin lisääminen:

Buttons 3
ZAxisMapping 4 5

Eli määritellään siis rulla nappuloiksi 4 ja 5 ZAxisMapping-määrityksellä.

Lisäksi on syytä katsoa, mikä protokolla hiirellä on. Pitäisi olla tällainen:

Protocol "imps/2"        # Tämä, jos hiiresi on PS/2-liittimessä
Protocol "intellimouse"  # Tämä, jos hiiresi on sarjahiiri.

Huom! Ainakin nykyisissä Red Hatin versioissa saa rullahiiren toimimaan jo asennuksessa, jos määrittelee hiiren siellä MS Intellimouseksi. RH:n asennusohjelma tarjoaa geneeristä hiiriajuria oletuksena ja se ei toimi.

Nyt voit käynnistää X:n uudelleen CTRL-ALT-BACKSPACE-näppäimellä ja kirjautua sisään. Kokeille vaikkapa jossakin tiedostoikkunassa. Hiiren rullan pitäisi nyt toimia.


Sovellukset (Netscape)

Tämä ohje koskee Netscape-selainta. Mozilla-selain osaa hiiren toiminnan aivan suoraan, se on määritelty siten kuin edellä on.

Ohjelmat ymmärtävät X:n välittämät viestit eri tavoin, pitää siis sen takia eri ohjelmissa määritellä erikseen, miten toimitaan, että saataisiin rulla toimimaan. Ja koska Netscape on yksi sellainen ohjelma, jonka käyttöä helpottaa se, että rulla toimii, esitellään tässä Netscapen asetustiedostoon tehtävät muutoskset.

Netscapea varten pitää X-palvelimen asetustiedostoon .Xdefaults (löytyy jokaisen käyttäjän kotihakemistosta) lisätä hiukan rivejä. Ole tarkkana, että tiedot pysyvät samoilla riveillä kuin tässä on esitetty:

!## NETSCAPE
Netscape*drawingArea.translations:  #replace    \
        <Btn1Down>:           ArmLink()   \n\
        <Btn2Down>:           ArmLink()   \n\
        ~Shift<Btn1Up>:       ActivateLink()  \n\
        ~Shift<Btn2Up>:       ActivateLink(new-window)  \
                                        DisarmLink()    \n\
        Shift<Btn1Up>:        ActivateLink(save-only)  \
                                        DisarmLink()    \n\
        Shift<Btn2Up>:        ActivateLink(save-only)  \
                                        DisarmLink()    \n\
        <Btn1Motion>:             DisarmLinkIfMoved()  \n\
        <Btn2Motion>:             DisarmLinkIfMoved()  \n\
        <Btn3Motion>:             DisarmLinkIfMoved()  \n\
        <Motion>:             DescribeLink()  \n\
        <Btn3Down>:           xfeDoPopup()    \n\
        <Btn3Up>:             ActivatePopup() \n\
        Ctrl<Btn4Down>: PageUp()\n\
        Ctrl<Btn5Down>: PageDown()\n\
        Shift<Btn4Down>: LineUp()\n\
        Shift<Btn5Down>: LineDown()\n\
         None<Btn4Down>: LineUp()LineUp()LineUp()LineUp()LineUp()LineUp()\n\
         None<Btn5Down>: LineDown()LineDown()LineDown()LineDown()LineDown()LineDown()\n\
        Alt<Btn4Down>: xfeDoCommand(forward)\n\
        Alt<Btn5Down>: xfeDoCommand(back)\n

Netscape*globalNonTextTranslations: #override\n\
 Shift<Btn4Down>: LineUp()\n\
 Shift<Btn5Down>: LineDown()\n\
 None<Btn4Down>:LineUp()LineUp()LineUp()LineUp()LineUp()LineUp()\n\
 None<Btn5Down>:LineDown()LineDown()LineDown()LineDown()LineDown()LineDown()\n\
 Alt<Btn4Down>: xfeDoCommand(forward)\n\
 Alt<Btn5Down>: xfeDoCommand(back)\n

Mitä tuossa tarkalleen ottaen tehdään? Siinä määritellään se, mitä minkäkin hiiren nappulan painamisella tehdään. Rullan pyörittäminenhän vastaa nyt nappuloiden 4 ja 5 painamista. Esimerksi alemmassa olevassa osassa "*globalNonTextTranslations:"-osassa ovat rivit

 None<Btn4Down>:LineUp()LineUp()LineUp()LineUp()LineUp()LineUp()\n\
 None<Btn5Down>:LineDown()LineDown()LineDown()LineDown()LineDown()LineDown()\n\

Noilla määritellään, että jos painetaan hiireen nappula 4 tai 5 pitämättä alhaalla mitään muuta näppäintä (SHIFT, ALT tai CTRL), rullataan ylös- tai alaspäin riippuen kumpaa painetaan. Jos halutaan nopeuttaa tai hidastaa rullausta, voi laittaa lisää LineUp()- tai LineDown()-funktioita riveille. Siirtymä noissa on ilmeisesti sen verran pieni, että tarvitaan useampi kutsu.


Alkuun