Linux Touch Screen HOWTO

Christoph Baumann, cgb@debian.org,
Vertaald door: Ellen Bokhorst, bokkie@nl.linux.org

v3.1, 06-11-2002


In dit document wordt beschreven hoe een aanraakscherm als invoerapparaat onder XFree86 in te stellen. Aangezien de auteur slechts de kans kreeg te werken met apparaten van EloTouch(R) en MicroTouch(R) is deze HOWTO nogal specifiek op deze apparaten gericht. De voorbeelden gegeven in deze HOWTO concentreren zich rondom apparaten die op de seriële poorten worden aangesloten, d.w.z. /dev/ttyS0 of /dev/ttyS1. (Informatie over USB-devices wordt gewaardeerd!) (c) 2002 door Christoph Baumann. Op dit document is de GNU Free Documentation License van toepassing.

1. Hoe het device te configureren

Aanraakschermen worden geconfigureerd in de Xinput section in het XF86Config bestand (meestal in /etc/X11/XF86Config of /etc/XF86Config). Verifieer als eerste dat de devicedrivermodules bestaan. Ze zijn te vinden in /usr/X11R6/lib/modules/ (de modules voor de bovengenoemde devices zijn xf86Elo.so en xf86MuTouch.so). Kijk nu eens in XF86Config. Er zou zich een section in moeten bevinden dat er ongeveer zo uitziet;

Section "Files"
...
ModulePath "/usr/X11R6/lib/modules"
...
EndSection

Om de module geladen te krijgen door de X-server, moet er een section voorkomen als de volgende:

Section "Module"
Load "xf86Elo.so"
EndSection

Nu het lastiger deel. X heeft een aantal parameters over het device nodig. De section hiervoor ziet er zo uit (zie "man XF86Config" voor meer details):

Section "Xinput"
 SubSection "Elographics"  
#the entry for a MicroTouch device would be SubSection "MicrotouchFinger"
  Port "/dev/ttyS1" # voor een device aangesloten op de seriële poort 2
  DeviceName "TouchScreen" # zou iedere ondubbelzinnige naam kunnen zijn
  MinimumXPosition 300
  MaximumXPosition 3700
  MinimumYPosition 300
  MaximumYPosition 3700
  UntouchDelay 10 # niet ondersteund door MuTouch
  ReportDelay 10  # niet ondersteund door MuTouch
  AlwaysCore # activeert het device bij het opstarten
 EndSubSection
EndSection

De waarden voor de regels MinimumXPosition enz. zijn natuurlijk specifiek voor de setup van de hardware (d.w.z. hangt af van de positie van het aanraakscherm relatief t.o.v. de monitor). De waarden bepalen waar de punten (0,0) en (xmax,ymax) op je monitor, zoals 1024x768) zijn ingedeeld op het aanraakscherm. De devicedriver leest deze waarden in en interpoleert de andere coördinaten. Ter illustratie:

 --------------aanraakschermgebied---------------
 I                                              I
 I  ########zichtbaar monitor gebied##########  I
 I  #x                                       #  I
 I  # (0,0)                                  #  I
 I  # (MinimumXPosition,MinimumYPosition)    #  I
 I  #                                        #  I
 I  #                                        #  I
 I  #                                        #  I
 I  #                                        #  I
 I  #                                        #  I
 I  #                                        #  I
 I  #                                        #  I
 I  #     (MaximumXPosition,MaximumYPosition)#  I
 I  #                             (xmax,ymax)#  I
 I  #                                       x#  I
 I  ##########################################  I
 I                                              I
 ------------------------------------------------

Deze indeling kan worden verkregen door uitproberen of door het lezen van de uitvoer van het device (hiervoor is wat seriële poortprogrammering nodig, zie "De Linux Serial Programming HOWTO"). Voor de typen EloTouch en MicroTouch bestaat een rudimentair calibratie hulpmiddel (geschreven door de auteur van dit document, welke is te vinden op ftp://metalab.unc.edu/pub/linux/X11/xutils/touchcal-0.1.tar.gz).

2. Activeren van het device

Typ na het opstarten van X in een Xterminal de opdracht xsetpointer <devicename>

waarbij <devicename> de naam is in XF86Config die is gedefinieerd met de regel DeviceName ".....", in dit voorbeeld zou dit TouchScreen zijn.

Om het device bij het opstarten te activeren gebruik je de optie AlwaysCore in de touch screen section (zie hierboven)

3. Aanraakscherm en muis parallel gebruiken

Om het aanraakscherm en een muis parallel te gebruiken, moet je de specificaties van de muis in de Xinput-section invullen. Deze definities moeten hetzelfde zijn als in de Pointer-section. Het volgende voorbeeld dient voor een PS/2-muis:

Section "Xinput" 
   SubSection "Mouse" 
      Protocol "PS/2" 
      Port "/dev/mouse" #kan ook /dev/psaux zijn
      DeviceName "Mouse" 
      AlwaysCore 
   EndSubSection
...
EndSection 
Verscheidene mensen wezen hierop, vooral het gebruik van de optie AlwaysCore. Bedankt allemaal.

4. Configuratie onder XFree86 4

(van Lee Monamy)

Voorbeeld XF86Config-4 voor een ELO aanraakscherm:

Section "InputDevice"
        Identifier "ELO touchscreen"
        Driver "elographics"
        Option  "Device"        "/dev/ttyS0"
        Option  "MinimumXPosition"      "300"
        Option  "MaximumXPosition"      "3700"
        Option  "MinimumYPosition"      "300"
        Option  "MaximumYPosition"      "3700"
        Option  "UntouchDelay"  "10"
        Option  "ReportDelay"   "10"
        Option  "SendCoreEvents"        "yes"
EndSection

Opmerkelijke verschillen hiertussen en de configuratie van versie 3 zijn dat je een Device specificeert, *geen* "Port", anders krijg je een foutmelding. Bovendien is AlwaysCore van v3 vervangen door SendCoreEvents.

Je moet ook de ServerLayout section toevoegen, ondanks dat X dan wellicht komt met: "(II) XINPUT: Adding extended input device "TOUCHSCREEN" (type: Elographics Touch Screen)"

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen  "Default Screen"
        InputDevice "Generic Keyboard"
...
        InputDevice "ELO touchscreen"
EndSection

4.1 Een ander configuratievoorbeeld

van Dirk Mueller (voor Microtouch SMT3 Series):

Section "InputDevice"
        Identifier  "MicroTouchFinger"
        Driver      "mutouch"
        Option      "Type" "finger"
        Option      "Device" "/dev/ttyS0"
        Option      "ScreenNo" "0"
        Option      "MinimumXPosition" "0"
        Option      "MaximumXPosition" "16383"
        Option      "MinimumYPosition" "0"
        Option      "MaximumYPosition" "16383"
EndSection

De Optie "Type" kan "finger" zijn of "stylus" Aangezien Microtouch werd opgekocht door 3M-Touch, zijn de bronnen te vinden op http://www.3M.com/3MTouchSystems/downloads/legacy.jhtml#Linux

4.2 Addendum

Volgens Wong Yeow Sen zijn de namen van configuratie-opties in XFree86 4.2 gewijzigd (tenminste bij Red Hat 7.3). Probeer het volgende als het erop lijkt dat je calibratiewaarden niet worden verwerkt:

...
        Option  "MinX"      "100"
        Option  "MaxX"      "4000"
        Option  "MinY"      "100"
        Option  "MaxY"      "4000"
...

5. Aanraakschermen op Fujitsu LifeBooks

(van Joerg Hau)

Informatie over deze devices is hier te vinden:

"...

Harald Hoyer's Linux Touch Panel Drivers voor de Fujitsu Lifebooks B112/B142/B2130, http://parzelle.de/Linux/Lifebook/. Helaas gaat dit alleen over XFree 3.x en het schijnt dat deze informatie nu "statisch" (uitgedoofd?) is.

Kenan Esau's Lifebook Series B Touchscreen driver, wat de aanpassing is van Harald's driver voor XFree 4.x. http://www.conan.de/lifebook/lifebook.html.

Ik [Joerg Hau] heb Kenan's driver op mijn Fujitsu LifeBook B142 gebruikt (beschreven op http://www.mysunrise.ch/users/joerg.hau/linux/b142.htm), en het werkt als een tierelier.

..."

6. Aanbevolen leesstof