Extra functie toetsen
Door Marvin Raaijmakers
1. Inleiding
Momenteel is het zo dat je bij de meeste hardware wel software voor Windows krijgt meegeleverd, maar niet voor Linux. Zo ook bij toetsenborden, waarbij alleen voor Windows software wordt mee geleverd om de extra functie toetsen ervan te kunnen gebruiken. In dit artikel gaan we kijken hoe we die extra functie toetsen werkend krijgen onder Linux. Hierbij maken we gebruik van het programma keyTouch.

2. KeyTouch installeren
Voor het installeren van keyTouch moeten eerst de volgende programma's op je systeem aanwezig zijn:
- Xbindkeys
- GTK+1.2
Xbindkeys is te downloaden vanaf http://hocwp.free.fr/xbindkeys/xbindkeys.html. Volg de instructies op deze website voor de installatie. GTK+1.2 zit in de meeste Linux distributies. Wanneer GTK nog niet is geïnstalleerd, installeer het nu. Nu kunnen we keyTouch downloaden en installeren. Ga naar http://keytouch.sf.net/dl-keytouch.html. Je kunt nu een keuze maken uit twee soorten installaties:
- KeyTouch compileren en installeren: download het 'source' pakket.
- KeyTouch met een grafisch installatieprogramma installeren: download het 'gtkInstaller' pakket.
Om het gedownloade pakket uit te pakken openen we een console in de map waarin het pakket zich bevindt en typen:
tar -xzvf ./keyTouch-<versie>.tar.gz
Wat voor <versie> ingevuld moet worden, is afhankelijk van de versie die je hebt gedownload.
De volgende stappen zijn afhankelijk van de installatie methode die je hebt gekozen:
Compileren en installeren
Typ in dezelfde console:
cd ./keyTouch ./configure
Wanneer er foutmelding worden gegeven, moet je als eerste nagaan of je systeem aan alle afhankelijkheden voldoet (zoals GTK+1.2, bijvoorbeeld).
Typ nu het volgende, om keyTouch te compileren:
make
Om het te installeren typ:
su -c 'make install'
Omdat de installatie onder root uitgevoerd moet worden zal er gevraagd worden naar het root wachtwoord.
Lees voor meer informatie het artikel over het compileren en installeren van programma's.
Grafische installatie
Ga naar de map waar je het pakket hebt uitgepakt en vervolgens naar de map 'keyTouch-gtkInstaller'. Wanneer je met de commandline werkt typ je het volgende:
su -c './install'
Omdat de installatie onder root uitgevoerd moet worden zal er gevraagd worden naar het root wachtwoord.
Wanneer je met een filemanager (zoals konqueror) werkt, moet je er voor zorgen dat je deze als root uitvoert. Wanneer je in de map 'keyTouch-gtkInstaller' zit klik je op het bestand 'install'.
Volg nu de instructies die gegeven worden om keyTouch te installeren.
3. Het toetsenbord instellen
Start keyTouch door het commando 'keytouch' uit te voeren. Klik op het tabblad 'Keyboard' en vervolgens op de knop 'Change...'. Er verschijnt nu een venster met een lijst van alle beschikbare toetsenborden. Selecteer jouw toetsenbord en klik vervolgens op 'OK'. Wanneer jouw toetsenbord niet in de lijst staat, ga dan naar http://keytouch.sf.net/dl-keyboards.html. Klik op het merk van jouw toetsenbord en download vervolgens het 'toetsenbordbestand' van jouw toetsenbord. Nu gaan we weer terug naar de lijst van toetsenborden in keyTouch en klikken op 'Import...'. Open nu het bestand dat je gedownload hebt. Jouw toetsenbord staat nu in de lijst, selecteer het en klik op 'OK'. (In het volgende hoofdstuk lees je wat je moet doen wanneer je toetsenbord ook niet op de website van keyTouch staat).
Wanneer we weer terug gaan naar het tabblad 'Key settings', zien we een lijst met de extra functie toetsen van jouw toetsenbord. Door een extra functie toets in de lijst te selecteren kunnen we in het rechter gedeelte van het venster instellen wat er gebeurt wanneer deze toets wordt ingedrukt. Wanneer je 'Program' selecteert, wordt het programma dat in het tekstvakje is ingevuld uitgevoerd. Ook kunnen we een 'Special action' laten uitvoeren. Voor een aantal 'special actions' moeten we onze voorkeuren opgeven (ga hiervoor naar het tabblad 'Preferences').
Wanneer we alles naar wens hebben ingesteld klikken we op 'OK' om de instellingen op te slaan en keyTouch af te sluiten.
4. Wanneer het toetsenbord nog niet ondersteund wordt
Het kan zo zijn dat je toetsenbord nog niet door keyTouch ondersteund wordt. Maar niet getreurd, want dat is zo opgelost! KeyTouch heeft namelijk de mogelijkheid om 'toetsenbordbestanden' (bestanden voor keyTouch die informatie over een bepaald toetsenbord bevatten) in te voeren en zo'n bestand gaan we maken.
Zorg er als eerste voor dat het pakket 'X11R6-contrib' geïnstalleerd is. Nu moeten we het volgende weten over toetsen:
Wanneer er een toets van het toetsenbord wordt ingedrukt stuurt het toetsenbord een code, die wij key- of hardwarecode noemen, door naar de computer. Aan zo'n keycode hangt Linux een symbolische code (wat bijvoorbeeld een letter kan zijn). Wanneer er dus een keycode binnen komt stuurt Linux de bijbehorende symbolische code door naar een programma. Nu zijn voor de standaard toetsen de keycodes bekend, en beschikken deze over een symbolische code. Echter, de hardware codes van de extra functietoetsen kunnen per toetsenbord merk of model verschillen en kan Linux er geen symbolische codes aan toekennen.
Waar wij dus achter moeten komen zijn de keycodes van de extra functietoetsen. Hiervoor maken we gebruik van het programmaatje 'xev'. Xev maakt een venstertje en alle gebeurtenissen die dat venstertje binnen krijgt worden op de commandline weergeven. Wanneer we bijvoorbeeld de toets a indrukken krijgen we de volgende informatie:
KeyPress event, serial 28, synthetic NO, window 0x4200001, root 0x3c, subw 0x0, time 5786876, (76,106), root:(80,646), state 0x10, keycode 38 (keysym 0x61, a), same_screen YES, XLookupString gives 1 bytes: "a"
We kunnen hieruit opmaken dat de symbolische code van de toets 'a' en de keycode 38 is. Wanneer we een extra functietoets indrukken krijgen we bijvoorbeeld de volgende informatie:
KeyPress event, serial 28, synthetic NO, window 0x4200001, root 0x3c, subw 0x0, time 5786876, (76,106), root:(80,646), state 0x10, keycode 149 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: ""
We kunnen zien dat de toets geen symbolische code heeft. De informatie die we van iedere extra functietoets nodig hebben is de keycode. Start daarom 'xev' en druk een voor een alle functietoetsen in en noteer de keycodes.
Nu kunnen we beginnen met het maken van een toetsenbord bestand. Open hiervoor een teksteditor (nedit, kwrite, emacs). Typ op de eerste regel de naam van het toetsenbord model en op de tweede regel de naam van de fabrikant. Bijvoorbeeld:
Internet Navigator SE Logitech
Na deze twee regels volgt de informatie over de extra functietoetsen. Voor 1 toets hebben we 4 regels nodig:
1. De keycode
2. De symbolische code
3. De naam van de toets
4. Het standaard uit te voeren programma of speciale actie bij het indrukken van de toets.
Klik hier voor een lijst van mogelijk te gebruiken symbolische codes.
In principe maakt het niet uit welke symbolische code er gekozen wordt, maar het is aan te raden om wel de meest geschikte te kiezen. De vierde regel bevat de naam van een programma of speciale actie (let op: hoofdletter gevoelig). Wanneer het de naam van een speciale actie is, begint de regel met een ':'-teken.
Een voorbeeld van deze vier regels is:
178 XF86HomePage My home :WWW - Home
Deze vier regels mogen gevolgd worden door vier regels van een andere toets. Voor de leesbaarheid van het bestand, is het aan te raden om 1 lege regel tussen twee toets-informatie-gedeeltes te plaatsen.
Het begin van een toetsenbord bestand kan er als volgt uitzien:
Internet Navigator SE Logitech 174 XF86AudioLowerVolume Lower volume :Aumix - Volume decrease 176 XF86AudioRaiseVolume Raise volume :Aumix - Volume increase 147 XF86iTouch iTouch keytouch 229 XF86Search Search :WWW - Search
Sla het toetsenbord bestand op wanneer het af is. In het vorige hoofdstuk is te lezen hoe het bestand in keyTouch wordt geimporteert. Natuurlijk zijn er ook nog andere mensen met het zelfde toetsenbord als jij. Daarom is het ook aan te raden om het door jou gemaakte toetsenbord bestand te mailen naar marvinr (at) users.sourceforge.net, zodat andere mensen er ook nog wat aan hebben.