Evdev doesn't map touch coordinates properly to secondary X screens
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
xserver-xorg-input-evdev (Ubuntu) |
New
|
Undecided
|
Unassigned |
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 "Transformation
Driver "evdev"
EndSection
Section "InputClass"
Identifier "Touch2"
MatchIsTouchscreen "on"
MatchTag "ctouch-2"
Option "Transformation
Driver "evdev"
EndSection
Section "InputClass"
Identifier "Touch3"
MatchIsTouchscreen "on"
MatchTag "ctouch-3"
Option "Transformation
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.