Hi Hans, On Jan 13 2016 or thereabouts, Hans de Goede wrote: > Hi, > > On 13-01-16 05:09, Peter Hutterer wrote: > >When three fingers are set down on the touchpad, one finger tends to get a > >0/0 > >coordinate, triggering palm detection in the upper left corner. Handle this > >like the jumping semi-mt touchpads and disable MT handling and instead > >just rely on the x/y axis and the BTN_TOOL_* events. > > > >https://bugs.freedesktop.org/show_bug.cgi?id=93583 > > > >This kernel patch is required: > >https://lkml.org/lkml/2016/1/11/171 > > > >Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> > > Patch looks good to me: > > Reviewed-by: Hans de Goede <hdego...@redhat.com> > > About Benjamin's patch: > > https://lkml.org/lkml/2016/1/11/171 > > Benjamin, when you pass in INPUT_MT_SEMI_MT, you can drop the: > > __set_bit(INPUT_PROP_SEMI_MT, dev->propbit); > > A few lines up, since input_mt_init_slots will do that now.
Oops, I missed that. I focused only on the v3 and missed that v2 already had the bit set :) > > More in general the elantech driver could do with some cleanup > to fully use the input_mt helpers, specifically stop doing > pointer emulation itself for v2 and v3 touchpads: > - pass in INPUT_MT_POINTER to input_mt_init_slots and stop initializing > ABS_X / ABS_Y and move input_mt_init_slots to after setting up the MT > axis (this applies to v4 too) > - Stop reporting BTN_TOUCH / ABS_X / ABSY in diy style instead just call > input_mt_frame_sync before input_sync > - Replace: > input_report_key(dev, BTN_TOOL_FINGER, fingers == 1); > input_report_key(dev, BTN_TOOL_DOUBLETAP, fingers == 2); > input_report_key(dev, BTN_TOOL_TRIPLETAP, fingers == 3); > input_report_key(dev, BTN_TOOL_QUADTAP, fingers == 4); > With: > input_mt_report_finger_count(dev, fingers); > - And for v4 touchpads replace: > input_mt_report_pointer_emulation(dev, true); > With: > input_mt_frame_sync(dev); > Which ends up doing the same, but is the right way to use the > input_mt helpers > Ack. I made those changes and was able to "test" on the recording the user gave us for v3. I am not able to test (yet) on the v4 series as I need to borrow my wife's laptop. The only concern I have with this cleanup is that the touchpad has its own handling of pressure and width, and it has to stay here otherwise I might change too many bits in the current driver to blindly test and send the patch. Cheers, Benjamin > Regards, > > Hans > > > > > > > > >--- > > src/evdev-mt-touchpad.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > >diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c > >index 2de2539..f91f839 100644 > >--- a/src/evdev-mt-touchpad.c > >+++ b/src/evdev-mt-touchpad.c > >@@ -1496,7 +1496,8 @@ tp_init_slots(struct tp_dispatch *tp, > > * explanation. > > */ > > if (tp->semi_mt && > >- (device->model_flags & EVDEV_MODEL_JUMPING_SEMI_MT)) { > >+ (device->model_flags & > >+ (EVDEV_MODEL_JUMPING_SEMI_MT|EVDEV_MODEL_ELANTECH_TOUCHPAD))) { > > tp->num_slots = 1; > > tp->slot = 0; > > tp->has_mt = false; > > _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel