{
    "mode": "man",
    "parameter": "EVDEV",
    "section": "4",
    "url": "https://www.chedong.com/phpMan.php/man/EVDEV/4/json",
    "generated": "2026-06-16T00:30:19Z",
    "synopsis": "",
    "sections": {
        "NAME": {
            "content": "evdev - Generic Linux input driver\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "",
            "subsections": [
                {
                    "name": "Section \"InputDevice\"",
                    "content": "Identifier \"devname\"\nDriver \"evdev\"\nOption \"Device\"   \"devpath\"\nOption \"Emulate3Buttons\"     \"True\"\nOption \"Emulate3Timeout\"     \"50\"\nOption \"GrabDevice\"     \"False\"\n..."
                },
                {
                    "name": "EndSection",
                    "content": ""
                }
            ]
        },
        "DESCRIPTION": {
            "content": "evdev  is  an Xorg input driver for Linux´s generic event devices.  It therefore supports all\ninput devices that the kernel knows about, including most mice, keyboards, tablets and touch‐\nscreens.  evdev is the default driver on the major Linux distributions.\n\nThe  evdev driver can serve as both a pointer and a keyboard input device. Multiple input de‐\nvices are supported by multiple instances of this driver, with  one  InputDevice  section  of\nyour xorg.conf for each input device that will use this driver.\n\nIt  is  recommended that evdev devices are configured through the InputClass directive (refer\nto xorg.conf(5)) instead of  manual  per-device  configuration.  Devices  configured  in  the\nxorg.conf(5) are not hot-plug capable.\n",
            "subsections": []
        },
        "SUPPORTED HARDWARE": {
            "content": "In  general,  any  input  device that the kernel has a driver for can be accessed through the\nevdev driver.  See the Linux kernel documentation for a complete list.\n",
            "subsections": []
        },
        "CONFIGURATION DETAILS": {
            "content": "Please refer to xorg.conf(5) for general configuration details and for options  that  can  be\nused with all input drivers.  This section only covers configuration details specific to this\ndriver.\n\nThe following driver Options are supported:\n\nOption \"ButtonMapping\" \"string\"\nSets the button mapping for this device. The mapping is a space-separated list of but‐\nton  mappings that correspond in order to the physical buttons on the device (i.e. the\nfirst number is the mapping for button 1, etc.). The default mapping is  \"1  2  3  ...\n32\".  A  mapping  of 0 deactivates the button. Multiple buttons can have the same map‐\nping.  For example, a left-handed mouse with deactivated scroll-wheel would use a map‐\nping  of  \"3  2  1 0 0\". Invalid mappings are ignored and the default mapping is used.\nButtons not specified in the user's mapping use the default mapping.\n\nOption \"Device\" \"string\"\nSpecifies the device through which the device can be accessed.  This will generally be\nof  the  form  \"/dev/input/eventX\",  where X is some integer.  The mapping from device\nnode to hardware is system-dependent. Property: \"Device Node\" (read-only).\n\nOption \"DragLockButtons\" \"L1 B2 L3 B4\"\nSets \"drag lock buttons\" that simulate holding a button down, so  that  low  dexterity\npeople  do  not  have to hold a button down at the same time they move a mouse cursor.\nButton numbers occur in pairs, with the lock button number occurring  first,  followed\nby the button number that is the target of the lock button. Property: \"Evdev Drag Lock\nButtons\".\n\nOption \"DragLockButtons\" \"M1\"\nSets a \"master drag lock button\" that acts as a \"Meta Key\" indicating  that  the  next\nbutton pressed is to be \"drag locked\". Property: \"Evdev Drag Lock Buttons\".\n\n\nOption \"Emulate3Buttons\" \"boolean\"\nEnable/disable  the  emulation  of the third (middle) mouse button for mice which only\nhave two physical buttons.  The third button is emulated by pressing both buttons  si‐\nmultaneously.  Default: off. Property: \"Evdev Middle Button Emulation\".\n\nOption \"Emulate3Timeout\" \"integer\"\nSets  the  timeout (in milliseconds) that the driver waits before deciding if two but‐\ntons where pressed \"simultaneously\" when 3 button emulation is enabled.  Default:  50.\nProperty: \"Evdev Middle Button Timeout\".\n\nOption \"Emulate3Button\" \"integer\"\nSpecifies the physical button number to be emitted if middle button emulation is trig‐\ngered.  Default: 2.  Property: \"Evdev Middle Button Button\".\n\nOption \"EmulateWheel\" \"boolean\"\nEnable/disable \"wheel\" emulation.  Wheel emulation means  emulating  button  press/re‐\nlease  events  when the mouse is moved while a specific real button is pressed.  Wheel\nbutton events (typically buttons 4 and 5) are usually used for scrolling.  Wheel  emu‐\nlation  is  useful  for  getting wheel-like behaviour with trackballs.  It can also be\nuseful for mice with 4 or more buttons but no wheel.  See the description of the  Emu‐‐\nlateWheelButton, EmulateWheelInertia, EmulateWheelTimeout, XAxisMapping, and YAxisMap‐‐\nping options.  Default: off. Property \"Evdev Wheel Emulation\".\n\nOption \"EmulateWheelButton\" \"integer\"\nSpecifies which button must be held down to enable wheel emulation mode.   While  this\nbutton  is down, X and/or Y pointer movement will generate button press/release events\nas specified for the XAxisMapping and YAxisMapping settings. If the button  is  0  and\nEmulateWheel  is on, any motion of the device is converted into wheel events. Default:\n4.  Property: \"Evdev Wheel Emulation Button\".\n\nOption \"EmulateWheelInertia\" \"integer\"\nSpecifies how far (in pixels) the pointer must move to generate  button  press/release\nevents  in  wheel emulation mode.  Default: 10. Property: \"Evdev Wheel Emulation Iner‐\ntia\".\n\nThis value must be set for any device does not resemble a  standard  mouse.   Specifi‐\ncally,  on  absolute  devices  such as tablets the value should be set to a reasonable\nfraction of the expected movement to avoid excess scroll events.\n\nWARNING: the name \"inertia\" is a misnomer. This option defines the  distance  required\nto  generate  one scroll event similar to the VertScrollDelta and HorizScrollDelta op‐\ntions. It does not enable inertia in the physical sense, scrolling  stops  immediately\nonce the movement has stopped.\n\nOption \"EmulateWheelTimeout\" \"integer\"\nSpecifies the time in milliseconds the EmulateWheelButton must be pressed before wheel\nemulation is started. If the EmulateWheelButton is released before this  timeout,  the\noriginal button press/release event is sent.  Default: 200. Property: \"Evdev Wheel Em‐\nulation Timeout\".\n\nOption \"EmulateThirdButton\" \"boolean\"\nEnable third button emulation. Third button emulation emits a right button  event  (by\ndefault)  by pressing and holding the first button. The first button must be held down\nfor the configured timeout and must not move more than the  configured  threshold  for\nthe  emulation to activate. Otherwise, the first button event is posted as normal. De‐\nfault: off.  Property: \"Evdev Third Button Emulation\".\n\nOption \"EmulateThirdButtonTimeout\" \"integer\"\nSpecifies the timeout in milliseconds between the initial button press and the genera‐\ntion  of the emulated button event.  Default: 1000. Property: \"Evdev Third Button Emu‐\nlation Timeout\".\n\nOption \"EmulateThirdButtonButton\" \"integer\"\nSpecifies the physical button number to be emitted if third button emulation is  trig‐\ngered.  Default: 3.  Property: \"Evdev Third Button Button\".\n\nOption \"EmulateThirdButtonMoveThreshold\" \"integer\"\nSpecifies  the  maximum move fuzz in device coordinates for third button emulation. If\nthe device moves by more than this threshold before  the  third  button  emulation  is\ntriggered, the emulation is cancelled and a first button event is generated as normal.\nDefault: 20. Property: \"Evdev Third Button Emulation Threshold\".\n\nOption \"GrabDevice\" \"boolean\"\nForce a grab on the event device. Doing so will ensure that no other driver  can  ini‐\ntialise  the  same  device  and  it  will  also stop the device from sending events to\n/dev/kbd or /dev/input/mice. Events from this device will not be sent to  virtual  de‐\nvices (e.g. rfkill or the Macintosh mouse button emulation).  Default: disabled.\n\nOption \"InvertX\" \"Bool\"\n\nOption \"InvertY\" \"Bool\"\nInvert the given axis. Default: off. Property: \"Evdev Axis Inversion\".\n\nOption \"IgnoreRelativeAxes\" \"Bool\"\n\nOption \"IgnoreAbsoluteAxes\" \"Bool\"\nIgnore  the  specified type of axis. Default: unset. The X server cannot deal with de‐\nvices that have both relative and absolute axes. Evdev tries to guess wich axes to ig‐\nnore  given  the device type and disables absolute axes for mice and relative axes for\ntablets, touchscreens and touchpad. These options allow to forcibly  disable  an  axis\ntype.  Mouse wheel axes are exempt and will work even if relative axes are ignored. No\nproperty, this configuration must be set in the configuration.\nIf either option is set to False, the driver will not ignore the  specified  axes  re‐\ngardless  of  the  presence  of other axes. This may trigger buggy behavior and events\nfrom this axis are always forwarded. Users are discouraged from setting this option.\n\nOption \"Calibration\" \"min-x max-x min-y max-y\"\nCalibrates the X and Y axes for devices that need to scale to a  different  coordinate\nsystem  than  reported to the X server. This feature is required for devices that need\nto scale to a different coordinate system than originally reported by the kernel (e.g.\ntouchscreens). The scaling to the custom coordinate system is done in-driver and the X\nserver is unaware of the transformation. Property: \"Evdev Axis Calibration\".\n\nOption \"Mode\" \"Relative\"|\"Absolute\"\nSets the mode of the device if device has absolute axes.  The default value for touch‐\npads  is  relative,  for other absolute.  This option has no effect on devices without\nabsolute axes.\n\nOption \"SwapAxes\" \"Bool\"\nSwap x/y axes. Default: off. Property: \"Evdev Axes Swap\".\n\nOption \"XAxisMapping\" \"N1 N2\"\nSpecifies which buttons are mapped to motion in the X  direction  in  wheel  emulation\nmode.   Button  number N1 is mapped to the negative X axis motion and button number N2\nis mapped to the positive X axis motion.  Default: no mapping. Property: \"Evdev  Wheel\nEmulation Axes\".\n\nOption \"YAxisMapping\" \"N1 N2\"\nSpecifies  which  buttons  are  mapped to motion in the Y direction in wheel emulation\nmode.  Button number N1 is mapped to the negative Y axis motion and button  number  N2\nis  mapped to the positive Y axis motion.  Default: \"4 5\". Property: \"Evdev Wheel Emu‐\nlation Axes\".\n\nOption \"TypeName\" \"type\"\"\nSpecify the X Input 1.x type (see XListInputDevices(3)).  There is rarely  a  need  to\nuse  this option, evdev will guess the device type based on the device's capabilities.\nThis option is provided for devices that need quirks.\n\nOption \"VertScrollDelta\" \"integer\"\nThe amount of motion considered one  unit  of  scrolling  vertically.   Default:  \"1\".\nProperty: \"Evdev Scrolling Distance\".\n\nOption \"HorizScrollDelta\" \"integer\"\nThe  amount  of  motion  considered one unit of scrolling horizontally.  Default: \"1\".\nProperty: \"Evdev Scrolling Distance\".\n\nOption \"DialDelta\" \"integer\"\nThe amount of motion considered one unit of turning the dial.   Default:  \"1\".   Prop‐\nerty: \"Evdev Scrolling Distance\".\n\nOption \"Resolution\" \"integer\"\nSets  the  resolution  of the device in dots per inch. The resolution is used to scale\nrelative motion events from mouse devices to 1000 DPI resolution. This can be used  to\nmake high resolution mice less sensitive without turning off acceleration. If set to 0\nno scaling will be performed. Default: \"0\".\n\n",
            "subsections": []
        },
        "SUPPORTED PROPERTIES": {
            "content": "The following properties are provided by the evdev driver.\n",
            "subsections": [
                {
                    "name": "Evdev Axis Calibration",
                    "content": "4 32-bit values, order min-x, max-x, min-y, max-y or 0  values  to  disable  in-driver\naxis calibration.\n"
                },
                {
                    "name": "Evdev Axis Inversion",
                    "content": "2 boolean values (8 bit, 0 or 1), order X, Y. 1 inverts the axis.\n"
                },
                {
                    "name": "Evdev Axes Swap",
                    "content": "1 boolean value (8 bit, 0 or 1). 1 swaps x/y axes.\n"
                },
                {
                    "name": "Evdev Drag Lock Buttons",
                    "content": "8-bit. Either 1 value or pairs of values. Value range 0-32, 0 disables a value.\n"
                },
                {
                    "name": "Evdev Middle Button Emulation",
                    "content": "1 boolean value (8 bit, 0 or 1).\n"
                },
                {
                    "name": "Evdev Middle Button Timeout",
                    "content": "1 16-bit positive value.\n"
                },
                {
                    "name": "Evdev Middle Button Button",
                    "content": "1 8-bit value, allowed range 0-32, 0 disables the button.\n"
                },
                {
                    "name": "Evdev Wheel Emulation",
                    "content": "1 boolean value (8 bit, 0 or 1).\n"
                },
                {
                    "name": "Evdev Wheel Emulation Axes",
                    "content": "4 8-bit values, order X up, X down, Y up, Y down. 0 disables a value.\n"
                },
                {
                    "name": "Evdev Wheel Emulation Button",
                    "content": "1 8-bit value, allowed range 0-32, 0 disables the button.\n"
                },
                {
                    "name": "Evdev Wheel Emulation Inertia",
                    "content": "1 16-bit positive value.\n"
                },
                {
                    "name": "Evdev Wheel Emulation Timeout",
                    "content": "1 16-bit positive value.\n"
                },
                {
                    "name": "Evdev Scrolling Distance",
                    "content": "3 32-bit values: vertical, horizontal and dial.\n\n"
                }
            ]
        },
        "AUTHORS": {
            "content": "Kristian Høgsberg, Peter Hutterer\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "Xorg(1), xorg.conf(5), Xserver(1), X(7)\n\n\n\nX Version 11                           xf86-input-evdev 2.10.6                              EVDEV(4)",
            "subsections": []
        }
    },
    "summary": "evdev - Generic Linux input driver",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "Xorg",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/Xorg/1/json"
        },
        {
            "name": "xorg.conf",
            "section": "5",
            "url": "https://www.chedong.com/phpMan.php/man/xorg.conf/5/json"
        },
        {
            "name": "Xserver",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/Xserver/1/json"
        },
        {
            "name": "X",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/X/7/json"
        }
    ]
}