Re: [PATCH 2.6] input: do not suppress 0 value relative events

From: Vojtech Pavlik
Date: Sat Oct 04 2003 - 03:02:55 EST


On Sat, Oct 04, 2003 at 02:48:27AM -0500, Dmitry Torokhov wrote:
> On Saturday 04 October 2003 02:36 am, Vojtech Pavlik wrote:
> > On Sat, Oct 04, 2003 at 02:22:57AM -0500, Dmitry Torokhov wrote:
> > > Input: input susbsystem should not drop 0 value relative events,
> > > otherwise unsuspecting programs will loose transitions from
> > > non-zero to 0 deltas. We should not require userland authors
> > > to consult with kernel implementation details all the time,
> > > but follow the principle of least surprise and report
> > > everything.
> >
> > Certain devices will then generate an endless stream of zero-movement
> > relative events, which is not good.
> >
> > Because 'relative' means that there is no movement when there is no
> > event, where exactly lies the problem? What application has a problem
> > with this? Many mice don't ever report zero values, so that application
> > will probably not work even without the (value==0) check ...
>
> But the problem is not only repetitive zeros are not reported but also that
> transition from non-zero to zero delta is not reported either.
>
> OK, since you telling me there are devices which never stop generating
> events we could go the way absolute events done and suppress repeated data.
> Should I try that?
>
> As far as application goes it was my modified version of GPM - pretty much
> every other event is not repeated unless changed so I did not reset the
> internal state and expected get an event telling me the last delta. I am
> OK with data not being repeated but I want to get event for transition
> to 0.

That works for ABSOLUTE events. They're not repeated, and you always
get the value when it changes.

RELATIVE events are very different - if you don't get an event, there
is no movement. If you get one, even repeated, that means there was some
movement and you must process every single (even repeated) event, since
that's what gives the total movement.

Not "repeating" relative data doesn't work, since there is nothing like
"current" value of a relative valuator - if there is any, then it's the
sum of all previous events. Try thinking of relative as of an first
derivative of absolute - and see why you can never get a zero relative
event.

You're trying to treat relative as absolute - why?

--
Vojtech Pavlik
SuSE Labs, SuSE CR
-
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/