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

Michal Suchanek hramrach at centrum.cz
Tue Nov 9 12:36:44 PST 2010


On 9 November 2010 19:10, Ping Cheng <pinglinux at gmail.com> wrote:
> On Mon, Nov 8, 2010 at 10:59 PM, Dmitry Torokhov
> <dmitry.torokhov at gmail.com> wrote:
>> On Tue, Nov 09, 2010 at 01:31:49PM +1000, Peter Hutterer wrote:
>>>
>>> That said, it also goes counter the whole multi-touch approach - allowing
>>> more than one device on a single physical device.
>>
>> So maybe we should teach wacom to handle all devices as a single input device even
>> in cases when they use several USB interfaces?
>
> Hehe, we got you talking again. I need to understand if the lessons
> are for hardware/firmware or driver engineers ;).
>
>> We should be able to detect related interfaces by examining intf->intf_assoc (I hope) and
>> using usb_driver_claim_interface() to claim them.
>
> I guess you mean we do this in the kernel driver.
>
> Providing more than one type of HID devices from one physical device
> is not Wacom specific. Standalone keyboard with touchpad has the same
> feature/issue. When I plug an USB keyboard (whcih has a touchpad) on a
> Linux system, I see two input ports (/dev/input/input9 and
> /dev/input/event10) displayed. So, unless we only show one logical
> port for the same device (no matter how many types of devices it
> supports), userland clients would not be able to get the data from the
> same port. That is what we get from the Linux kernel, right?

The thing is that while the keyboard has separate devices for a
touchpad and for keys these devices really are separate, logically
from the user's point of view and physically. A keyboard with a
trackpoint is not physically separate from the pointing device but it
is still logically separate. It has only two axes on the single
pointer device which are somewhat related but other than that you can
have separate device for every button and key and lose no information
whatsoever. This same applies to tablets with one tool and buttons.
Tablets with multiple tools don't pose much problem either. The tools
are related and should ideally be reported from the same device but
they also behave the same and don't pose any difficulties when
collected from multiple related devices,  they have the same range of
motion, resolution, etc.

The situation with a P&T is special in that two largely disparate
devices are superimposed physically so that using one hinders using
the other to the point that measures have to be taken and some events
filtered when both devices are in proximity to make the hardware
usable.

The implication of the situation is that if you want to make any sense
of the input events you

 - absolutely have to know these two devices are related at some level
 - at a level where you know the devices are related you have to
filter out some events
 - when using the devices at the same time for different purposes
(button clicks and gestures vs moves) the difference in resolution and
range does not pose a problem but when the user moves both pen and
finger it might be challenging or even impossible  to determine
whether the touchdown points moved towards each other or away from
each other due to differences in available motion range, resolution
and hardware manufacture

Thanks

Michal


More information about the xorg-devel mailing list