Too many input devices
On a modern computer there are often many input devices,
$ ls /dev/input/event* | wc -l 28
They are just identified by numbers, so it can be difficult to choose the
right one and trial-and-error can get tiresome with so many. There is some
help from the
$ ls -go --time-style=+ /dev/input/by-id/ ... lrwxrwxrwx 1 10 usb-045e_0291-if06-event-joystick -> ../event26 lrwxrwxrwx 1 6 usb-045e_0291-if06-joystick -> ../js6 lrwxrwxrwx 1 10 usb-0b43_0003-event-if00 -> ../event20 lrwxrwxrwx 1 10 usb-0b43_0003-event-joystick -> ../event19 lrwxrwxrwx 1 6 usb-0b43_0003-joystick -> ../js1 lrwxrwxrwx 1 9 usb-BTC_USB_Multimedia_Keyboard-event-if01 -> ../event2 lrwxrwxrwx 1 9 usb-BTC_USB_Multimedia_Keyboard-event-kbd -> ../event1 ... $ ls -go --time-style=+ /dev/input/by-path/ ... lrwxrwxrwx 1 9 pci-0000:00:1a.2-usb-0:2:1.0-event-kbd -> ../event1 lrwxrwxrwx 1 9 pci-0000:00:1a.2-usb-0:2:1.1-event -> ../event2 ... lrwxrwxrwx 1 10 pci-0000:00:1d.0-usb-0:1:1.6-event-joystick -> ../event26 lrwxrwxrwx 1 6 pci-0000:00:1d.0-usb-0:1:1.6-joystick -> ../js6 lrwxrwxrwx 1 10 pci-0000:00:1d.0-usb-0:2:1.0-event -> ../event20 lrwxrwxrwx 1 10 pci-0000:00:1d.0-usb-0:2:1.0-event-joystick -> ../event19 ...
But, for the most part, those names aren't very helpful, especially since many joystick devices support 2 or 4 joysticks connected to the same device.
$ identify_evdev.py /dev/input/event22
/dev/input/event22 is the device of the joystick I touched after
The script waits until it detects input from any joystick and
outputs the device name of that joystick. It attaches to every
/dev/input/event* device it has permissions to using Python's
evdev library and waits for input on any of them using
Shell script example
This is designed for use inside a shell script:
echo -n "Press a button on the controller... " evdev="$($(dirname "$0")/identify_evdev.py)" echo using device "$evdev".
For use inside a Python program, use the
from identify_evdev import list_active_evdev filenames = None while filenames is None or len(filenames) != 1: print("Press any button on only the joystick to be identified.") filenames = list_active_evdev() evdev_filename = fns print("Selected event device: %s" % evdev_filename)
Have something to add? Post a comment by sending an email to firstname.lastname@example.org. You may use Markdown for formatting.
There are no comments yet.