Re: [PATCH 7/7] elantech: average the two coordinates when 2 fingers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Op 31-07-10 21:53, Chris Bagwell schreef:
> 
> 
> On Fri, Jul 30, 2010 at 4:01 PM, Henrik Rydberg <rydberg@xxxxxxxxxxx
> <mailto:rydberg@xxxxxxxxxxx>> wrote:
> 
>     On 07/30/2010 08:55 PM, Éric Piel wrote:
> 
>     > On 21-07-10 05:36, Dmitry Torokhov wrote:
>     >> On Mon, Jun 21, 2010 at 11:06:28PM +0200, Éric Piel wrote:
>     >>> When 2 fingers are pressed, the low and high coordinates are given.
>     >>> Instead of reporting just the low coordinate as the normal position,
>     >>> report an average of both. This allow to have the cursor always
>     move,
>     >>> whichever finger moves. In practice, this improves the support of
>     >>> two-fingers scolling with the synaptics X driver.
>     > :
>     >>> -        input_report_abs(dev, ABS_X, x1<<  2);
>     >>> -        input_report_abs(dev, ABS_Y, y1<<  2);
>     >>> +        input_report_abs(dev, ABS_X, (x1 + x2)<<  1);
>     >>> +        input_report_abs(dev, ABS_Y, (y1 + y2)<<  1);
>     >>
>     >> I am concerned what happens when you put one finger first and
>     then add
>     >> another one. Would not that couse the cursor to jump?
> 
> 
>     I agree, I have seen this behavior before and it is not quite what
>     you want. The
>     average point does jump.
> 
> 
> This is basically same approach as what synaptics hardware is
> reporting.  Their  Synaptics PS/2 TouchPad Interfacing Guide mentions
> current hardware reports an x/y closer to first finger during multiple
> fingers and that older hardware reports a value closer to center.  Both
> cases, you can see movement when either finger is moving.
> 
> There are a few existing X side bug reports I've seen related to this
> behaviour.  On newer synaptics pad its easiest to see if you touch 1st
> finger on left side of pad, 2nd finger on right side of pad, and then
> release 1st finger then you will see a big cursor jump as hardware is
> force to transition over to 2nd finger x/y (make sure 2 finger scrolling
> is disabled as that feature can fix issue).
> 
> I've seen xf86-input-synaptics patches floating around that try to
> detect jumps-because-of-averaging from the size of delta and discard but
> it is easy to be mistaken.  Probably its better to detect
> BTN_TOOL_DOUBLETAP transitions back to 0 and treating similar to both
> fingers being lifted to account for expected jump.
> 
> So an option is to do something similar to below and clearly document
> that user space needs to account for known reporting behaviour when
> BTN_TOOL_DOUBLETOUCH transitions back to 0.
I've got some fairly new versions of everything, but at least here, this
is already happening with the X synaptics driver: in practice there is
not jump at all, which ever finger is reported in doubletap. In
doubletap it moves the scrolling axes, and changing to singletap, it
resets to the new current position. No jump, both with my old synaptics
hardware and with the elantech.

Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux