Re: v4.1 to v4.7: regression in tsc2005 driver

From: Peter Hutterer
Date: Wed Jul 20 2016 - 17:47:48 EST


On Wed, Jul 20, 2016 at 09:23:56AM -0700, Dmitry Torokhov wrote:
> On Wed, Jul 20, 2016 at 08:25:58AM +0200, Pavel Machek wrote:
> > Hi!
> >
> > > > > > > > > drivers/input/touchscreen/tsc2005.c: input_dev->name = "TSC2005
> > > > > > > > > touchscreen";
> > > > > > > > >
> > > > > > > > > to "TSC200X touchscreen". Unfortunately, X seems to propagate that
> > > > > > > > > name to userspace, where it is needed to be able to do
> > >
> > > Technically X _is_ userspace.
> >
> > There's "userspace running as root" and "userspace userspace" :-).
>
> I do not really see any difference form the kernel POW.
>
> >
> > > > > > > > >
> > > > > > > > > xinput --set-prop --type=int ...
> > > > > > > > >
> > > > > > > > > with the right arguments to calibrate touchscreen. (Touchscreen is
> > > > > > > > > unusable without calibration).
> > > > > > > > >
> > > > > > > > > What to do with that?
> > >
> > > Hmm, I do not think we ever committed for the device names to be stable.
> > > You are supposed to locate touchscreen device based on its properties
> > > and you might need some heuristic if you encounter a system with more
> > > than one such touchscreen.
> >
> > Well, you are commited now, like it or not, X people did it for you
> > :-(.
> >
> > Because there's no other reasonable way to use xinput --set-prop...
>
> Well, X is going to have to fix it. How am I supposed to control my
> devices in multi-seat environment if I use the same hardware (or if I
> have device with multiple touchscreens)? They all will have the same
> name (well, all mice, then all keyboards, etc). Let's add Peter to the
> fold...
>
> In the mean time you can adjust the name or use XID instead.

X has partially fixed this a few years ago. All input drivers (that
matter) export a Device Node property that sets the device node for each
device.

$ xinput list-props "SynPS/2 Synaptics TouchPad" | grep "Device Node"
Device Node (261): "/dev/input/event4"

Based on that you can get the udev device and work your way into any of the
sysfs tree. Or do whatever else you want.

But other than that there isn't anything in X to fix. xinput is primarily a
debugging tool and it does name resolution for convenience. But it's not a
tool for complex configurations. It does exactly what it needs to do, if you
need something that's more complicated and relies on information not
available to the X device itself then you'll need to write a custom tool
that does what you need. sorry.

Cheers,
Peter