Re: [PATCH 3/3] input: mt: Move tracking and pointer emulation toinput-mt (rev2)

From: Chris Bagwell
Date: Mon Dec 06 2010 - 17:56:27 EST


On Mon, Dec 6, 2010 at 2:00 PM, Chase Douglas
<chase.douglas@xxxxxxxxxxxxx> wrote:
> On 12/06/2010 11:52 AM, Chris Bagwell wrote:
>> On Mon, Dec 6, 2010 at 12:40 PM, Chase Douglas
>> <chase.douglas@xxxxxxxxxxxxx> wrote:
>>> On 12/01/2010 09:21 AM, Henrik Rydberg wrote:
>>>> The drivers using the type B protocol all report tracking information
>>>> the same way. The contact id is semantically equivalent to
>>>> ABS_MT_SLOT, and the handling of ABS_MT_TRACKING_ID only complicates
>>>> the driver. The situation can be improved upon by providing a common
>>>> pointer emulation code, thereby removing the need for the tracking id
>>>> in the driver.  This patch moves all tracking event handling over to
>>>> the input core, simplifying both the existing drivers and the ones
>>>> currently in preparation.
>>>
>>> When two or more fingers are down, one of the fingers controls
>>> ABS_{X,Y}. I think the aim is to emulate current behavior for
>>> synaptics-style touchpads, which average the position in firmware. Thus,
>>> we should be averaging the touch positions to generate the ABS_{X,Y} values.
>>>
>>
>> At least for modern synaptics hardware, it does track to first touch
>> like this patch does.
>>
>> It is maybe a weighted average were its 90% first finger and 10%
>> second finger.  Just moving second finger gives slight movement.
>
> Ok. Does this present any usability issues, or does it seem to work fine
> in your opinion? If it works ok in normal use cases then I'm fine with
> how this is implemented.

Not averaging works fine in normal cases I've come up with. It works
best with dumbest of apps (those that don't even want to process
DOUBLETAP) as they will not see cursor jumps. It works fine for apps
that process DOUBLETAP and TRIPLETAP and specifically for tap and
swipe gestures where fingers are moving together anyways. We can't
reliably detect pinch or rotate motions without exact second fingers
data so not much reason to show 2nd finger movement there.

Click-and-drag on those click-pads are their own topic though. For
that case, I've tried to come up with something (show 2nd finger
movement by averaging or switch tracking) but either we will get a
cursor jump or else we will be confusing user land by sending a
DOUBLETAP when logically we want them to act as if 1 is touching. I
think MT is best solution for those.

Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/