Re: [RFC/PATCH] Touchpads in absolute mode (synaptics) and mousedev

Dmitry Torokhov
2003-07-02T00:42:23Z

On Tuesday 01 July 2003 06:43 pm, Neil Brown wrote:
> On Tuesday July 1, dtor_core@ameritech.net wrote:
> > Apologies if you seen this already but it seems the list ate my previous
> > replies...
> >
> > On Tuesday 01 July 2003 04:40 am, Neil Brown wrote:
> > > On Tuesday July 1, dtor_core@ameritech.net wrote:
> >
> > ... skip ...
> >
> > > > 1. Modify mousedev so if an input device announces that it generates
> > > > both relative and absolute events mousedev will discard all absolute
> > > > axis events and will rely on device supplied relative events.
> > >
> > > Nah. I have an ALPS dualpoint which generates ABSolute events for the
> > > touchpad part and RElative events for the pointstick part. I want
> > > them both.
> >
> > So pass relative events as is and do conversion of absolute to relatives.
> > That's what I gonna do about my track stick as well.
> >
> > Remember that mousedev provides _emulation_ of [Ex]PS/2 mouse protocol
> > for almost any device, it does not do any advanced tricks it's here to
> > use with old software that does not have advanced drivers yet, you are
> > not "loosing" your absolute mode packets, you hav /dev/input/eventX to
> > access them.
>
> If I do that, then on the eventX device I will see both 'real'
> relative events and 'synthesised' (from absoule) relative events and I
> won't be able to tell the difference.
>

I see there are 2 possible solutions. If I understand what Vojtech wrote
regarding synaptics driver the track stick (or other pass-through device)
is best implemented as a separate serio. So you could have your touchpad
in absolute mode and stick as a separate device in native relative.

Other way is to check (in your userspace driver) whether your motion
packets contains absolute packets and if they are present discard any
relative events in this batch.

Hmmm... what if we introduce something like sythrelbit[NBITS(REL__MAX)]
for passing synthesized relative events and have mousedev use values in
following order of precedence:
- absbit - lowest priority
- synthrelbit
- relbit - highest.

What you think?
> > > > 2. Add absolute->relative conversion code to touchpad drivers
> > > > themselves as drivers should know the best how to do that. If they
> > > > turn out to be similar across different touchpads then the common
> > > > module could be made.
> > > >
> > > > What you think?
> > >
> > > I think that mousedev should be just clever enough to mostly work and
> > > no cleverer. Anything more interesting should be done in user-space.
> >
> > Right, and if device says that it can generate relative packets mousedev
> > should not get in its way and do its own absolute->relative conversion.
>
> A device should present raw events. Whatever the user says to the
> device should come out eventX uninterpreted.
> mousedev should interpret what it can and present this out
> /dev/psaux. As it can do limited interpretation of ABS events, it
> should.
>

The thing is that the result is not useable with touchpads right now.
It just does not work :(

> This seems different to your perspective, but seeing there is not
> standard or other document that we can make reference too, it is not
> clear that anyone can decide who is *right*.....
>
> NeilBrown

Dmitry