Re: [PATCH v7 3/3] Input: add driver for the Hycon HY46XX touchpanel series

From: Peter Hutterer
Date: Thu Apr 15 2021 - 02:16:49 EST


On Wed, Apr 14, 2021 at 10:26:13AM -0700, Dmitry Torokhov wrote:
> Hi Giulio, Peter,
>
> On Wed, Apr 14, 2021 at 01:22:55PM +0200, Giulio Benetti wrote:
> > Hi Peter, Dmitry,
> >
> > On 4/14/21 8:46 AM, Peter Hutterer wrote:
> > > On Tue, Apr 13, 2021 at 10:44:07PM -0700, Dmitry Torokhov wrote:
> > > > Hi Giulio,
> > > >
> > > > On Tue, Apr 13, 2021 at 04:44:46PM +0200, Giulio Benetti wrote:
> > > > > +
> > > > > + input_mt_report_pointer_emulation(tsdata->input, true);
> > > >
> > > > For touchscreens it does not make much sense to report BTN_DOUBLETAP,
> > > > BTN_TRIPLETAP, etc, events (they are really for touchpads), so I changed
> > > > this to
> > > >
> > > > input_mt_report_pointer_emulation(tsdata->input, false);
> > > >
> > > > to only report ABS_X, ABS_Y, and BTN_TOUCH, and applied.
> > >
> > > Can you expand on this please, just to make sure I'm not misinterpreting
> > > those codes? Those bits are just for how many fingers are down (but without
> > > position), dropping those bits means you restrict the device to a pure
> > > single-touch screen. Or am I missing something here?
>
> They are indeed represent number of fingers on the surface. I think I
> over-simplified this a bit by saying these events are only for
> touchpads, as there is allowance for BTN_TOOL_*TAP in
> Documentation/input/multi-touch-protocol.rst for MT devices that may
> report more contacts than what they can distinctly track, and it is
> not restricted to touchpads (but I believe in reality only used by a
> couple of "semi-MT" touchpad drivers).

fwiw, almost all touchpads on ps2 use that functionality - they can track 2
touchpoints but *detect* up to 5. There's significant insanity in libinput
to deal with that because it is so common :)

semi-mt is orthogonal to that, it's the an inability to track two
touchpoints correctly (only get top-left and bottom-right, but it's
guesswork which finger is in which corner).

> What I meant to say that for ST fallback of MT-capable devices we
> typically provide BTN_TOOL_*TAP for devices declared as INPUT_MT_POINTER
> (which is touchpads) and for INPUT_MT_DIRECT and others we only provide
> ABS_X, ABS_Y, ABS_PRESSURE and BTN_TOUCH (see input_mt_sync_frame()),
> and I think this driver should follow the suit.

ah, right. that makes sense, thanks for the clarification.

Cheers,
Peter