libinput-debug-events(1)

โœจ NAME โœจ

okay so bestie, welcome to libinput-debug-events(1) โ€” the debug helper for libinput, brought to you by the libinput Manual ๐Ÿซถ

๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

libinput debug-events [options]

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

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

๐Ÿ’… DESCRIPTION ๐Ÿ’…

So what does this actually do? libinput debug-events spins up a libinput context and prints all the events coming from your devices. literally all of them. it's giving main character energy for your input devices โœจ

real talk though: this is a debugging tool only, and its output may change at any time. Do not rely on the output. it's not a stable API, it's a vibe check on your hardware ๐Ÿ˜ญ

also, heads up: this tool usually needs to be run as root so it can actually get access to the /dev/input/eventX nodes. no root, no peek at the nodes, sorry bestie ๐Ÿ’€

๐Ÿ”ฅ OPTIONS ๐Ÿ”ฅ

  • --compress-motion-events โ€” squishes those repeated motion, axis, scroll, and gesture update events down into a single line. iconic for readability, but heads up: this only kicks in if stdout is a TTY.
  • --device /dev/input/event0 โ€” use the given device(s) with the path backend. and yes, the --device argument may be omitted (slay, flexible).
  • --grab โ€” exclusively grabs every opened device. this one's serious: it will prevent events from being delivered to the host system. like, the host just doesn't get them anymore. ๐Ÿซฃ
  • --help โ€” prints help. that's it, that's the whole vibe ๐Ÿ’–
  • --quiet โ€” only print libinput messages, don't print anything from this tool. super useful in combination with --verbose for internal state debugging. iykyk ๐Ÿ”
  • --show-keycodes โ€” okay so key events shown by this tool are partially obfuscated to keep passwords and other sensitive info from showing up in the output. use --show-keycodes to make all the keycodes visible. only do this if you're okay with what's getting printed, mwah ๐Ÿ’‹
  • --udev <seat> โ€” use the udev backend to listen for device notifications on the given seat. the default behavior is equivalent to --udev "seat0". default seat, no notes ๐Ÿ“
  • --verbose โ€” use verbose output. more words, more details, more everything โœจ

๐ŸŒธ libinput configuration options ๐ŸŒธ

  • --apply-to="pattern" โ€” configuration options are only applied where the device name matches the pattern. important li'l caveat: this pattern has no effect on the --disable-sendevents option. none. zero. ๐Ÿšซ
  • --disable-sendevents="pattern" โ€” set the send-events option to disabled for the devices matching patterns. and btw, this option is not affected by the --apply-to="pattern" option. they're doing their own thing ๐Ÿ’…
  • --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. pick your flavor ๐Ÿ“
  • --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]. keep it in bounds bestie ๐Ÿ“
  • --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". always. no cap. ๐Ÿงฎ
  • --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. combo move, periodt ๐ŸŽ€
  • --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). spin it, king ๐ŸŒช๏ธ
  • --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. btw this option overrides --disable-sendevents="pattern" for any devices it matches via the --apply-to="pattern" option. precedence, bestie ๐Ÿ‘‘
  • --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 โญ

ngl, this one's important: events shown by this tool may not correspond to the events seen by a different user of libinput. why? because this tool initializes a separate context. so don't go comparing its output to someone else's and thinking something's broken ๐Ÿ™ˆ

๐Ÿงš LIBINPUT ๐Ÿงš

part of the libinput(1) suite ๐Ÿ’œ


and that's the whole page bestie!! ๐ŸŽ€ this was libinput 1.32.0's libinput-debug-events(1) from the libinput Manual โ€” go debug those events, you absolute icon ๐Ÿ’…โœจ๐Ÿฆ‹๐ŸŒธ

๐Ÿ“ฆ where this page comes from