Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LIBINPUT(4)		   Kernel Interfaces Manual		   LIBINPUT(4)

NAME
       libinput	- libinput-based X.Org input driver

SYNOPSIS
       Section "InputDevice"
	 Identifier "devname"
	 Driver	"libinput"
	 Option	"Device"   "devpath"
	 ...
       EndSection

NOTE
       This  is	 the  man page for the X input driver.	If you are looking for
       the library documentation, go to	 http://wayland.freedesktop.org/libin-
       put/doc/

DESCRIPTION
       libinput	 is  an	 XLibre	 input driver based on libinput.  It therefore
       supports	all input devices that libinput	 can  handle,  including  most
       mice, keyboards,	tablets	and touchscreens.

       It  is recommended that libinput	devices	are configured through the In-
       putClass	directive (refer to xorg.conf(5)) instead of manual per-device
       configuration.  Devices configured using	the InputDevice	 directive  in
       the xorg.conf(5)	file are not hot-plug capable.

CONFIGURATION DETAILS
       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 "AccelProfile" "string"
	      Sets  the	 pointer  acceleration	profile	 to the	given profile.
	      Permitted	values are adaptive, flat, custom.   Not  all  devices
	      support  this  option  or	 all profiles.	If a profile is	unsup-
	      ported, the default profile for this device is used.  For	a  de-
	      scription	 on  the profiles and their behavior, see the libinput
	      documentation.

       Option "AccelSpeed" "float"
	      Sets the pointer acceleration speed within the  range  [-1,  1].
	      This only	applies	to the flat or adaptive	profile.

       Option "AccelPointsFallback" "string"
       Option "AccelPointsMotion" "string"
       Option "AccelPointsScroll" "string"
	      Sets the points of the Fallback/Motion/Scroll acceleration func-
	      tions.   The  string  must be a space-separated list of floating
	      point non-negative numbers, e.g.,	"0.0 1.0 2.4 2.5".  This  only
	      applies  to the custom profile.  See section CUSTOM ACCELERATION
	      PROFILE

       Option "AccelStepFallback" "float"
       Option "AccelStepMotion"	"float"
       Option "AccelStepScroll"	"float"
	      Sets the step between the	points of  the	Fallback/Motion/Scroll
	      acceleration  functions.	When a step of 0.0 is provided,	libin-
	      put's Fallback acceleration function is used.  This only applies
	      to the custom profile.  See section CUSTOM ACCELERATION PROFILE

       Option "ButtonMapping" "string"
	      Sets the logical button mapping for this device, see  XSetPoint-
	      erMapping(3).  The string	must be	a space-separated list of but-
	      ton  mappings in the order of the	logical	buttons	on the device,
	      starting with button 1.  The default mapping is "1 2 3 ...  32".
	      A	 mapping  of  0	 deactivates the button.  Multiple buttons can
	      have the same mapping.  Invalid mapping  strings	are  discarded
	      and  the	default	 mapping is used for all buttons.  Buttons not
	      specified	in the user's mapping use the  default	mapping.   See
	      section BUTTON MAPPING for more details.

       Option "CalibrationMatrix" "string"
	      A	string of 9 space-separated floating point numbers, in the or-
	      der "a b c d e f g h i".	Sets the calibration matrix to the 3x3
	      matrix where the first row is (abc), the second row is (def) and
	      the third	row is (ghi).

       Option "ClickMethod" "string"
	      Enables a	click method.  Permitted values	are none, buttonareas,
	      clickfinger.  Not	all devices support all	methods.  If an	option
	      is  unsupported,	the  default  click  method for	this device is
	      used.

       Option "DisableWhileTyping" "bool"
	      Indicates	if the touchpad	should be disabled while typing	on the
	      keyboard (this does not apply to modifier	keys such as  Ctrl  or
	      Alt).

       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.	 When using InputClass directives, this	option
	      is set by	the server.  The mapping from device node to  hardware
	      is system-dependent.  Property: "Device Node" (read-only).

       Option "DragLockButtons"	"L1 B1 L2 B2 ..."
	      Sets  "drag  lock	buttons" that simulate a button	logically down
	      even when	it has been physically released.  To logically release
	      a	locked button, a second	click of the same button is required.

	      If the option is a single	button number, that button acts	as the
	      "meta" locking button for	the next button	number.	  See  section
	      BUTTON DRAG LOCK for details.

	      If the option is a list of button	number pairs, the first	number
	      of  each	number	pair is	the lock button, the second number the
	      logical button number to be locked.   See	 section  BUTTON  DRAG
	      LOCK for details.

	      For  both	meta and button	pair configuration, the	button numbers
	      are device button	numbers, i.e. the ButtonMapping	applies	 after
	      drag lock.

       Option "HighResolutionWheelScrolling" "bool"
	      Disables	high-resolution	 wheel	scroll	events,	enabled	by de-
	      fault. When enabled, the driver  forwards	 only  high-resolution
	      wheel  scroll  events  from libinput.  When disabled, the	driver
	      forwards legacy wheel scroll events instead.

       Option "HorizontalScrolling" "bool"
	      Enables or disables horizontal scrolling.	 When  disabled,  this
	      driver  will discard any horizontal scroll events	from libinput.
	      This does	not disable horizontal scroll events from libinput; it
	      merely discards the horizontal axis from any scroll events.  De-
	      fault is enabled.

       Option "LeftHanded" "bool"
	      Enables left-handed button orientation, i.e. swapping  left  and
	      right buttons.

       Option "MiddleEmulation"	"bool"
	      Enables  middle  button  emulation.   When enabled, pressing the
	      left and right buttons simultaneously produces  a	 middle	 mouse
	      button click.  A synonym

	      Option "Emulate3Buttons" "bool"

	      is  preserved  for  compatibility	 with evdev driver, with "Mid-
	      dleEmulation" having preference if both are set.

       Option "NaturalScrolling" "bool"
	      Enables or disables natural scrolling behavior.

       Option "RotationAngle" "float"
	      Sets the rotation	angle of the device to the given angle,	in de-
	      grees clockwise.	The angle must be between 0.0 (inclusive)  and
	      360.0 (exclusive).

       Option "ScrollButton" "int"
	      Designates  a  button  as	scroll button.	If the ScrollMethod is
	      button and the button is logically down, x/y  axis  movement  is
	      converted	into scroll events.

       Option "ScrollButtonLock" "bool"
	      Enables  or  disables  the  scroll button	lock.  If enabled, the
	      ScrollButton is considered logically down	after the first	 click
	      and remains down until the second	click of that button.  If dis-
	      abled (the default), the ScrollButton button is considered logi-
	      cally down while held down and up	once physically	released.

       Option "ScrollFactor" "float"
	      Sets  the	 scroll	 factor	for scroll events. A value higher than
	      1.0 means	faster scrolling.  Applications	that don't support xi2
	      input will instead receive scroll	button	events	less  or  more
	      frequently  depending  on	 the  scroll  factor value, instead of
	      scrolling	"smoother".

       Option "ScrollMethod" "string"
	      Enables a	scroll method. Permitted values	are  none,  twofinger,
	      edge,  button.   Not all devices support all options.  If	an op-
	      tion is unsupported, the default scroll option for  this	device
	      is used.

       Option "ScrollPixelDistance" "int"
	      Sets the movement	distance, in "pixels", required	to trigger one
	      logical  wheel  click.   This  option only applies to the	scroll
	      methods twofinger, edge, button.	See section SCROLL PIXEL  DIS-
	      TANCE for	more details.

       Option "SendEventsMode" "(disabled|enabled|disabled-on-external-mouse)"
	      Sets the send events mode	to disabled, enabled, or "disable when
	      an external mouse	is connected".

       Option "TabletToolPressureCurve"	"x0/y0 x1/y1 x2/y2 x3/y3"
	      Set  the pressure	curve for a tablet stylus to the bezier	formed
	      by the four points.  The respective x/y coordinate  must	be  in
	      the  [0.0,  1.0] range.  For more	information see	section	TABLET
	      TOOL PRESSURE CURVE.

       Option "TabletToolPressureRange"	"min max"
	      Set the pressure range for a tablet stylus to the	 given	subset
	      of  the physical range.  The min/max values must be in the [0.0,
	      1.0] range.  For example,	a min of 0.3  means  the  tablet  will
	      send  0 pressure for anything equal or below 30% of the physical
	      pressure range and a max of 0.7 means the	tablet sends its maxi-
	      mum pressure value for any pressure equal	or higher  to  70%  of
	      the physical pressure range.

       Option "TabletToolAreaRatio" "w:h"
	      Sets  the	 area ratio for	a tablet tool.	The area always	starts
	      at the origin (0/0) and expands to the  largest  available  area
	      with  the	 specified aspect ratio.  Events outside this area are
	      cropped to the area.  The	special	value "default"	 is  used  for
	      the  default mapping (i.e. the device-native mapping).  For more
	      information see section TABLET TOOL AREA RATIO.

       Option "Tapping"	"bool"
	      Enables or disables tap-to-click behavior.

       Option "TappingButtonMap" "(lrm|lmr)"
	      Set the button mapping for 1/2/3-finger taps to  left/right/mid-
	      dle or left/middle/right,	respectively.

       Option "TappingDrag" "bool"
	      Enables  or  disables  drag  during  tapping behavior ("tap-and-
	      drag").  When enabled, a tap followed  by	 a  finger  held  down
	      causes  a	 single	 button	 down only, all	motions	of that	finger
	      thus translate into dragging motion.  Tap-and-drag requires  op-
	      tion Tapping to be enabled.

       Option "TappingDragLock"	"bool"
	      Enables or disables drag lock during tapping behavior.  When en-
	      abled,  a	finger up during tap-and-drag will not immediately re-
	      lease the	button.	 If the	finger is set down  again  within  the
	      timeout, the dragging process continues.

       For  all	 options,  the	options	are only parsed	if the device supports
       that configuration option.  For all options, the	default	value  is  the
       one  used  by libinput.	On configuration failure, the default value is
       applied.

SUPPORTED PROPERTIES
       libinput	exports	runtime-configurable  options  as  properties.	 If  a
       property	 listed	below is not available,	the matching configuration op-
       tion is not available on	the device.  This however does not imply  that
       the  feature  is	not available on the device.  The following properties
       are provided by the libinput driver.

       libinput	Accel Profiles Available
	      3	boolean	values (8 bit, 0 or 1),	in order  "adaptive",  "flat",
	      "custom".	  Indicates  which acceleration	profiles are available
	      on this device.

       libinput	Accel Profile Enabled
	      3	boolean	values (8 bit, 0 or 1),	in order  "adaptive",  "flat",
	      "custom".	 Indicates which acceleration profile is currently en-
	      abled on this device.

       libinput	Accel Speed
	      1	 32-bit	 float	value, defines the pointer speed.  Value range
	      -1, 1.  This only	applies	to the flat or adaptive	profile.

       libinput	Accel Custom Fallback Points
       libinput	Accel Custom Motion Points
       libinput	Accel Custom Scroll Points
	      A	space-separated	list of	 32-bit	 floating  point  non-negative
	      numbers,	e.g.  "0.0 1.0 2.4 2.5".  Sets the points of the Fall-
	      back/Motion/Scroll acceleration functions.  This only applies to
	      the custom profile.  See section CUSTOM ACCELERATION PROFILE

       libinput	Accel Custom Fallback Step
       libinput	Accel Custom Motion Step
       libinput	Accel Custom Scroll Step
	      1	32-bit float value, sets the step between the  points  of  the
	      Fallback/Motion/Scroll  acceleration  functions.	When a step of
	      0.0 is provided, libinput's Fallback  acceleration  function  is
	      used.   This  only  applies  to the custom profile.  See section
	      CUSTOM ACCELERATION PROFILE

       libinput	Button Scrolling Button
	      1	32-bit value.  Sets  the  button  number  to  use  for	button
	      scrolling.  This setting is independent of the scroll method, to
	      enable  button  scrolling	 the  method  must  be	set to button-
	      scrolling	and a valid button must	be set.

       libinput	Button Scrolling Button	Lock Enabled
	      1	boolean	value. If true,	the scroll  button  lock  is  enabled.
	      This  setting  is	independent of the scroll method or the	scroll
	      button, to enable	button scrolling the method  must  be  set  to
	      button-scrolling and a valid button must be set.

       libinput	Calibration Matrix
	      9	 32-bit	 float	values,	representing a 3x3 calibration matrix,
	      order is row 1, row 2, row 3

       libinput	Click Methods Available
	      2	boolean	values (8  bit,	 0  or	1),  in	 order	"buttonareas",
	      "clickfinger".   Indicates  which	click methods are available on
	      this device.

       libinput	Click Methods Enabled
	      2	boolean	values (8  bit,	 0  or	1),  in	 order	"buttonareas",
	      "clickfinger".   Indicates  which	 click	methods	are enabled on
	      this device.

       libinput	Drag Lock Buttons
	      Either one 8-bit value specifying	the meta drag lock button,  or
	      a	 list  of  button pairs.  See section BUTTON DRAG LOCK for de-
	      tails.

       libinput	High Resolution	Wheel Scroll Enabled
	      1	boolean	value (8 bit, 0	or 1).	Indicates whether high-resolu-
	      tion wheel scroll	events are enabled or not.

       libinput	Horizontal Scroll Enabled
	      1	boolean	value (8 bit, 0	or 1).	Indicates  whether  horizontal
	      scrolling	events are enabled or not.

       libinput	Left Handed Enabled
	      1	 boolean value (8 bit, 0 or 1).	 Indicates if left-handed mode
	      is enabled or disabled.

       libinput	Middle Emulation Enabled
	      1	boolean	value (8 bit, 0	or 1).	Indicates if middle  emulation
	      is enabled or disabled.

       libinput	Natural	Scrolling Enabled
	      1	boolean	value (8 bit, 0	or 1).	1 enables natural scrolling.

       libinput	Rotation Angle
	      1	32-bit float value [0.0	to 360.0).  Sets the rotation angle of
	      the device, clockwise of its natural neutral position.

       libinput	Scrolling Factor
	      1	32-bit float value.  Sets the scroll factor for	scroll events.
	      A	 value	higher	than 1.0 means faster scrolling.  Applications
	      that don't support xi2 input will	instead	receive	scroll	button
	      events  less  or	more frequently	depending on the scroll	factor
	      value, instead of	scrolling "smoother".

       libinput	Scroll Methods Available
	      3	boolean	values (8 bit, 0 or 1),	in order "two-finger", "edge",
	      "button".	 Indicates which scroll	methods	are available on  this
	      device.

       libinput	Scroll Method Enabled
	      3	boolean	values (8 bit, 0 or 1),	in order "two-finger", "edge",
	      "button".	 Indicates which scroll	method is currently enabled on
	      this device.

       libinput	Scrolling Pixel	Distance
	      1	 32-bit	value (nonzero,	with additional	implementation-defined
	      range checks).  Changes the movement distance required to	 trig-
	      ger one logical wheel click.

       libinput	Send Events Modes Available
	      2	 boolean values	(8 bit,	0 or 1), in order "disabled" and "dis-
	      abled-on-external-mouse".	 Indicates which send-event modes  are
	      available	on this	device.

       libinput	Send Events Mode Enabled
	      2	 boolean values	(8 bit,	0 or 1), in order "disabled" and "dis-
	      abled-on-external-mouse".	 Indicates which  send-event  mode  is
	      currently	enabled	on this	device.

       libinput	Tablet Tool Pressurecurve
	      4	 32-bit	 float	values	[0.0 to	1.0].  See section TABLET TOOL
	      PRESSURE CURVE

       libinput	Tablet Tool Area Ratio
	      2	32-bit values, corresponding to	 width	and  height.   Special
	      value 0, 0 resets	to the default ratio.  See section TABLET TOOL
	      AREA RATIO for more information.

       libinput	Tapping	Enabled
	      1	boolean	value (8 bit, 0	or 1).	1 enables tapping.

       libinput	Tapping	Button Mapping Enabled
	      2	 boolean value (8 bit, 0 or 1),	in order "lrm" and "lmr".  In-
	      dicates which button mapping is currently	enabled	 on  this  de-
	      vice.

       libinput	Tapping	Drag Lock Enabled
	      1	 boolean  value	 (8  bit, 0 or 1).  1 enables drag lock	during
	      tapping.

       libinput	Disable	While Typing Enabled
	      1	boolean	value (8 bit, 0	or 1).	 Indicates  if	disable	 while
	      typing is	enabled	or disabled.

       Most properties have a libinput <property name> Default equivalent that
       indicates the default value for this setting on this device.

BUTTON MAPPING
       X clients receive events	with logical button numbers, where 1, 2, 3 are
       usually	interpreted  as	left, middle, right; and logical buttons 4, 5,
       6, 7 are	usually	interpreted as scroll  up,  down,  left,  right.   The
       fourth  and  fifth  physical buttons on a device	will thus send logical
       buttons 8 and 9.	 The ButtonMapping option adjusts the  logical	button
       mapping,	 it does not affect how	a physical button is mapped to a logi-
       cal button.

       Traditionally, a	device was set to left-handed button mode by  applying
       a  button  mapping  of "3 2 1 ..." On systems using the libinput	XLibre
       input driver it is recommended to use the LeftHanded option instead.

       The libinput XLibre input driver	does not use the button	mapping	 after
       setup.	Use XSetPointerMapping(3) to modify the	button mapping at run-
       time.

BUTTON DRAG LOCK
       Button drag lock	holds a	button logically down even when	the button it-
       self has	been physically	released since.	 Button	drag lock comes	in two
       modes.

       If in "meta" mode, a meta button	click activates	drag lock for the next
       button press of any other button.  A button click in  the  future  will
       keep  that  button held logically down until a subsequent click of that
       same button.  The meta button events themselves are discarded.  A sepa-
       rate meta button	click is required each time a drag lock	should be  ac-
       tivated for a button in the future.

       If  in  "pairs" mode, each button can be	assigned a target locking but-
       ton.  On	button click, the target lock button is	 held  logically  down
       until  the next click of	the same button.  The button events themselves
       are discarded and only the target button	events are sent.

       This feature is provided	by this	driver,	not by libinput.

TABLET TOOL PRESSURE CURVE
       The pressure curve affects how stylus pressure  is  reported.   By  de-
       fault,  the hardware pressure is	reported as-is.	 By setting a pressure
       curve, the feel of the stylus can be adjusted to	be more	 like  e.g.  a
       pencil or a brush.

       The  pressure  curve is a cubic Bezier curve, drawn within a normalized
       range of	0.0 to 1.0 between the four points provided.  This  normalized
       range  is  applied  to  the tablet's pressure input so that the highest
       pressure	maps to	1.0.  The points must have increasing  x  coordinates,
       if  x0 is larger	than 0.0 all pressure values lower than	x0 are equiva-
       lent to y0.  If x3 is less than 1.0, all	pressure values	higher than x3
       are equivalent to y3.

       The input for a linear curve (default)  is   "0.0/0.0  0.0/0.0  1.0/1.0
       1.0/1.0";  a  slightly  depressed  curve	 (firmer)  might  be  "0.0/0.0
       0.05/0.0	1.0/0.95 1.0/1.0"; a slightly raised curve (softer)  might  be
       "0.0/0.0	0.0/0.05 0.95/1.0 1.0/1.0".

       This feature is provided	by this	driver,	not by libinput.

TABLET TOOL AREA RATIO
       By  default,  a	tablet	tool  can access the whole sensor area and the
       tablet area is mapped to	 the  available	 screen	 area.	 For  external
       tablets	like  the  Wacom  Intuos series, the height:width ratio	of the
       tablet may be different to that of the monitor, causing the skew	of in-
       put data.

       To avoid	this skew of input data, an area ratio may be set to match the
       ratio of	the screen device.  For	example, a ratio of  4:3  will	reduce
       the  available  area of the tablet to the largest available area	with a
       ratio of	4:3.  Events within this area will scale to the	 tablet's  an-
       nounced axis range, the area ratio is thus transparent to the X server.
       Any  events  outside  this  area	 will send events equal	to the maximum
       value of	that axis.  The	area always starts at the device's  origin  in
       it's current rotation, i.e., it takes left-handed-ness into account.

       This feature is provided	by this	driver,	not by libinput.

SCROLL PIXEL DISTANCE
       The  X  server does not support per-pixel scrolling but it does support
       smooth scrolling.  All scroll events however are	based around a logical
       unit of scrolling (traditionally	corresponding to a wheel  click).   It
       is  thus	 not possible to scroll	by 10 pixels, but it is	possible for a
       driver to scroll	by 1/10th of a logical wheel click.

       libinput	provides scroll	data in	pixels.	 The  ScrollPixelDistance  op-
       tion defines the	amount of movement equivalent to one wheel click.  For
       example,	a value	of 50 means the	user has to move a finger by 50	pixels
       to generate one logical click event and each pixel is 1/50th of a wheel
       click.

CUSTOM ACCELERATION PROFILE
       The  custom  pointer acceleration profile gives users full control over
       the acceleration	behavior at different speeds.  libinput	exposes	an ac-
       celeration function f(x)	where the x-axis is the	device speed in	device
       units per millisecond and the y-axis is the pointer speed.

       The custom acceleration function	is defined using n  points  which  are
       spaced  uniformly  along	 the x-axis, starting from 0 and continuing in
       constant	steps.	Thus the points	defining the custom function are:
       (0 * step, f[0]), (1 * step, f[1]), ...,	((n-1) * step, f[n-1])
       When a velocity value does not lie exactly on those  points,  a	linear
       interpolation/extrapolation  of	the  two closest points	will be	calcu-
       lated.

       There are 3 custom acceleration functions, which	are used for different
       movement	types:
       +---------------+----------------------------------+------------------+
       | Movement type |  Uses				  |  supported by    |
       +---------------+----------------------------------+------------------+
       | Fallback      |  Catch-all default movement type |  All devices     |
       +---------------+----------------------------------+------------------+
       | Motion	       |  Used for pointer motion	  |  All devices     |
       +---------------+----------------------------------+------------------+
       | Scroll	       |  Used for scroll movement	  |  Mouse, Touchpad |
       +---------------+----------------------------------+------------------+

       See libinput  library  documentation  for  more	details:  https://way-
       land.freedesktop.org/libinput/doc/latest/pointer-acceleration.html#the-
       custom-acceleration-profile

BUGS
       This  driver does not work with Option "Device" set to an event node in
       /dev/input/by-id	and /dev/input/by-path.	 This can be usually be	worked
       by using	Section	"InputClass" with an appropriate Match*	 statement  in
       the xorg.conf(5).

AUTHORS
       Peter Hutterer

SEE ALSO
       XLibre(1), xorg.conf(5),	Xserver(1), X(7)

xlibre-xf86-input-libinput  25... 2025-06-01			   LIBINPUT(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=libinput&sektion=4&manpath=FreeBSD+15.0-RELEASE+and+Ports.quarterly>

home | help