299 lines
9.1 KiB
Plaintext
299 lines
9.1 KiB
Plaintext
|
Documentation License applies to this document Linux Touch
|
|||
|
Screen HOWTO
|
|||
|
(c) 2002-2006 by Christoph Baumann, cgb(at)debian.org
|
|||
|
v3.4 -- Nov 7, 2006 -- the GNU Free
|
|||
|
|
|||
|
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. The examples given in this HOWTO concentrate
|
|||
|
on devices connected via the serial port i.e. /dev/ttyS0 or
|
|||
|
/dev/ttyS1. (Information about USB devices would be appreciated!)
|
|||
|
______________________________________________________________________
|
|||
|
|
|||
|
Table of Contents
|
|||
|
|
|||
|
|
|||
|
1. How to configure the device
|
|||
|
2. Activating the device
|
|||
|
3. Using touch screen and mouse in parallel
|
|||
|
4. Configuration under XFree86 4
|
|||
|
4.1 Another configuration example
|
|||
|
4.2 Addendum
|
|||
|
|
|||
|
5. Touch Screens on Fujitsu LifeBooks
|
|||
|
6. Configuration under X.Org
|
|||
|
7. Suggested reading
|
|||
|
|
|||
|
|
|||
|
______________________________________________________________________
|
|||
|
|
|||
|
1. 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
|
|||
|
http://touchcal.sourceforge.net <http://touchcal.sourceforge.net>).
|
|||
|
|
|||
|
2. 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)
|
|||
|
3. 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.
|
|||
|
|
|||
|
4. Configuration under XFree86 4
|
|||
|
|
|||
|
(from Lee Monamy)
|
|||
|
|
|||
|
Example XF86Config-4 for an ELO touch screen:
|
|||
|
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Noteable differences between this and the version 3 config are that
|
|||
|
you specify a Device, *not* a Port, otherwise you get an error. Also,
|
|||
|
AlwaysCore from v3 has been replaced with SendCoreEvents.
|
|||
|
|
|||
|
You must also add to the ServerLayout section, despite that X might
|
|||
|
say: "(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. Another configuration example
|
|||
|
|
|||
|
from Dirk Mueller (for 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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Option "Type" can be "finger" or "stylus" Since Microtouch was bought
|
|||
|
by 3M-Touch, the resources are on
|
|||
|
http://www.3M.com/3MTouchSystems/downloads/legacy.jhtml#Linux
|
|||
|
<http://www.3M.com/3MTouchSystems/downloads/legacy.jhtml#Linux>
|
|||
|
|
|||
|
4.2. Addendum
|
|||
|
|
|||
|
According to Wong Yeow Sen the configuration option names have changed
|
|||
|
in XFree86 4.2 (at least with Red Hat 7.3). If it seems your
|
|||
|
calibration values aren't parsed try the following:
|
|||
|
|
|||
|
|
|||
|
...
|
|||
|
Option "MinX" "100"
|
|||
|
Option "MaxX" "4000"
|
|||
|
Option "MinY" "100"
|
|||
|
Option "MaxY" "4000"
|
|||
|
...
|
|||
|
|
|||
|
|
|||
|
|
|||
|
5. Touch Screens on Fujitsu LifeBooks
|
|||
|
|
|||
|
(from Joerg Hau)
|
|||
|
|
|||
|
Information about these devices can be found here:
|
|||
|
|
|||
|
"...
|
|||
|
|
|||
|
Harald Hoyer's Linux Touch Panel Drivers for the Fujitsu Lifebooks
|
|||
|
B112/B142/B2130, http://parzelle.de/Linux/Lifebook/
|
|||
|
<http://parzelle.de/Linux/Lifebook/>. Unfortunately, this is XFree 3.x
|
|||
|
only and it seems that this information is now "static" (dead?).
|
|||
|
|
|||
|
Kenan Esau's Lifebook Series B Touchscreen driver, which is the
|
|||
|
adaptation of Harald's driver to XFree 4.x.
|
|||
|
http://www.conan.de/lifebook/lifebook.html
|
|||
|
<http://www.conan.de/lifebook/lifebook.html>.
|
|||
|
|
|||
|
I [Joerg Hau] have used Kenan's driver on my Fujitsu LifeBook B142
|
|||
|
(described at http://www.mysunrise.ch/users/joerg.hau/linux/b142.htm
|
|||
|
<http://www.mysunrise.ch/users/joerg.hau/linux/b142.htm>), and it
|
|||
|
works like a charm.
|
|||
|
|
|||
|
..."
|
|||
|
|
|||
|
6. Configuration under X.Org
|
|||
|
|
|||
|
(from Kenan Bektas)
|
|||
|
|
|||
|
Example xorg.conf for an Elo TouchSystems 2216 AccuTouch<63> USB Touch-
|
|||
|
Monitor:
|
|||
|
Section "InputDevice"
|
|||
|
Identifier "elo"
|
|||
|
Driver "elo"
|
|||
|
Option "AlwaysCore"
|
|||
|
Option "MinX" "300"
|
|||
|
Option "MaxX" "3700"
|
|||
|
Option "MinY" "300"
|
|||
|
Option "MaxY" "3700"
|
|||
|
Option "ScreenNumber" "0"
|
|||
|
Option "ButtonNumber" "1"
|
|||
|
EndSection
|
|||
|
|
|||
|
|
|||
|
|
|||
|
7. Suggested reading
|
|||
|
|
|||
|
|
|||
|
<20> Manpage for XF86Config
|
|||
|
|
|||
|
<20> http://www.elotouch.com/Support/linux.asp
|
|||
|
<http://www.elotouch.com/support/linux.asp>
|
|||
|
|
|||
|
<20> http://www.3M.com/3MTouchSystems/downloads/legacy.jhtml#Linux
|
|||
|
<http://www.3M.com/3MTouchSystems/downloads/legacy.jhtml#Linux>
|
|||
|
|
|||
|
<20> 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)
|
|||
|
|
|||
|
<20> http://freshmeat.net/projects/xf86elousb
|
|||
|
<http://freshmeat.net/projects/xf86elousb> (Driver for iTouch USB)
|
|||
|
|
|||
|
<20> The manual shipped with your touch screen :-)
|
|||
|
|
|||
|
|
|||
|
|