# Evdev

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Evdev
> Markdown URL: https://mediated.wiki/source/Evdev.md
> Source: https://en.wikipedia.org/wiki/Evdev
> Source revision: 1321024523
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{Short description|Linux kernel interface for input events}}
{{lowercase title|evdev}}
{{Distinguish|Systemd#eudev{{!}}eudev}}
[[File:Linux API.svg|thumb|Evdev and libevdev form a prominent part of the [Linux API](/source/Linux_API).]]

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

The user-space library for the kernel component evdev is called libevdev. Libevdev abstracts the evdev [ioctl](/source/ioctl)s through type-safe interfaces and provides functions to change the appearance of the device. Libevdev shares similarities with the [read](/source/read_(system_call)) system call.<ref>{{cite web |url=https://www.freedesktop.org/wiki/Software/libevdev/ |title=freedesktop.org/../libevdev}}</ref>

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](/source/Wayland_(display_server_protocol)) compositor, the stack would look like this:

: kernel → libevdev → [libinput](/source/libinput) → [Wayland compositor](/source/Wayland_(display_server_protocol)) → Wayland client

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

: kernel → libevdev → [libinput](/source/libinput) → xf86-input-libinput → X server → X client

evdev is primarily used by [display server](/source/display_server)s like [X.org](/source/X.Org_Server) (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)
* [https://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]
* [https://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}}

---
Adapted from the Wikipedia article [Evdev](https://en.wikipedia.org/wiki/Evdev) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Evdev?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
