Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
373 lines (227 sloc) 10.7 KB


1.2.0 (Apr 7, 2019)

  • Add UInput support for the resolution parameter in AbsInfo. This brings support for the new method of uinput device setup, which was introduced in Linux 4.5 (thanks to @LinusCDE).
  • Vendor and product identifiers can be greater or equal to 0x8000 (thanks `@ivaradi`_).

1.1.2 (Sep 1, 2018)

  • Fix installation on kernels <= 4.4.
  • Fix uinput creation ignoring absinfo settings.

1.1.0 (Aug 27, 2018)

  • Add support for handling force-feedback effect uploads (many thanks to @ndreys).
  • Fix typo preventing ff effects that need left coefficients from working.

1.0.0 (Jun 02, 2018)

  • Prevent Uinput device creation raising Objects/longobject.c:415: bad argument to internal function when a non-complete AbsInfo structure is passed. All missing AbsInfo fields are set to 0.
  • Fix Uinput device creation raising KeyError when a capability filtered by default is not present.
  • The InputDevice.fn attribute was deprecated in favor of InputDevice.path. Using the former will show a DeprecationWarning, but would otherwise continue working as before.
  • Fix InputDevice comparison raising AttributeError due to a non-existant path attribute.
  • Fix asyncio support in Python 3.5+.
  • Uploading FF effect now works both on Python 2.7 and Python 3+.
  • Remove the asyncore example from the tutorial.

0.8.1 (Mar 24, 2018)

  • Fix Python 2 compatibility issue in with Uinput.from_device.
  • Fix minor evdev.evtest formatting issue.

0.8.0 (Mar 22, 2018)

  • Fix InputDevice comparison on Python 2.

  • The device path is now considered when comparing two devices.

  • Fix UInput.from_device not correctly merging the capabilities of selected devices.

  • The list of excluded event types in UInput.from_device is now configurable. For example:

    UInput.from_device(dev, filtered_types=(EV_SYN, EV_FF))

    In addition, ecodes.EV_FF is now excluded by default.

  • Add a context manager for grabbing access to a device - InputDevice.grab_context. For example:

    with dev.grab_context():
  • Add the InputDevice.uniq attribute, which contains the unique identifier of the device. As with phys, this attribute may be empty (i.e. '').

0.7.0 (Jun 16, 2017)

  • InputDevice now accepts objects that support the path protocol. For example:

    pth = pathlib.Path('/dev/input/event0')
    dev = evdev.InputDevice(pth)
  • Support path protocol in InputDevice. This means that InputDevice instances can be passed to callers that expect a os.PathLike object.

  • Exceptions raised during InputDevice.async_read() (and similar) are now handled properly (i.e. an exception is set on the returned future instead of leaking that exception into the event loop) (Fixes `#67`_).

0.6.4 (Oct 07, 2016)

  • Exclude ecodes.c from source distribution (Fixes `#63`_).

0.6.3 (Oct 06, 2016)

  • Add the UInput.from_device class method, which allows uinput device to be created with the capabiltiies of one or more existing input devices:

    ui = UInput.from_device('/dev/input1', '/dev/input2', **constructor_kwargs)
  • Add the build_ecodes distutils command, which generates the ecodes.c extension module. The new way of overwriting the evdev header locations is:

    python build \
      build_ecodes --evdev-headers path/input.h:path/input-event-codes.h \
      build_ext --include-dirs  path/ \

    The build* and install commands no longer have to be part of the same command-line (i.e. running install will reuse the outputs of the last build).

0.6.1 (Jun 04, 2016)

  • Disable tty echoing while evtest is running.

  • Allow evtest to listen to more than one devices.

  • The script now allows the location of the input header files to be overwritten. For example:

    python build_ext \
      --evdev-headers path/input.h:path/input-event-codes.h \
      --include-dirs  path/ \

0.6.0 (Feb 14, 2016)

0.5.0 (Jun 16, 2015)

  • Write access to the input device is no longer mandatory. Evdev will first try to open the device for reading and writing and fallback to read-only. Methods that require write access (e.g. :func:`set_led()`) will raise :class:`EvdevError` if the device is open only for reading.

0.4.7 (Oct 07, 2014)

  • Fallback to distutils if setuptools is not available.

0.4.6 (Oct 07, 2014)

  • Rework documentation and docstrings once more.
  • Fix install on Python 3.4 (works around issue21121).
  • Fix :func:`ioctl()` requested buffer size (thanks Jakub Wojciech Klama).

0.4.5 (Jul 06, 2014)

0.4.4 (Jun 04, 2014)

0.4.3 (Dec 19, 2013)

0.4.2 (Dec 13, 2013)

0.4.1 (Jul 24, 2013)

0.4.0 (Jul 01, 2013)

0.3.3 (May 29, 2013)

0.3.2 (Apr 05, 2013)

0.3.1 (Nov 23, 2012)

  • :func:`` will return an empty tuple if the device has nothing to offer (instead of segfaulting).
  • Exclude unnecessary package data in sdist and bdist.

0.3.0 (Nov 06, 2012)

0.2.0 (Aug 22, 2012)

0.1.1 (May 18, 2012)

  • Add events.keys, which is a combination of all BTN_ and KEY_ event codes.
  • ecodes.c was not generated when installing through pip.

0.1.0 (May 17, 2012)

Initial Release

You can’t perform that action at this time.