evdev
{{Short description|Linux kernel interface for input events}}
{{lowercase title|evdev}}
{{Distinguish|Systemd#eudev{{!}}eudev}}
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 → libinput → Wayland 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}}
External links
- [https://www.kernel.org/doc/Documentation/input/input.txt "Linux Input drivers v1.0"] by Vojtech Pavlik, 2001 (Linux kernel document, now somewhat dated)
- [http://www.freedesktop.org/wiki/Software/libevdev/ libevdev, a C library for evdev interface]
- [https://pythonhosted.org/evdev/ Python bindings for evdev interface]
- [https://godoc.org/github.com/gvalkov/golang-evdev Go bindings for evdev interface]
- [http://joeshaw.org/2010/10/01/681 "linux input ecosystem"] by Joe Shaw, 1 October 2010 (blog post)
{{Linux kernel}}
Category:Interfaces of the Linux kernel
Category:Linux kernel features
{{Linux-stub}}