[PATCH libinput] touchpad: make the hysteresis dependent on physical distance
Peter Hutterer
peter.hutterer at who-t.net
Sun Jun 14 17:41:34 PDT 2015
please fix your email client to not drop CC's on reply.
On Sat, Jun 13, 2015 at 09:30:35AM -0700, Bill Spitzak wrote:
> Can you set the "fake" resolution so that you get the same answer without
> having to check if it is fake?
>
> It looks like setting tp->device->abs.absinfo_x/y->resolution to diagonal *
> 2 / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR would avoid the if statement, and
> I would probably make everything that uses this resolution value "work" (in
> that they all scale the same).
yes and no, we have a bunch of things that rely on resolution or otherwise
guesswork (software button area for example). so the approach is a bit more
complex, but setting a resolution based on the diagonal is an interesting
approach.
Have a look into that if you can please, see if the numbers work out.
Cheers,
Peter
>
> >>On 12-06-15 08:09, Peter Hutterer wrote:
> >>
> >>>Some touchpads, e.g. the Cyapa in the Acer c720 have a small axis range
> >>>([0, 870], [0, 470]), so the diagonal/magic value yields a hysteresis
> >>>margin
> >>>of 1 device unit. On that device, that's one-tenth of a millimeter,
> >>>causing
> >>>pointer motion just by holding the finger.
> >>>
> >>>For touchpads that provide a physical resolution, set the hysteresis axes
> >>>to
> >>>0.5mm and do away with the magic factor.
> >>>
> >>>https://bugzilla.redhat.com/show_bug.cgi?id=1230441
> >>>
> >>>Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> >>>
> >>
> >>Yes I think this is a good idea:
> >>
> >>Reviewed-by: Hans de Goede <hdegoede at redhat.com>
> >>
> >>Can you also ask the reporter of:
> >>
> >>https://bugs.freedesktop.org/show_bug.cgi?id=90590
> >>
> >>To test libinput/master once you've pushed this? It will likely
> >>help with his problem too.
> >>
> >>Regards,
> >>
> >>Hans
> >>
> >>
> >>
> >> ---
> >>> src/evdev-mt-touchpad.c | 16 ++++++++++++----
> >>> 1 file changed, 12 insertions(+), 4 deletions(-)
> >>>
> >>>diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
> >>>index 8c28ff7..e9870ad 100644
> >>>--- a/src/evdev-mt-touchpad.c
> >>>+++ b/src/evdev-mt-touchpad.c
> >>>@@ -1495,10 +1495,18 @@ tp_init(struct tp_dispatch *tp,
> >>> EV_ABS,
> >>> ABS_MT_DISTANCE);
> >>>
> >>>- tp->hysteresis_margin.x =
> >>>- diagonal / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR;
> >>>- tp->hysteresis_margin.y =
> >>>- diagonal / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR;
> >>>+ if (device->abs.fake_resolution) {
> >>>+ tp->hysteresis_margin.x =
> >>>+ diagonal / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR;
> >>>+ tp->hysteresis_margin.y =
> >>>+ diagonal / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR;
> >>>+ } else {
> >>>+ int res_x = tp->device->abs.absinfo_x->resolution,
> >>>+ res_y = tp->device->abs.absinfo_y->resolution;
> >>>+
> >>>+ tp->hysteresis_margin.x = res_x/2;
> >>>+ tp->hysteresis_margin.y = res_y/2;
> >>>+ }
> >>>
> >>> if (tp_init_accel(tp, diagonal) != 0)
> >>> return -1;
> >>>
> >>> _______________________________________________
> >>wayland-devel mailing list
> >>wayland-devel at lists.freedesktop.org
> >>http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> >>
> >
>
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
More information about the wayland-devel
mailing list