This file documents Onetouch, support software for Onetouch touch panels under Linux and XFree86.
The package supports serial Onetouch touch panels under Linux and XFree86. The latest version of this driver can be downloaded from:
The latest source tree can be accessed from my CVS server, instructions
are available at http://www.gnudd.com/software/#cvs . The
package name to use is
onetouch. As an alternative, you can use
viewcvs at http://cvs.gnudd.com. The latest CVS snapshot
can also be downloaded from ftp://ftp.gnudd.com/pub/onetouch .
The driver has been designed to run under XFree86 version 4.x. It has been tested on 4.1 and 4.2.
In order to use the touch screen in X, you should install in your system the "onetouch_drv" module, part of this distribution.
The compiled module (
onetouch_drv.o) should be
copied in the module
directory of your X server, usually or
When the file is in place, a proper
XF86Config will arrange for
In order to recompile the module you need access to the complete X source tree, and you can compiling issuing:
make XFREE_SOURCE=<location-of-source> onetouch_drv.o
The "location of source" above should be the full path name to the directory called "xc" after you uncompress the source tar file.
XFREE_SOURCE can be defined
in your environment if you prefer. Note that if the variable
is defined, calling make without arguments will
compile the module.
To compile onetouch you'll most likely need to compile X first
make World and waiting a huge lot of time). A freshly
uncompressed source tree lacks the proper header files for compilation
to succeed; since one of the errors happens inside an X header, you
can only fix it by compiling X first - I can't fix things in my source.
In order to use a Onetouch device with XFree 4, you need to add an
section to your
XF86Config. The following example shows
how it looks like. The options that are shown commented are not
implemented in this version of the module, and are ignored
Section "InputDevice" Identifier "Touchscreen0" Driver "onetouch" Option "Device" "/dev/ttyS0" Option "BaudRate" "9600" #Option "CalibrationFile" "/etc/onetouch.calib" Option "Smoothness" "9" Option "TappingDelay" "0" Option "JitterDelay" "50" Option "DebugLevel" "0" Option "SendCoreEvents" EndSection
Moreover, you need to add an
InputDevice line in the
ServerLayout section. After the addition,
the section will most likely look like this:
Section "ServerLayout" Identifier "Simple Layout" Screen "Screen 1" InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" InputDevice "Touchscreen0" EndSection
Note that if your system has no mouse device, you can remove
InputDevice "Mouse1" line and add
to the touch screen line.
The meaning of individual options is as follows:
InputDevicedirective within the
ServerLayoutsection that is usually found at the end of the configuration file.
Option "Device" "/dev/ttyS0"
Option "BaudRate" "9600"
Option "CalibrationFile" "/etc/onetouch.calib"
Option "Smoothness" "9"
Option "TappingDelay" "0"
Option "JitterDelay" "50"
Option "DebugLevel" "0"
Please note that with XFree you can still use a normal mouse together with the touch panel. Also, can use the touch screen as its only pointer device.
If, when calling
startx, it fails with a message of
Invalid Subsection Name, please check the previous error
lines, as they explain what is wrong. They usually look like:
(--) no ModulePath specified using default: /usr/X11R6/lib/modules xf86Onetouch.so: Unknown error loading module
The messages are pretty clear, if your are careful in reading them (I am not that careful, and lose half an hour in trying to figure out what was wrong).
To calibrate the touch panel, run the
onetouch_calib script, under X.
The program needs to find
onetouch_to_ascii in the command search path or the current
uses the control program to turn off the touchscreen in X, so the
calibrator can read input data, and the conversion tool to process
ASCII data instead of binary data).
In order to calibrate you'll need to move the mouse pointer first. You
can do that with the
warp command (see below) if no other pointer
is available on the system. Using the touch panel may or may not work.
Currently I have no way to disable the current calibration parameters,
but I plan to fix this problem in later revisions.
The package includes two tools that work by connecting with the X server:
infoas argument. It turns the touchscreen off, turns it on, or reports information about active input devices. The program needs to connect to an X server.