Using a touchscreen under Linux


Microtouch

Microtouch make a range of resistive and capacitive screens. I beleive this procedure should work for all their screens, as they use a common controller (which can be serial (DB9), PS/2 or USB) across the range.

 

XFree86 4.x

This is the procedure for Xfree86 v4.x, DB9 serial. If you are using PS/2, change "/dev/ttyS0" to "/dev/psaux". I'm still working on USB.
$ su -
$ cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4-safe
$ vi /etc/X11/XF86Config-4

add the following lines to each given section.

Section "ServerLayout"
	...
	InputDevice  "TouchScreen" "SendCoreEvents"
	...
EndSection

Section "Module"
	...
	Load  "mutouch"
	...
EndSection

--- Add this entire section ---

Section "InputDevice"
	Identifier                 "TouchScreen"
	Driver                     "mutouch"
	Option  "Device"           "/dev/ttyS0"
	Option  "Type"             "finger"
	Option  "MinX"             "0"
	Option  "MaxX"             "16383"
	Option  "MinY"             "0"
	Option  "MaxY"             "16383"
	Option  "SendDragEvents"   "false"
EndSection

The SendDragEvents option allows you to specify if drag events are allowed or not. Drag events are required for moving scrollbars, windows etc., but you may want to turn them off in a kiosk-type application where they are not supported.

Restart X-windows. If you have a problem with the setup, use CNTL-ALT-F2 to get a virtual console, log in as root, and run "mouseconfig" to get back to normality. Or just replace the XF86Config-4.

Thanks to Warren Bloomer for the XFree86-4 Microtouch config, and Simon Rembold at 3M Touchsystems Australia (formerly Microtouch Australia) for the loan equipment.

XFree86 3.x

$ su -
# cp /etc/X11/XF86Config XF86Config-safe
# vi /etc/X11/XF86Config

Add (if required) the following text to the given sections.

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

Section "Module"
	Load "xf86MuTouch.so"
EndSection

Section "Xinput"
	SubSection "MicroTouchFinger"
		Port "/dev/ttyS0"
		DeviceName "MuTFinger"
		ScreenNo 0
		MinimumXPosition 0
		MaximumXPosition 16383
		MinimumYPosition 0
		MaximumYPosition 16383
		HistorySize 256
		AlwaysCore
	EndSubSection
EndSection

"Alwayscore" makes the touchscreen pointer device active at the same time as any other pointers (Eg. your mouse). Alternatively, leave this out, and use "xsetpointer MicroTouchFinger" to change to the touchscreen.

Restart X-windows. If you have a problem with the setup, use CNTL-ALT-F2 to get a virtual console, log in as root, and run "mouseconfig" to get back to normality. Or just replace the XF86Config.

Elotouch

XFree86 3.x

$ su -
# cp /etc/X11/XF86Config XF86Config-safe
# vi /etc/X11/XF86Config

Add (if required) the following text to the given sections.

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

Section "Module"
	Load "xf86Elo.so"
EndSection

Section "Xinput"
	SubSection "EloTouch"
		Port "/dev/ttyS0"
		DeviceName "Elo"
		ScreenNo 0
		MinimumXPosition 4000
		MaximumXPosition 0
		MinimumYPosition 4000
		MaximumYPosition 0
		HistorySize 256
		Alwayscore
	EndSubSection
EndSection

The MinX, MaxX, MinY, MaxY values seem upside down on the Elo. I had some trouble getting the alignment correct, and ended up using the horizontal and vertical on-screen controls to move the pixels to the right place, rather than alighning the touch points.

"Alwayscore" makes the touchscreen pointer device active at the same time as any other pointers (Eg. your mouse). Alternatively, leave this out, and use "xsetpointer MicroTouchFinger" to change to the touchscreen.

Restart X-windows. If you have a problem with the setup, use CNTL-ALT-F2 to get a virtual console, log in as root, and run "mouseconfig" to get back to normality. Or just replace the XF86Config.

Thanks to Bruce Berisa at Redflex Australia for loan equipment.


 

Copyright (c) Burbong Consultants P/L, 2001