I took the elo touch screen driver and modified it to serve my needs. Thanks to those who developed it.
Here is the XFree86 driver source:
$ tar xzf xf86B112-0.9.tar.gz $ cd xf86B112-0.9 $ make
Here is a binary version compiled for XFree86 3.3.5.
Here you see the relevant sections of the XF86Config
Section "module" Load "xf86B112.so" EndSection Section "Xinput" Subsection "B112" Port "/dev/psaux" DeviceName "touchscreen" MinimumXPosition 44 MinimumYPosition 62 MiddleXPosition 507 MiddleYPosition 466 MaximumXPosition 980 MaximumYPosition 894 DebugLevel 0 Emulate3Buttons Emulate3Timeout 50 # DebugLevel 100 AlwaysCore EndSubSection EndSection Section "Pointer" Protocol "Microsoft" Device "/dev/ttyS0" Emulate3Timeout 50 Resolution 100 # Buttons 2 Buttons 3 Emulate3Buttons EndSection
not to change ....
whatever you want
Calibration value: bottom left point
Calibration value: bottom left point
Calibration value: middle of the screen (400/300)
Calibration value: middle of the screen (400/300)
Calibration value: top right point
Calibration value: top right point
Set this to a higher number for coordinate reporting
Let it be the main XInput device
You should change the 'Position' calibration parameters either using the DebugLevel Parameter and change the console to view the debugging info after you touched the screen, or you can use the following small programs:
dumps the raw bytes. I used it to figure out, how to initialize the panel.
dumps the coordinates you can use for the 'Positions'.
For the MiddlePosition you can use the initial cursor position when X starts. Just try to hit the cursor, then switch to the debugging console and write down the positions. The converted result should be 400,300 on a 800x600 display. Remember: the bottom left is 0,0!
To turn absolute coordinate mode on after suspension I use the following /etc/apmd_proxy script:
#!/bin/sh case $1 in start) ;; change) case $2 in power) ;; battery) ;; esac;; resume) hwclock --hctosys touch /var/tmp/resetB112 ;; esac