evemu records and replays device descriptions and events, making it possible to emulate input devices through the kernel's input system. Emulated devices are for most practical purposes indistinguishable from real devices.
Note: evemu cannot record events while another process has an EVIOCGRAB on the device. This is the case for the X.Org synaptics and wacom drivers, you must disable the devices or VT-switch away before running evemu-record to see events.
Check your distribution's package list for the evemu package. If it is not present, you can get the source from
$> git clone git://git.freedesktop.org/git/evemu $> cd evemu $> ./autogen --prefix=/usr $> make && sudo make install
evemu provides multiple binaries for recording and replaying devices:
evemu-describe /dev/input/event0 > mydevice.desc
Prints a description of the device specified into mydevice.desc.
evemu-record /dev/input/event0 > mydevice.events
Prints the list of events from the device into mydevice.events until terminated by Ctrl + C
Creates a virtual input device based on the description created by evemu-describe and prints the device node.
evemu-play /dev/input/event12 < mydevice.events
Sends the events in mydevice.events through the given device node, thus replaying them. mydevice.events must be generated by evemu-record
evemu-record cannot see events while another process has an EVIOCGRAB on the device. This is the case for the X.Org synaptics and wacom drivers, you must disable the devices or VT-switch away before running evtest to see events. Devices can be disabled with
xinput set-prop "my device name" "Device Enabled" 0
If you need the device enabled to verify that the bug is indeed triggered, use the following xorg.conf.d snippet:
$> cat /etc/X11/xorg.conf.d/99-synaptics-dontgrab.conf Section "InputClass" Identifier "Don't grab synaptics" MatchDriver "synaptics" Option "GrabEventDevice" "off" EndSection
Once saved, restart your server and evemu can now record while the synaptics is running.
Submitting useful evemu recordings
- Find out the right device file by checking /proc/bus/input/devices. The HANDLERS line tells you which event device to record. e.g. H: Handlers=kbd event2 means you need to record /dev/input/event2.
- Pipe the evemu-describe and evemu-record information into a file.
- Verify that both files contain data, a 0-byte file usually indicates the device is grabbed.
- When reproducing the event sequence that triggered the bug, try to reproduce only the event sequence that triggered the bug, no unrelated events. Keep in mind that event sequences are are raw device data. If specific pointer positioning on the target host is required, this must be noted separately in the bug report.
- Attach both files separately, do not zip them as a tarball https://wiki.ubuntu.com/Multitouch/Testing/Evemu has further information and instructions on how to use evemu.
File a bug in the freedesktop bugzilla at https://bugs.freedesktop.org/enter_bug.cgi?product=evemu