Linux Touch Screen HOWTO
 Christoph Baumann, [email protected]
 Oct 24, 2000

 This document describes how to set up a touch screen input device
 under XFree86. As the author had only the opportunity to work with
 devices from EloTouch(R) and MicroTouch(R) this HOWTO is rather spe�
 cific for these devices.
 ______________________________________________________________________

 Table of Contents


 1. Which sort of devices are described here?

 2. How to configure the device

 3. Activating the device

 4. Using touch screen and mouse in parallel

 5. Suggested reading



 ______________________________________________________________________

 1.  Which sort of devices are described here?

 This HOWTO concentrates on devices connected via the serial port i.e.
 /dev/ttyS0 or /dev/ttyS1.

 2.  How to configure the device

 Touch screen devices are configured in the Xinput section in the
 XF86Config file (mostly /etc/X11/XF86Config or /etc/XF86Config).  At
 first verify that the device driver modules exist. They are located in
 /usr/X11R6/lib/modules/ (the modules for the above mentioned devices
 are xf86Elo.so and xf86MuTouch.so). Now have a look into XF86Config.
 There should be a section looking like this:


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



 To get the module loaded by the X server there has to be a section
 like this:


 Section "Module"
 Load "xf86Elo.so"
 EndSection



 Now the more tricky part. X needs to know some parameters about the
 device.  The section for this looks like this (see "man XF86Config"
 for more details):



 Section "Xinput"
  SubSection "Elographics"
 #the entry for a MicroTouch device would be SubSection "MicrotouchFinger"
   Port "/dev/ttyS1" # for a device at serial port 2
   DeviceName "TouchScreen" #could be any unambiguous name
   MinimumXPosition 300
   MaximumXPosition 3700
   MinimumYPosition 300
   MaximumYPosition 3700
   UntouchDelay 10 #not supported with MuTouch
   ReportDelay 10  #not supported with MuTouch
   AlwaysCore #activates the device on startup
  EndSubSection
 EndSection



 The values for the entries MinimumXPosition etc. are of course
 specific for the setup of the hardware (i.e. depend on the position of
 the touch screen relative to the monitor). The values determine where
 the points (0,0) and (xmax,ymax) on your monitor (xmax and ymax depend
 on the resolution chosen for the Xserver, such as 1024x768) are mapped
 on the touch screen.  The device driver reads these values and
 interpolishes the other coordinates.  For illustration:


  --------------touch screen area-----------------
  I                                              I
  I  ########visible monitor area##############  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
  ------------------------------------------------



 This mapping can be done by trial and error or by reading the raw
 output of the device (needs some serial port programming, see "The
 Linux Serial Programming HOWTO"). For the types EloTouch and
 MicroTouch exists a rudimentary calibration tool (written by the
 author of this document, it can be found at
 ftp://metalab.unc.edu/pub/linux/X11/xutils/touchcal-0.1.tar.gz
 <ftp://metalab.unc.edu/pub/linux/X11/xutils/touchcal-0.1.tar.gz>).

 3.  Activating the device

 After starting X, type in an Xterminal the command

 xsetpointer <devicename>

 where<devicename> is the name defined in XF86Config with the line
 DeviceName ".....", in this example it would be TouchScreen.


 To get the device working on startup use the AlwaysCore option in the
 touch screen section (see above)

 4.  Using touch screen and mouse in parallel

 To use the touch screen and a mouse in parallel you need to enter the
 mouse specs in the Xinput-section. This definitions should be the same
 as in the Pointer-section. The following example is for a PS/2-mouse:

 Section "Xinput"
    SubSection "Mouse"
       Protocol "PS/2"
       Port "/dev/mouse" #could also be /dev/psaux
       DeviceName "Mouse"
       AlwaysCore
    EndSubSection
 ...
 EndSection


 Several people pointed this out, especially the usage of the
 AlwaysCore option. Thanks to them all.

 5.  Suggested reading


 �  Manpage for XF86Config

 �  http://www.elotouch.com/Support/linux.asp
    <http://www.elotouch.com/Support/linux.asp>

 �  http://www.hof-berlin.de/tablet/tablet.html <http://www.hof-
    berlin.de/tablet/tablet.html> (Thanks to Christer Olofsson for
    sending me this URL)

 �  The manual shipped with your touch screen :-)