evdev

{{Short description|Linux kernel interface for input events}}

{{lowercase title|evdev}}

{{Distinguish|Systemd#eudev{{!}}eudev}}

File:Linux API.svg.]]

evdev (short for 'event device') is a generic input event interface in the Linux kernel and FreeBSD.[https://www.kernel.org/doc/Documentation/input/input.txt "Linux Input drivers v1.0"] It generalizes raw input events from device drivers and makes them available through character devices in the /dev/input/ directory.

The user-space library for the kernel component evdev is called libevdev. Libevdev abstracts the evdev ioctls through type-safe interfaces and provides functions to change the appearance of the device. Libevdev shares similarities with the read system call.{{cite web |url=https://www.freedesktop.org/wiki/Software/libevdev/ |title=freedesktop.org/../libevdev}}

It sits below the process that handles input events, in between the kernel and that process.

: kernel → libevdev → xf86-input-evdev → X server → X client

For Weston/Wayland compositor, the stack would look like this:

: kernel → libevdev → libinputWayland compositor → Wayland client

Since version 1.16 the xorg-xserver obtained support for libinput:

: kernel → libevdev → libinput → xf86-input-libinput → X server → X client

evdev is primarily used by display servers like X.org (via xf86-input-evdev driver and libevdev) and Weston, as well as by games and console emulators making use of USB and Bluetooth controllers.

See also

{{Portal|Linux}}

{{Commons category}}

References

{{reflist}}