This page describes libevdev's behavior when the build-time kernel and the run-time kernel differ in their feature set.
With the exception of event names, libevdev defines features that may be missing on older kernels and building on such kernels will not disable features. Running libevdev on a kernel that is missing some feature will change libevdev's behavior. In most cases, the new behavior should be obvious, but it is spelled out below in detail.
Minimum requirements
libevdev requires a 2.6.36 kernel as minimum. Specifically, it requires kernel-support for ABS_MT_SLOT
.
Event and input property names
Event names and input property names are defined at build-time by the linux/input.h shipped with libevdev. The list of event names is compiled at build-time, any events not defined at build time will not resolve. Specifically, libevdev_event_code_get_name() for an undefined type or code will always return NULL
. Likewise, libevdev_property_get_name() will return NULL for properties undefined at build-time.
Input properties
If the kernel does not support input properties, specifically the EVIOCGPROPS
ioctl, libevdev does not expose input properties to the caller. Specifically, libevdev_has_property() will always return 0 unless the property has been manually set with libevdev_enable_property().
This also applies to the libevdev-uinput code. If uinput does not honor UI_SET_PROPBIT
, libevdev will continue without setting the properties on the device.
MT slot behavior
If the kernel does not support the EVIOCGMTSLOTS
ioctl, libevdev assumes all values in all slots are 0 and continues without an error.
SYN_DROPPED behavior
A kernel without SYN_DROPPED
won't send such an event. libevdev_next_event() will never require the switch to sync mode.