[ANNOUNCE] xf86-input-evdev

Peter Hutterer peter.hutterer at who-t.net
Thu Aug 13 23:06:50 PDT 2009

On Fri, Aug 14, 2009 at 08:27:22AM +0300, Maxim Levitsky wrote:
> > > Folks, I have two outstanding questions about this driver.
> > > 
> > > First, I have seen that XI2 input is landed in master (and I enjoy two
> > > mouses now :-)
> > > 
> > > But, there were rumors that this will enable support for 32 bit
> > > keycodes, and it will be transparent, providing an updated Xlib is
> > > installed. 
> > > How far we are from that?
> > 
> > I doubt this will happen. Xlib itself is tightly paired with the core X
> > protocol which has 8 bit keycodes. Making this transparent looks simple
> > (Xlib itself uses ints) but would require numerous hooks within the library
> > to call out into new requests where possible.  The devil's in the detail
> > here.
> Then, I phrase my question differently, when the X will report 32 bit
> keycodes to userspace via *any* interface, so toolkits can be ported?
> (I of course mean that events should originate from evdev)

XI2 for input events, already in master. 
XKB2 for xkb configuration, not in master yet.

> > if you want devices to not be handled by evdev, you need to exclude them
> > explicitly. See https://fedoraproject.org/wiki/Input_device_configuration
> > we also have the xf86-input-joystick driver which is actively maintained and
> > should be used for joystick devices.
> Well, this isn't an answer, I know about that, and this isn't what I
> have asked. I asked about the default, about the fact that X shouldn't
> touch joysticks, if all it can to is to turn them into mouses. However
> if you want to make X primary agent in joystick handling (which I would
> welcome), then major users should be ported to use it, and /dev/js be
> depricated.
> If the older status is to remain, its fine, but then evedev should
> blacklist the joysticks.

the current implementation does the following:
- the user or distro configures which driver to load for which device
- HAL tells the X server which devices are available and based on the
  configuration which driver to load.
- the X server loads the driver module
- driver opens the device given to it.

The X server only has a say in which devices are picked if an xorg.conf is
present and (in some cases) if AutoAddDevices is disabled.
evdev doesn't have a say in which devices are opened at all.

the hal configuration can most likely be found in /usr/share/hal/fdi/policy
(possibly /etc/hal/fdi/) and named 10-x11-input.fdi or similar. I keep
forgetting how that file is called in the different distros.

the capability HAL offers for joysticks is input.joystick which we ignore,
at least in the official fdi file.

there's a chance that your joystick also reports input.mouse or input.keys,
so this may be a reason why it is added.
to address this, it's best if you file a bugreport and attach the evtest
information of your device and the output of lshal. then we can see how to
deal with this.

[out-of-context quote]
> X shouldn't touch joysticks, if all it can to is to turn them into mouses.

X only has the concept of keyboard devices and pointing devices. joysticks
arguably fall into the latter and are thus treated that way. It is possible
though to configure them to not send core events (or detach them in XI2) so
they do not control the core pointer anymore and thus don't interfere.


More information about the xorg mailing list