NOTE: These patches have CHANGED. You can not just grab the new patches. Ok, the code has a few hacks, but it all seems to work. For 2.5.x everything should just work once you put it together, hotplugging included. For 2.4.x things are a little more interesting, there are no hotplug events for input devices, we can't get the phys (and thus it must be unspecified in the config), and some of the keyboard ioctls don't exist. There are three files of interest here: input.agent: You need to put this in /etc/hotplug/, if you already have an /etc/hotplug/input.agent then you hopefully know enough to make it work. 029_lnx_evdev.diff: The evdev core patch. 030_lnx_evdev_mouse.diff: The mouse side of the patch. 031_lnx_evdev_keyboard.diff: The keyboard side of the patch. The config section for a mouse should look something like this: Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "evdev" Option "Dev Name" "A4Tech USB Optical Mouse" Option "Dev Phys" "usb-*/input0" Option "Buttons" "9" Option "ZAxisMapping" "6 7 8 9" EndSection The config section for a keyboard should look something like this: Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "Protocol" "evdev" Option "Dev Name" "SILITEK USB Keyboard" Option "AutoRepeat" "250 30" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "dvorak" EndSection For Dev Name and Dev Phys the wildcards ? and * work, you MUST have at least one of the two, if you have both then the device must match on both, a non-existent entry is the same as one consisting of "*". I would appreciate comments on the design and code as well.