Dumping input-hotplug branches on master

Daniel Stone daniel at fooishbar.org
Sat Oct 21 02:55:56 PDT 2006


Hi,
If there are no objections, once Zepheniah and I have finished tooling
around with a couple of last niggles, and I've ported the other DDXes,
I'd like to drop the input-hotplug branches on master.

Simply put, input currently is a disaster.  Everyone only listens for
core (MotionNotify/{Key,Button}{Press,Release}) events, but in order to
deal with multiple devices, you'd register the other devices as extended
devices, but they would also silently send core events as well.  Eww.

The new master branches of inputproto, libXi and xsetpointer, as well as
the input-hotplug branch of the server, shake things up a bit.  There's
actually quite a few changes in there, so I'll run you through them ...

(I did the initial work for my employer, back in the pre-git days, so by
 the time the legal OK came through after having vetted my contribution
 and X.Org as a project, this had snowballed into a huge branch with
 tons of changes.  Sorry.  git at least fixes this now ...)


Input hotplug
-------------

Right now, this is implemented via D-BUS, which means the security
policy is entirely external to the server, just as it is now with the
configuration file.  Two methods[0] are available right now: add device,
and remove device.  It's a fairly simple API.

DevicePresenceNotify is sent with no device ID when the device list
changes.

Once the DIX work was done, this was actually the easy part.

There's an extremely simple client in /git/users/daniels/respeclaration.
It's really a proof of concept, and someone should really write
something a great deal better.  (Looking at you, desktop types.)


DIX work
--------

In the server, we changed the core devices to explicitly be virtual at
all times: they never[1] originate their own events.  GetPointerEvents
and GetKeyboardValuatorEvents (with its special case, GetKeyboardEvents)
have been added to the DIX.  They generate events for you -- usually one
or more for Xi, and one for core.  You then feed these events to the mi
event queue, which now understands extended events.

In theory, the DDX is still the ultimate arbiter of events, as they are
passed through the DDX, instead of being fed directly to mieq.

mipointer has had some minor API changes in order to specify which
device you're talking about.  Between these two, slotting MPX in should
be fairly non-invasive now.


KDrive work
-----------

KDrive was at least honest about extended input devices, and didn't
bother supporting them at all.

I gave KDrive the concept of proper input drivers, which can have
multiple devices registered, Xi support, and also XKB support (which was
mainly done by Opened Hand).  This is a fairly big overhaul, but it all
definitely works, which is nice.


XFree86 work
------------

This mainly consisted of deleting code needed to support Xi: basically
the event generation code, and the event queue.  DGA input support had
to go as well.  The deprecated keyboard driver is _completely_ gone,
with the OS keyboard interface being removed.


Statistics
----------

daniels at endtroducing:~/x/xorg/xserver/xserver% git diff input-hotplug..master | diffstat | tail -1
 238 files changed, 19982 insertions(+), 18290 deletions(-)


I've been running Xorg from i-h as my daily X server on my laptop (my
primary machine at home, gets used a lot at work too), and it's worked
fine for a couple of months now.  I'm fairly happy with the codebase,
and think it's solid enough to go in now.  However, the changes are
fairly radical, so I think this also needs some soak time, as it were,
before we push it out for 7.3.

So, any furious objections?

Cheers,
Daniel

[0]:
http://gitweb.freedesktop.org/?p=xorg/xserver.git;a=blob;h=53bb3e45db58b15d026a59c31b0848e0f45133b5;hb=ec35e7198debf938f1115f584e675ce5995743e3;f=config/dbus-api
[1]: Blah blah handwave blah.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.x.org/archives/xorg/attachments/20061021/52de30bc/attachment.pgp>


More information about the xorg mailing list