evdev - Generic Linux input driver
Section "InputDevice"
Identifier "devname"
Driver "evdev"
Option "Device" "devpath"
Option "Emulate3Buttons" "True"
Option "Emulate3Timeout" "50"
Option "GrabDevice" "False"
...
EndSection
evdev is an Xorg input driver for Linux´s generic
event devices. It therefore supports all input devices that the kernel knows
about, including most mice, keyboards, tablets and touchscreens.
evdev is the default driver on the major Linux distributions.
The evdev driver can serve as both a pointer and a keyboard
input device. Multiple input devices are supported by multiple instances of
this driver, with one InputDevice section of your xorg.conf for each input
device that will use this driver.
It is recommended that evdev devices are configured through
the InputClass directive (refer to xorg.conf(5)) instead of manual
per-device configuration. Devices configured in the xorg.conf(5) are not
hot-plug capable.
In general, any input device that the kernel has a driver for can
be accessed through the evdev driver. See the Linux kernel
documentation for a complete list.
Please refer to xorg.conf(5) for general configuration details and
for options that can be used with all input drivers. This section only
covers configuration details specific to this driver.
The following driver Options are supported:
- Option
"ButtonMapping" "string"
- Sets the button mapping for this device. The mapping is a space-separated
list of button mappings that correspond in order to the physical buttons
on the device (i.e. the first number is the mapping for button 1, etc.).
The default mapping is "1 2 3 ... 32". A mapping of 0
deactivates the button. Multiple buttons can have the same mapping. For
example, a left-handed mouse with deactivated scroll-wheel would use a
mapping of "3 2 1 0 0". Invalid mappings are ignored and the
default mapping is used. Buttons not specified in the user's mapping use
the default mapping.
- Option
"Device" "string"
- Specifies the device through which the device can be accessed. This will
generally be of the form "/dev/input/eventX", where X is some
integer. The mapping from device node to hardware is system-dependent.
Property: "Device Node" (read-only).
- Option
"DragLockButtons" "L1 B2 L3
B4"
- Sets "drag lock buttons" that simulate holding a button down, so
that low dexterity people do not have to hold a button down at the same
time they move a mouse cursor. Button numbers occur in pairs, with the
lock button number occurring first, followed by the button number that is
the target of the lock button. Property: "Evdev Drag Lock
Buttons".
- Option
"DragLockButtons" "M1"
- Sets a "master drag lock button" that acts as a "Meta
Key" indicating that the next button pressed is to be "drag
locked". Property: "Evdev Drag Lock Buttons".
- Option
"Emulate3Buttons" "boolean"
- Enable/disable the emulation of the third (middle) mouse button for mice
which only have two physical buttons. The third button is emulated by
pressing both buttons simultaneously. Default: off. Property: "Evdev
Middle Button Emulation".
- Option
"Emulate3Timeout" "integer"
- Sets the timeout (in milliseconds) that the driver waits before deciding
if two buttons where pressed "simultaneously" when 3 button
emulation is enabled. Default: 50. Property: "Evdev Middle Button
Timeout".
- Option
"Emulate3Button" "integer"
- Specifies the physical button number to be emitted if middle button
emulation is triggered. Default: 2. Property: "Evdev Middle Button
Button".
- Option
"EmulateWheel" "boolean"
- Enable/disable "wheel" emulation. Wheel emulation means
emulating button press/release events when the mouse is moved while a
specific real button is pressed. Wheel button events (typically buttons 4
and 5) are usually used for scrolling. Wheel emulation is useful for
getting wheel-like behaviour with trackballs. It can also be useful for
mice with 4 or more buttons but no wheel. See the description of the
EmulateWheelButton, EmulateWheelInertia,
EmulateWheelTimeout, XAxisMapping, and YAxisMapping
options. Default: off. Property "Evdev Wheel Emulation".
- Option
"EmulateWheelButton"
"integer"
- Specifies which button must be held down to enable wheel emulation mode.
While this button is down, X and/or Y pointer movement will generate
button press/release events as specified for the XAxisMapping and
YAxisMapping settings. If the button is 0 and EmulateWheel
is on, any motion of the device is converted into wheel events. Default:
4. Property: "Evdev Wheel Emulation Button".
- Option
"EmulateWheelInertia"
"integer"
- Specifies how far (in pixels) the pointer must move to generate button
press/release events in wheel emulation mode. Default: 10. Property:
"Evdev Wheel Emulation Inertia".
- This value must be set for any device does not resemble a standard mouse.
Specifically, on absolute devices such as tablets the value should be set
to a reasonable fraction of the expected movement to avoid excess scroll
events.
- WARNING: the name "inertia" is a misnomer. This option
defines the distance required to generate one scroll event similar to the
VertScrollDelta and HorizScrollDelta options. It does not
enable inertia in the physical sense, scrolling stops immediately once the
movement has stopped.
- Option
"EmulateWheelTimeout"
"integer"
- Specifies the time in milliseconds the EmulateWheelButton must be
pressed before wheel emulation is started. If the
EmulateWheelButton is released before this timeout, the original
button press/release event is sent. Default: 200. Property: "Evdev
Wheel Emulation Timeout".
- Option
"EmulateThirdButton"
"boolean"
- Enable third button emulation. Third button emulation emits a right button
event (by default) by pressing and holding the first button. The first
button must be held down for the configured timeout and must not move more
than the configured threshold for the emulation to activate. Otherwise,
the first button event is posted as normal. Default: off. Property:
"Evdev Third Button Emulation".
- Option
"EmulateThirdButtonTimeout"
"integer"
- Specifies the timeout in milliseconds between the initial button press and
the generation of the emulated button event. Default: 1000. Property:
"Evdev Third Button Emulation Timeout".
- Option
"EmulateThirdButtonButton"
"integer"
- Specifies the physical button number to be emitted if third button
emulation is triggered. Default: 3. Property: "Evdev Third Button
Button".
- Option
"EmulateThirdButtonMoveThreshold"
"integer"
- Specifies the maximum move fuzz in device coordinates for third button
emulation. If the device moves by more than this threshold before the
third button emulation is triggered, the emulation is cancelled and a
first button event is generated as normal. Default: 20. Property:
"Evdev Third Button Emulation Threshold".
- Option
"GrabDevice" "boolean"
- Force a grab on the event device. Doing so will ensure that no other
driver can initialise the same device and it will also stop the device
from sending events to /dev/kbd or /dev/input/mice. Events from this
device will not be sent to virtual devices (e.g. rfkill or the Macintosh
mouse button emulation). Default: disabled.
- Option
"InvertX" "Bool"
- Option
"InvertY" "Bool"
- Invert the given axis. Default: off. Property: "Evdev Axis
Inversion".
- Option
"IgnoreRelativeAxes" "Bool"
- Option
"IgnoreAbsoluteAxes" "Bool"
- Ignore the specified type of axis. Default: unset. The X server cannot
deal with devices that have both relative and absolute axes. Evdev tries
to guess wich axes to ignore given the device type and disables absolute
axes for mice and relative axes for tablets, touchscreens and touchpad.
These options allow to forcibly disable an axis type. Mouse wheel axes are
exempt and will work even if relative axes are ignored. No property, this
configuration must be set in the configuration.
If either option is set to False, the driver will not ignore the specified
axes regardless of the presence of other axes. This may trigger buggy
behavior and events from this axis are always forwarded. Users are
discouraged from setting this option.
- Option
"Calibration" "min-x max-x min-y
max-y"
- Calibrates the X and Y axes for devices that need to scale to a different
coordinate system than reported to the X server. This feature is required
for devices that need to scale to a different coordinate system than
originally reported by the kernel (e.g. touchscreens). The scaling to the
custom coordinate system is done in-driver and the X server is unaware of
the transformation. Property: "Evdev Axis Calibration".
- Option
"Mode" "Relative"|"Absolute"
- Sets the mode of the device if device has absolute axes. The default value
for touchpads is relative, for other absolute. This option has no effect
on devices without absolute axes.
- Option
"SwapAxes" "Bool"
- Swap x/y axes. Default: off. Property: "Evdev Axes Swap".
- Option
"XAxisMapping" "N1 N2"
- Specifies which buttons are mapped to motion in the X direction in wheel
emulation mode. Button number N1 is mapped to the negative X axis
motion and button number N2 is mapped to the positive X axis
motion. Default: no mapping. Property: "Evdev Wheel Emulation
Axes".
- Option
"YAxisMapping" "N1 N2"
- Specifies which buttons are mapped to motion in the Y direction in wheel
emulation mode. Button number N1 is mapped to the negative Y axis
motion and button number N2 is mapped to the positive Y axis
motion. Default: "4 5". Property: "Evdev Wheel Emulation
Axes".
- Option
"TypeName" "type""
- Specify the X Input 1.x type (see XListInputDevices(3)). There is rarely a
need to use this option, evdev will guess the device type based on the
device's capabilities. This option is provided for devices that need
quirks.
- Option
"VertScrollDelta" "integer"
- The amount of motion considered one unit of scrolling vertically. Default:
"1". Property: "Evdev Scrolling Distance".
- Option
"HorizScrollDelta" "integer"
- The amount of motion considered one unit of scrolling horizontally.
Default: "1". Property: "Evdev Scrolling
Distance".
- Option
"DialDelta" "integer"
- The amount of motion considered one unit of turning the dial. Default:
"1". Property: "Evdev Scrolling Distance".
- Option
"Resolution" "integer"
- Sets the resolution of the device in dots per inch. The resolution is used
to scale relative motion events from mouse devices to 1000 DPI resolution.
This can be used to make high resolution mice less sensitive without
turning off acceleration. If set to 0 no scaling will be performed.
Default: "0".
The following properties are provided by the evdev
driver.
- Evdev Axis
Calibration
- 4 32-bit values, order min-x, max-x, min-y, max-y or 0 values to disable
in-driver axis calibration.
- Evdev Axis
Inversion
- 2 boolean values (8 bit, 0 or 1), order X, Y. 1 inverts the axis.
- Evdev Axes
Swap
- 1 boolean value (8 bit, 0 or 1). 1 swaps x/y axes.
- Evdev Drag Lock
Buttons
- 8-bit. Either 1 value or pairs of values. Value range 0-32, 0 disables a
value.
- Evdev Middle Button
Emulation
- 1 boolean value (8 bit, 0 or 1).
- Evdev Middle Button
Timeout
- 1 16-bit positive value.
- Evdev Middle Button
Button
- 1 8-bit value, allowed range 0-32, 0 disables the button.
- Evdev Wheel
Emulation
- 1 boolean value (8 bit, 0 or 1).
- Evdev Wheel Emulation
Axes
- 4 8-bit values, order X up, X down, Y up, Y down. 0 disables a value.
- Evdev Wheel
Emulation Button
- 1 8-bit value, allowed range 0-32, 0 disables the button.
- Evdev Wheel
Emulation Inertia
- 1 16-bit positive value.
- Evdev Wheel
Emulation Timeout
- 1 16-bit positive value.
- Evdev Scrolling
Distance
- 3 32-bit values: vertical, horizontal and dial.
Kristian Høgsberg, Peter Hutterer