XInput extension, xf86XInput, evdev and a spaceball
Steffen Seeger
seeger at physik.tu-chemnitz.de
Mon Aug 31 07:53:51 PDT 2009
Hi again,
On Sunday 30 August 2009 18:08:08 Daniel Stone wrote:
> Which versions of everything are you using? xserver + xf86-input-evdev
> from git master (which is destined to become 1.7 in Septemberish) should
> work fine over XInput2. If not, please file a bug and we (by which I
> really mean Peter) will get fixed.
FC11 comes with server 1.6 and evdev 2.2 (minors are in the patch provided).
I have tried also FC12 alpha, which comes with xorg-server-1.6.99 and
xorg-drv-evdev-2.2.99.
> On Sunday 30 August 2009 18:08:08 Daniel Stone wrote:
> > > This moves the core pointer, the core pointer sprite and possibly focus
> > > to the center of the screen each time the spaceball is touched.
> > > Also, the spaceball is not reported as a XI_SPACEBALL type device
> > > as applications might expect. I got around this problem with some
> > > minor if's and else's in the evdev driver, mainly stripping
> > > XI86_POINTER_CAPABLE from pInfo->flags.
> > > With those modifications in the evdev driver, the core pointer doesn't
> > > move any longer, but the events still get posted as core pointer motion
> > > events (it just decouples motion of the pointer sprite from
> > > valuator position).
> >
> > Does this go away if you go through the list of input devices (note:
> > requires XI2) and grab the slave device? When you do that, at least in
> > current master, the Spaceball will get detached from the core pointer
> > and stop moving it.
>
> for a device like that it is better to permanently float it. xinput --float
> "my device name" does the trick. Once the device is floated, it can only be
> accessed by XI applications and it won't control the pointer.
> caveat: there's no configuration option, you have to do it at runtime.
>
> this is essentially the trick you need, once the device is floated it should
> be accessible and not moving the core pointer. if the axes don't get
> reported properly then that's a definitive bug.
Both plain FC11 and plain FC12 have essentially the same behaviour:
device is listed via "xinput --list", but moves the core pointer with its
x and y axes. Grabbing the device makes no difference in behaviour.
On FC12, floating the device behaves more closely to what
one would expect, but strange valuator values get reported.
It seems as if the server gets incremental updates (e.g. some events
like 'axis 3 and 5 have new values') and reports only changed valuators
correctly and others as 0x8000000. Investigating this with repeated
"xinput query-state" and "kcmshell4 joystick" running in parallel
crashed the server for some unknown (but probably related) reason.
I was not able to reproduce this, but have not tried very hard either.
So thanks to everybody who responded, I suggest I will wait until FC12
is fully released and then investigate further and file a full bug report.
All the best,
Steffen
More information about the xorg-devel
mailing list