[RFC] Multi-Touch (MT) support - arbitration or not

Dmitry Torokhov dmitry.torokhov at gmail.com
Thu Nov 11 11:24:34 PST 2010


On Thu, Nov 11, 2010 at 11:01:11AM -0800, Ping Cheng wrote:
> On Thu, Nov 11, 2010 at 12:26 AM, Dmitry Torokhov
> <dmitry.torokhov at gmail.com> wrote:
> >
> > I do not believe that current protocol design has an issue. MT protocol
> > is really for representing devices reporting multiple touches on the same
> > working surface which means that size stays the same for all touches.
> 
> When we say multiple touches, do we mean multiple touches of the same
> type or different types? If we mean different types (pen and finger),
> the size could be different due to the differences in technology. For
> Bamboo, the size is different for pen and touch.
> 

I want to say that generally for same tool, when it makes sense we can
scale so that different tools could pretend to have the same range. If
there are really 2 vastly different devices superimposed together then
maybe the best option is to treat them as 2 separate input devices.

> >> I am asking because to me it does not make any sense to scale the values.
> >>
> >> Devices that have a touch layer superimposed over LCD screen have to
> >> be calibrated for the system to know which ABS_X/Y corresponds to
> >> which pixel. I suspect that Bamboo P&T may have similar issue with its
> >> two superimposed input devices. Alos somebody suggested that the input
> >> area usable for pen might be smaller than area usable for touch.
> >>
> >> This means we are most likely talking apples and oranges, even if we
> >> scale them to be the same size.
> >>
> >
> > No, I do not believe this is true. Consider touchscreen that you can
> > touch with either stylus or finger, with stylus having better
> > resolution suited for drawing/writing and finger just used for selecting
> > UI objects. Obviously they work with the same number of pixels even
> > though ranges reported by the hardware might differ.
> >
> >> So I think it is most sensible to leave the scales are reported by the
> >> hardware because that gives a hint to the application which receives
> >> the event that the inputs are in fact different. They will still be
> >> when the events are scaled, it will be just harder to see from the
> >> client point of view.
> >
> > It really depends on the device in question and we have several options:
> >
> > 1. Single multitouch device - unified working surface with the same
> >   characteristics, kernel scales properly.
> >
> > 2. 2+ logical devices - may have different size/resolutions, userspace
> >   will have to do arbitration if they are in the same physical package.
> >
> > With Bamboo I think option 1 makes more sense and is easier on everyone.
> 
> I agree with you on "different size/resolutions" and "unified working
> surface" for the two opitons above. And I also agree with you that we
> should leave the arbitration to the userland for MT events for both
> opitons.
> 
> But, I think ABS_X/Y arbitration should be considered in the kernel to
> reduce the overhead in userland.

With option 1 you have natural ST arbitration - the first touch gets to
report (ABS_X, ABS_Y), the rest will have to report ABS_MT_* till the
first touch is lifted, right?

Thanks.

-- 
Dmitry


More information about the xorg-devel mailing list