This will allow you:
if you have input devices with different names, to use them with the same Xserver/screen wherever you plug or re-plug them.
if you have input devices with the same names, to use them with the same Xserver/screen according to the USB port where you plug or re-plug them.
the ability to use wild cards such as "*" and "?".
Currently hot-plugging doesn't seems to work properly. I have reports that it works when using the "Dev Name" option, but my primary purpose was to get it working with "Dev Phys" and this does not currently seem to work. "Why "Dev Phys"?" - because if one wants to setup a single system for 4,5 or more users it would be easier to get 4,5 or more pieces of the same keyboard/ mouse then to find the same number keyboards or mice but from different manufacturer or with different names, and i find configuring XFree for such number users is simpler when "Dev Phys" is used.
This section is somewhat abandoned and is not tested under Ruby-2.6 as it didn't work reliably for me.
For this to work you will have to use XFree with the patches for event interface support, developed by Zephaniah Hull. You can find them at the following url: http://people.debian.org/~warp/evdev/.
To build from source you will need the following patches :
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 binaries for Debian include these patches.
For hot-plugging you will also need the /etc/hotplug/input.agent , which you can find under the above address and in Appendix Scripts
Then you have to configure XFree to use the event devices.
The configuration 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 configuration 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 "Dev Phys" "usb-*/input0" Option "AutoRepeat" "250 30" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "dvorak" EndSection
For Dev Name and Dev Phys, the wildcats "?" 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 "*".