Jumping pointer when modifiying "Coordinate transformation Matrix" for touchscreens/tablets
Submitted by dav..@..iim.es
Assigned to Xorg Project Team
Description
I have a portable dual screen Acer Iconia LX. It's like a big nintendo DS, but each screen is a tactile one. By default, X thinks there is a unique desktop composed by the two screens, so when I touch the superior one in its inferior half, the pointer goes to the screen below. Same thing with the inferior touchpanel: when I press the screen in its upper half, the cursor goes to the upper panel.
I've tried to modify the "Coordinate Transformation Matrix" associated to each touchscreens in order to limit the "movement" to its own screen. Something like:
xinput set-prop "superior Touchpanel" "Coordinate Transformation Matrix" 1 0 0 0 0.5 0 0 0 1
That way, the reported coordinate would be 1/2 of the reported and the cursor must remain in its screen (the matrix for the inferior screen would be a little different, but I think you get the idea)
I don't know why, but NOT ALL THE EVENTS SEEMS AFFECTED BY THE TRANSFORMATION. If you make a "xinput test" on the device, you can see "sporadic jumps" in the informed "Y" coordinate of the "motion event". The final result is that the pointer doesn´t follow exactly your finger's movement, and sometimes it jumps ramdomly. The "button release" event always fails, reporting an "Y" coordinate which is the half of what it must be.
Something similar, with the "X" coordinate, if you modify the associated matrix parameters. Looks like there is a problem with NON-INTEGER (-1< x< 1) factors.
If you try to use a program like "gimp" with this behavior...
It doesn´t like to be a Acer Iconia -it's a weird computer, yes- problem. IT HAPPENS WITH A WACOM TABLET TOO, when you modify the matrix in order to limit the movements to a section of the screen. I've tried several linux kernels from the 3.x series, and with differents linux distributions -and even different X versions- No changes so far.
I suppose there is a bug in the code that multiplies the coordinates vector with the transformation matrix, but...