[Xorg] XInput Hotplug Additions

Kristian Høgsberg krh at bitplanet.net
Mon Aug 2 17:10:36 PDT 2004


I've been doing some work on the XInput hotplug functionality that was 
discussed on this list some weeks ago.  I have put a patch in bugzilla, 
http://freedesktop.org/bugzilla/show_bug.cgi?id=971.  At this point, 
I've added two requests to XInput:

	extern int      XAddInputDevice(
	    Display*            /* display */,
	    _Xconst char*       /* name */,
	    _Xconst char*       /* driver */,
	    XDeviceOption*      /* options */,
	    int                 /* nOptions */

	extern int      XRemoveInputDevice(
	    Display*            /* display */,
	    _Xconst char*       /* name */


	typedef struct {
	    char *name;
	    char *value;
	} XDeviceOption;

The idea is that the arguments given to XAddInputDevice() corresponds to 
the options you can give in an xorg.conf InputDevice section, e.g.

	Section "InputDevice"
	        Identifier  "Mouse0"
	        Driver      "mouse"
	        Option      "Protocol" "IMPS/2"
	        Option      "Device" "/dev/input/mice"
	        Option      "ZAxisMapping" "4 5"

could be configured at runtime from an X client as

	XDeviceOption options[] = {
	  { "Protocol", "IMPS/2" },
	  { "Device", "/dev/input/mice" },
	  { "ZAxisMapping", "4 5" },

	XAddInputDevice(dpy, "Mouse0", "mouse", options, 3);

Which will load the "mouse" driver if it's not already present, and add 
the device "Mouse0".

When a new device is added, a DevicePresenceNotify event is sent to 
interested clients.  The event does not contain any information about 
the change, clients should use XListInputDevices() to find out what 
devices are available.

I've also attached a tar-file with a few sample applications: xadddev 
and xrmdev are commandline utils to add and remove input devices, 
get-event demonstrates how to select the DevicePresenceNotify event and 
finally, input-daemon, which is a simple example of how a daemon could 
listen for system hotplug events using HAL and add and remove input 
devices accordingly.

I think it would be cool if we could have this or similar functionality 
in the next release again (i.e. not the one scheduled for August).  At 
the  moment I guess people are busy with the upcoming release, but I 
would greatly appreciate comments and feedback on this stuff.


More information about the xorg mailing list