2 touchscreens 2 pointers 2nd pointer wrong positioning

Victor Seryodkin vvscore at gmail.com
Wed Feb 23 03:13:25 PST 2011


I'm using XOrg built from the scratch using the latest sources
from the ftp://ftp.x.org/pub/individual
 xserver version 1.9.4
 evdev   version 2.6.0
 xinput version: 1.5.3

Linux kernel is 2.6.35.7 (tryied 2.6.38-rc3 - has the same behaviour)

The PC has 2 touchscreen displays connected:
 1) 15" display
      video - VGA connection to Trident Cyperblade videocard (xorg
driver trident)
      touchscreen - USB connection (xorg driver evdev)
 2) Display Link displays - USB connected (xorg driver evdev)
      video - USB connection (xorg driver: displaylink + kernel driver udlfb)
      touchscreen - USB connection (xorg driver evdev)

Both displays has identical touch controllers.

The task is to create 2 display configuration with
2 cursor pointers each handling its own touchscreen.
The idea is to make it possible to enter data to x window application
by two man each operating with 1 display.

Every display and its touch panel works fine in 1 display configuration.
But in dual screen configuration (with and without xinerama enabled)
there is the problem.

XOrg dual screen configuration is the following:
------------------------------------------------------------------
Section "ServerLayout"
	Identifier     "DualScreenLayout"
	
	Screen  0  "DisplayLinkScreen" 0 0
	Screen  1  "VGAScreen" RightOf "DisplayLinkScreen"

	InputDevice    "Mouse0"            "CorePointer"
	InputDevice    "DisplayLinkTouch"  "SendCoreEvents"
	InputDevice    "VGATouch"          "SendCoreEvents"
	
	InputDevice    "Keyboard0" "CoreKeyboard"
#	Option "Xinerama" "Off"
EndSection

Section "Files"
	ModulePath   "/usr/local/xorg/xorg-main/lib/xorg/modules"
	
	FontPath     "/usr/local/xorg/xorg-main/share/fonts/X11/misc/"
	FontPath     "/usr/local/xorg/xorg-main/share/fonts/X11/TTF/"
	FontPath     "/usr/local/xorg/xorg-main/share/fonts/X11/OTF/"
	FontPath     "/usr/local/xorg/xorg-main/share/fonts/X11/Type1/"
	FontPath     "/usr/local/xorg/xorg-main/share/fonts/X11/100dpi/"
	FontPath     "/usr/local/xorg/xorg-main/share/fonts/X11/75dpi/"
EndSection

Section "ServerFlags"
	Option "BlankTime"    "0"
	Option "StandbyTime"  "0"
	Option "SuspendTime"  "0"
	Option "OffTime"      "0"
EndSection


Section "Module"
	Load  "dbe"
	Load  "extmod"
	Load  "record"
	
	Disable "dri"
	Disable "glx"
EndSection

Section "InputDevice"
	Identifier  "DisplayLinkTouch"
	Driver      "evdev"
	Option	    "Device" "/dev/input/event2"
EndSection

Section "InputDevice"
	Identifier  "VGATouch"
	Driver      "evdev"
	Option	    "Device" "/dev/input/event6"
EndSection


Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
EndSection

Section "Device"
	Identifier  "VGACard"
	Driver      "trident"
	BusID       "PCI:1:0:0"
EndSection

Section "Monitor"
	Identifier   "VGAMonitor"
	VendorName   "VGAMonitor Monitor Vendor"
	ModelName    "VGAMonitor Monitor Model"
EndSection


Section "Screen"
	Identifier "VGAScreen"
	Device     "VGACard"
	Monitor    "VGAMonitor"
	DefaultDepth 16

	SubSection "Display"
		Depth   16
		Modes   "1024x768"
	EndSubSection
EndSection

Section "Device"
	Identifier      "DisplayLinkDevice"
	driver          "displaylink"
	Option          "fbdev" "/dev/fb0"
EndSection


Section "Monitor"
	Identifier   "DisplayLinkMonitor"
	VendorName   "DisplayLinkMonitor Monitor Vendor"
	ModelName    "DisplayLinkMonitor Monitor Model"
EndSection

Section "Screen"
	Identifier      "DisplayLinkScreen"
	Device          "DisplayLinkDevice"
	Monitor         "DisplayLinkMonitor"
	DefaultDepth 16
	
	SubSection "Display"
		Depth   16
		Modes   "800x600"
	EndSubSection
EndSection
------------------------------------------------------------------


I've managed to create 2 cursors by means of xinput:
  xinput list
  xinput create-master ...
  xinput reattach ...



But ... both pointers are working only within the primary
(DisplayLinkScreen) display.
If I'm trying to move secondary touchscreen pointer (VGATouch) using
the secondary display(VGAScreen) touchscreen
the pointer is moving only inside the primary screen (DisplayLinkScreen).

I've tried to setup 2nd touchscreen pointer: tried to make it's
working area to be inside the secondary display

Nether
  xinput set-prop "DisplayLinkTouch" --type=float "Coordinate
Transformation Matrix" 0.5 0 0 0 1 0 0 0 1
  xinput set-prop "VGATouch"         --type=float "Coordinate
Transformation Matrix" 0.5 0 0.5 0 1 0 0 0 1
nor
  xinput set-prop "VGATouch" --type=int "Evdev Axis Calibration" 4096
8191 0 4095
helped

Secondary touchscreen pointer always moves inside the primary display.

The interesting thing though is that mouse pointer moves correct and
works on both displays.

Please advise how to setup 2nd touch screen pointer



More information about the xorg mailing list