← Back to team overview

desktop-packages team mailing list archive

[Bug 1395195] [NEW] Evdev doesn't map touch coordinates properly to secondary X screens

 

Public bug reported:

On system with several X screens on same server, e.g.  several GPU cards that doesn't support functions similar to TwinView or BaseMosaic of NVIDIA, evdev doesn't map coordinates of touch events properly.
For example if  on server :0 there are  two displays  connected to one GPU as screen 0 (:0.0) , using TwinView,  and third connected to second GPU as screen 1 (:0.1) set below of screen 0.

1st display  1920x1080 +0+0
2nd: 1920x1080 +0+1080
3nd: 1920x1080 +0+2160

All three are touchscreens, mapped with coordinate transformation
matrices, like this:

Section "InputClass"
	Identifier 	"Touch1"
	MatchIsTouchscreen 	"on"
	MatchTag 	"ctouch-1"
	Option 	"TransformationMatrix"	"1 0 0 0 0.3333 0 0 0 1"
	Driver 	"evdev"
EndSection

Section "InputClass"
	Identifier 	"Touch2"
	MatchIsTouchscreen 	"on"
	MatchTag 	"ctouch-2"
	Option 	"TransformationMatrix"	"1 0 0 0 0.3334 0.3333 0 0 1"
	Driver 	"evdev"
EndSection

Section "InputClass"
	Identifier	"Touch3"
	MatchIsTouchscreen	"on"
	MatchTag	"ctouch-3"
	Option	"TransformationMatrix"	"1 0 0 0 0.3333 0.6667 0 0 1"
	Driver	"evdev"
EndSection

Two upper touchscreen work as intended, if I touch third,  cursor got
placed on bottom edge of display. Same hardware, displays arranged in
horizontal pattern from left to right, result in cursor clinging  on
rightmost edge. Relative coordinates pointer device, like mouse, work
perfectly with no err. It loos like evdev reports global coordinates
instead of calculating coordinates relative to origin of second X
screen, and they get restrained by actual size of that screen. I.e. it
reported {x=500, y=2200}  instead of {x=500, y =40}.

 I just realized that could confirm that theory, by attaching two
displays to second GPU, while having only one connected to first . In
that case  if I'm right,  while touching second screen , cursor appeared
on corresponding spot of third one. Can't check it until next Monday
now.

** Affects: xserver-xorg-input-evdev (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to xserver-xorg-input-evdev in Ubuntu.
https://bugs.launchpad.net/bugs/1395195

Title:
  Evdev doesn't map touch coordinates properly to secondary X screens

Status in “xserver-xorg-input-evdev” package in Ubuntu:
  New

Bug description:
  On system with several X screens on same server, e.g.  several GPU cards that doesn't support functions similar to TwinView or BaseMosaic of NVIDIA, evdev doesn't map coordinates of touch events properly.
  For example if  on server :0 there are  two displays  connected to one GPU as screen 0 (:0.0) , using TwinView,  and third connected to second GPU as screen 1 (:0.1) set below of screen 0.

  1st display  1920x1080 +0+0
  2nd: 1920x1080 +0+1080
  3nd: 1920x1080 +0+2160

  All three are touchscreens, mapped with coordinate transformation
  matrices, like this:

  Section "InputClass"
  	Identifier 	"Touch1"
  	MatchIsTouchscreen 	"on"
  	MatchTag 	"ctouch-1"
  	Option 	"TransformationMatrix"	"1 0 0 0 0.3333 0 0 0 1"
  	Driver 	"evdev"
  EndSection

  Section "InputClass"
  	Identifier 	"Touch2"
  	MatchIsTouchscreen 	"on"
  	MatchTag 	"ctouch-2"
  	Option 	"TransformationMatrix"	"1 0 0 0 0.3334 0.3333 0 0 1"
  	Driver 	"evdev"
  EndSection

  Section "InputClass"
  	Identifier	"Touch3"
  	MatchIsTouchscreen	"on"
  	MatchTag	"ctouch-3"
  	Option	"TransformationMatrix"	"1 0 0 0 0.3333 0.6667 0 0 1"
  	Driver	"evdev"
  EndSection

  Two upper touchscreen work as intended, if I touch third,  cursor got
  placed on bottom edge of display. Same hardware, displays arranged in
  horizontal pattern from left to right, result in cursor clinging  on
  rightmost edge. Relative coordinates pointer device, like mouse, work
  perfectly with no err. It loos like evdev reports global coordinates
  instead of calculating coordinates relative to origin of second X
  screen, and they get restrained by actual size of that screen. I.e. it
  reported {x=500, y=2200}  instead of {x=500, y =40}.

   I just realized that could confirm that theory, by attaching two
  displays to second GPU, while having only one connected to first . In
  that case  if I'm right,  while touching second screen , cursor
  appeared on corresponding spot of third one. Can't check it until next
  Monday now.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-evdev/+bug/1395195/+subscriptions


Follow ups

References