Xorg and multitouch

Peter Hutterer peter.hutterer at who-t.net
Thu Nov 19 03:11:25 UTC 2009


On Wed, Nov 18, 2009 at 12:09:48PM -0500, Jarod Wilson wrote:
> On 11/17/09 9:14 PM, Chris Ball wrote:
> >Hi,
> >
> >    >  Multitouch means, several mousepointers and you can move them all
> >    >  seperately.
> >
> >No, that's what multi-pointer means.  Multi-Pointer X is already in
> >F12.
> ...
> >Multitouch refers to technologies that involve extrapolating from
> >motion of finger-shaped blobs on your input device to the idea that
> >a user has performed some continuous motion with said finger(s), and
> >reacting appropriately.  It's not the same as multi-pointer X, but it
> >does use the same core technology.
> 
> Isn't two-finger-drag for scrolling and two-finger-taps for
> right-click a form of multitouch? Or are we talking about extending
> that to pinch, rotate, etc?

There's a very subtle difference between multi-pointer and multi-touch and
the term multi-touch is quite overloaded.

In general, multi-pointer means you have multiple virtual input points that
are used simultaneously. The input points are distinct and trackable over
time though it is not always possible to map input points to users. Compare
two-handed input with multi-user input (or the combination of both).
This is implemented by providing two or more mouse cursors and keyboard
foci.

Multi-touch in its very literal term is direct-touch input providing
multiple points simultanously. Multi-touch can be multi-pointer provided you
treat each input point as a distinct point. E.g. using two fingers to
do what you could do with a mouse, or two users simultaneously using one or
more fingers as a pointing device.
This is supported, though we have some work to do in terms of getting this
from the hardware to the server.

Next level up is using touch not only as a single point of input but rather
as a shape or area of input - it matters if you use a palm, fist, finger,
finger-tip, etc. Instead of x/y you have a lot more information now about
the nature of the touch. Multi-touch here is the same as multi-pointer with
more information per touch. We don't have that one yet.

Next level up is using touch as a number of transient, non-connected
physical input points/areas that are harder to map to virtual input points.
Putting all 5 fingers of one hand down to perform an action is not the same
as using 5 mouse cursors. Putting the two index fingers down otoh is. That's
where it gets tricky, especially in the light of multiple users and windowed
environments. We don't have support for that type of multi-touch yet.

That's a high-level view, there are some more details for each I've omitted.

Gestures are largely independent of the level of multipointer/multitouch
support. You can do pinch with two mouse pointers, to finger touches or some
fancy multi-touch input.

We have some rudimentary support for gestures (two-finger scrolling +
tapping) but nothing elborate. We could do bits and pieces in the driver,
but we lack a meaningful way to send the information to the client.

Cheers,
  Peter




More information about the devel mailing list