---
name: "libinput-debug-events"
section: "1"
platform: "linux"
package: "libinput-tools"
version: "1.32.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libinput-debug-events"
---

# libinput-debug-events(1)

debug helper for libinput

## NAME

libinput-debug-events - debug helper for libinput

## SYNOPSIS

**libinput debug-events *\[options\]***

**libinput debug-events *\[options\]* --udev *\<seat\>***

**libinput debug-events *\[options\]* \[--device\] */dev/input/event0* \[*/dev/input/event1*...\]**

## DESCRIPTION

The **libinput debug-events** tool creates a libinput context and prints all events from these devices.

This is a debugging tool only, its output may change at any time. Do not rely on the output.

This tool usually needs to be run as root to have access to the /dev/input/eventX nodes.

## OPTIONS

- **--compress-motion-events**

  Compress repeated motion, axis, scroll, and gesture update events into a single line. This only takes effect if stdout is a TTY.

- **--device */dev/input/event0***

  Use the given device(s) with the path backend. The **--device** argument may be omitted.

- **--grab**

  Exclusively grab all opened devices. This will prevent events from being delivered to the host system.

- **--help**

  Print help

- **--quiet**

  Only print libinput messages, don't print anything from this tool. This is useful in combination with --verbose for internal state debugging.

- **--show-keycodes**

  Key events shown by this tool are partially obfuscated to avoid passwords and other sensitive information showing up in the output. Use the **--show-keycodes** argument to make all keycodes visible.

- **--udev *\<seat\>***

  Use the udev backend to listen for device notifications on the given seat. The default behavior is equivalent to --udev "seat0".

- **--verbose**

  Use verbose output

### libinput configuration options

- **--apply-to="pattern"**

  Configuration options are only applied where the device name matches the pattern. This pattern has no effect on the **--disable-sendevents** option.

- **--disable-sendevents="pattern"**

  Set the send-events option to disabled for the devices matching patterns. This option is not affected by the **--apply-to="pattern"** option.

- **--enable-drag\|--disable-drag**

  Enable or disable tap-and-drag

- **--enable-drag-lock\|--disable-drag-lock**

  Enable (in timeout mode) or disable drag-lock **--enable-drag-lock=\[sticky\|timeout\]** Enable drag-lock in sticky or timeout mode

- **--enable-dwt\|--disable-dwt**

  Enable or disable disable-while-typing

- **--enable-dwtp\|--disable-dwtp**

  Enable or disable disable-while-trackpointing

- **--enable-left-handed\|--disable-left-handed**

  Enable or disable left handed button configuration

- **--enable-middlebutton\|--disable-middlebutton**

  Enable or disable middle button emulation

- **--enable-natural-scrolling\|--disable-natural-scrolling**

  Enable or disable natural scrolling

- **--enable-scroll-button-lock\|--disable-scroll-button-lock**

  Enable or disable the scroll button lock

- **--enable-tap\|--disable-tap**

  Enable or disable tap-to-click

- **--set-area="x1/y1 x2/y2"**

  Set the tablet area to the rectangle described by the two points x1/y1 and x2/y2. All coordinates must be in the range \[0.0, 1.0\].

- **--set-calibration="1.0 0.0 0.0 0.0 1.0 0.0"**

  Set the first 6 elements of a 3x3 matrix to use for calibration. The third row of the matrix is always "0.0 0.0 0.1".

- **--set-click-method=\[none\|clickfinger\|buttonareas\]**

  Set the desired click method

- **--set-clickfinger-map=\[lrm\|lmr\]**

  Set button mapping for clickfinger

- **--set-custom-points="\<value\>;...;\<value\>"**

  Sets the n points defining a custom acceleration function The points are defined in a semicolon-separated list of floating point non-negative numbers. Defaults to "0.0;1.0". This only applies to the custom profile.

- **--set-custom-step=\<value\>**

  Sets the distance along the x-axis between each point, starting from 0. Defaults to 1.0. This only applies to the custom profile.

- **--set-custom-type=\[fallback\|motion\|scroll\]**

  Sets the type of the custom acceleration function. Defaults to fallback. This only applies to the custom profile.

- **--set-eraser-button-button=\[BTN\_STYLUS\|BTN\_STYLUS2\|BTN\_STYLUS3\]**

  Sets the eraser button button to the given tablet tool button. Only takes effect if combined with **--set-eraser-button-mode=on-button-down.**

- **--set-eraser-button-mode=\[default\|on-button-down\]**

  Sets the eraser button mode to the given mode.

- **--set-pressure-range=\<min\>:\<max\>**

  Set the tablet tool pressure range to min:max. min and max must be in range \[0.0, 1.0\].

- **--set-profile=\[adaptive\|flat\|custom\]**

  Set pointer acceleration profile

- **--set-rotation-angle=\<degrees\>**

  Set the rotation angle in degrees (0 to 360).

- **--set-scroll-button=BTN\_MIDDLE**

  Set the button to the given button code

- **--set-scroll-method=\[none\|twofinger\|edge\|button\|circular\]**

  Set the desired scroll method

- **--set-sendevents=\[disabled\|enabled\|disabled-on-external-mouse\]**

  Set the given sendevents mode. This option overrides **--disable-sendevents="pattern"** for any devices it matches via the **--apply-to="pattern"** option.

- **--set-speed=\<value\>**

  Set pointer acceleration speed. The allowed range is \[-1, 1\]. This only applies to the flat or adaptive profile.

- **--set-tap-map=\[lrm\|lmr\]**

  Set button mapping for tapping

## NOTES

Events shown by this tool may not correspond to the events seen by a different user of libinput. This tool initializes a separate context.

## LIBINPUT

Part of the **[libinput(1)](/libinput/1.md)** suite
