← Back to team overview

multi-touch-dev team mailing list archive

Re: Support broken in 12.04?

 

On 07/24/2012 02:48 PM, Matthis R wrote:
Am 24.07.2012 23:36, schrieb Chase Douglas:
On 07/24/2012 12:47 PM, Matthis R wrote:
Am 24.07.2012 20:22, schrieb Chase Douglas:
On 07/24/2012 05:00 AM, Matthis R wrote:
Hello everyone,

since I installed Ubuntu 64biz 12.04, the multitouch support for my
Synaptics trackpad seems to be broken.
When I try to "sudo mtdev-test /dev/input/event9" (which is my
touchpad)
it throws:
-> error: could not grab device

Also geistest is throwing an error saying:
-> error subscribing to gestures
-> error subscribing window 0x000000b9

Is this a known problem with synaptics pads, am I facing a bug
here, or
is it intended behaviour?

Hi Matthis,

There are two issues here. First, X will grab the touchpad evdev node.
This prevents mtdev-test from working. This has always been the case.
If you want to use mtdev directly with a touchpad, you have to
configure the X server so it doesn't grab the touchpad. There's
instructions somewhere on wiki.ubuntu.com on how to do this, but
generally this isn't what you want to be doing anyway.

The second issue, geistest errors, is due to a change in uTouch in
12.04. The previous incarnation of the uTouch stack would allow for
multiple clients to select for gestures and touches on a given window.
The new uTouch architecture, which is now built on top of the
multitouch support in X.org, does not allow for this. While this can
be seen as a regression in behavior, it actually better defines what
happens when multiple clients attempt to receive touch and gesture
events from the same window. Ideally, this shouldn't be happening.

The exact error you are seeing is due to geistest by default
attempting to subscribe to gestures on the root window. Unity already
has a gesture subscription on the root window, so geistest fails. If
you were to run geistest under a different environment, like KDE, it
should succeed. What you can do instead is to run geistest on a
specific window. You can use xwininfo to get the window ID of a
specific window. Then you can pass that to geistest by using the "-w"
option.

You might find other tools more useful for testing, however. I suggest
trying geisview, for example.

Thanks!

-- Chase
Hey Chase.

Thanks for your detailed answer - that really shed some light on the
dark.
With your advice geistest is now usable with the -w switch under unity
and, as you mentioned, its working ootb under gnome3.
But then again, geistest seems to have no function what so ever.

This is the output:
http://pastebin.com/ySi8ym5v
This stays forever - even if I'd make a linedance on my touchpad ;-)
Am I missing something fundamental again?

I'm really sorry for beeing so noobish, but I want to understand the
basics of the multitouch stuff in general for programming purposes.

No worries!

So there are two troublesome aspects of multitouch on touchpads:

* Many are only two-touch (including poorly implemented two-touch,
too). Yours falls in this group. Unfortunately, you won't be able to
get any Unity gestures because they are 3 and 4 touch. You would be
able to receive two touch gestures if it weren't for the next point:

* Because of the legacy architecture of X.org itself, it is not
possible to have traditional X scroll and multi-button emulation *and*
multitouch gestures through uTouch at the same time. You will only be
able to receive two-touch gestures if you go into the mouse
preferences and disable "tap to click" and two finger scrolling.

Hopefully the latter will be resolved when we move to a modern display
server like Wayland.

Sorry I don't have any better information :(.

-- Chase
Hm that seems strange, because before 12.04 I was able to use up to 3
finger gestures with ginn (I used that occasionally for
desktopswitching) on the very same touchpad.

So 3 finger gestures _were_ supported - once upon a time ;-)
That's exactly the point I don't get.

Yes, the original gesture stack had support for semi-multitouch devices. These devices only give a bounding box of the touches, but you don't know where each touch really is. For example, if you have touches in the top left and bottom right of the touchpad it may give you a bounding box with coordinates of bottom left, top right.

Our original architecture was embedded inside the X display server. It was a huge patch and was not able to provide for some of the more advanced features we have today. When we moved to the client side of X, we lost the ability to handle semi-multitouch devices. Support could theoretically be added back in, but support would first have to be added to the X server for semi-multitouch devices. Unfortunately, this just isn't a priority at this point since many of the newest trackpads support full multitouch.

I'm sorry there isn't any better news :(.

-- Chase


Follow ups

References