Compare commits

..

40 Commits

Author SHA1 Message Date
Peter Hutterer
1c3ce3ce3c xf86-input-libinput 0.23.0
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-12-12 14:54:00 +10:00
Peter Hutterer
4d481ea7c8 Fix default scroll button number
Was exposing the evdev code rather than the xorg code.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-12-06 06:59:39 +10:00
Peter Hutterer
72bac84df9 If the parent libinput_device is unavailable, create a new one
The parent device ref's the libinput device during pre_init and unref's it
during DEVICE_INIT, so the copy is lost. During DEVICE_ON, the libinput device
is re-added and ref'd, this one stays around now. But the takeaway is: unless
the device is enabled, no libinput device reference is available.

If a device is a mixed pointer + keyboard device, a subdevice is created
during a WorkProc. The subdevice relied on the parent's libinput_device being
available and didn't even check for it. This WorkProc usually runs after
the parent's DEVICE_ON, so in most cases all is well.

But when running without logind and the server is vt-switched away, the parent
device only runs PreInit and DEVICE_INIT but never DEVICE_ON, causing the
subdevice to burn, crash, and generally fail horribly when it dereferences the
parent's libinput device.

Fix this because we have global warming already and don't need to burn more
things and also because it's considered bad user experience to have the
server crash. The simple fix is to check the parent device first and if it is
unavailable, create a new one because it will end up disabled as well anyway,
so the ref goes away as well. The use-case where the parent somehow gets
disabled but the subdevice doesn't is a bit too niche to worry about.

This doesn't happen with logind because in that case we don't get a usable fd
while VT-switched away, so we can't even run PreInit and never get this far
(see the paused fd handling in the xfree86 code for that). It can be
reproduced by setting AutoEnableDevices off, but why would you do that,
seriously.

https://bugs.freedesktop.org/show_bug.cgi?id=97117

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-11-19 16:24:23 +10:00
Peter Hutterer
0b073d90e6 Link the left-handed property between the tools
The property is tablet-wide, not just per tool. So when one tool is updated,
run through all other devices that share the same underlying device.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-11-14 13:29:30 +10:00
Peter Hutterer
669fbb0985 Drop indentation for matrix handling
Exit early if the string is NULL to reduce indentation. No functional changes.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-11-01 10:42:19 +10:00
Peter Hutterer
c4f0a9bcb8 conf: match against tablets too
Now that we sort below the xf86-input-wacom driver anyway, there's no good
reason to ignore tablets anymore.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-11-01 10:30:14 +10:00
Peter Hutterer
a61e156326 man: sort the options and properties alphabetically
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-27 14:25:09 +10:00
Peter Hutterer
552cbaf466 Don't init the AccelSpeed/LeftHanded properties on the base tablet device
This device never sends events, no point in exposing these options

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
2016-10-27 10:28:08 +10:00
Peter Hutterer
bc91d337d7 Fix potential NULL pointer dereferencing
Found by coverity.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-21 07:51:51 +10:00
Peter Hutterer
c8d2293873 Remove superfluous check for next being NULL
is_libinput_device(next) causes a dereference of next anyway, so this cannot
ever be NULL.

Besides, if next ends up as NULL that means we have lost count of how many
remaining devices use libinput, so we have other issues.

Found by coverity.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-20 08:38:24 +10:00
Peter Hutterer
a7014aa8c6 Remove two unused variables
They were never used anyway

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-20 08:28:26 +10:00
Peter Hutterer
bf7fffde52 Don't init the horiz scroll property on non-pointer devices
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-19 11:42:57 +10:00
Peter Hutterer
7282177756 xf86-input-libinput 0.22.0
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-19 10:55:12 +10:00
Peter Hutterer
1dd61abf7e Wrap the input_lock calls into ifdefs
Missing from a790ff35f9

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-19 10:46:22 +10:00
Peter Hutterer
c80954386d xf86-input-libinput 0.21.0
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-19 09:24:37 +10:00
Peter Hutterer
a790ff35f9 Swap the registered input device on DEVICE_OFF when needed
If we don't swap out the pInfo previously passed to xf86AddEnabledDevice(),
the thread eventually calls read_input on a struct that has been deleted.
Avoid this by swapping out the to-be-destroyed pInfo with the first one we
find.

Reproducer: sudo udevadm trigger --type=devices --action=add

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-10-19 07:56:46 +10:00
Peter Hutterer
6318ac420b Fix tap button map option handling
Copy/paste error

https://bugs.freedesktop.org/show_bug.cgi?id=97989

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-10-14 13:34:56 +10:00
Peter Hutterer
cd02040a5d xf86-input-libinput 0.20.0
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-09-30 17:01:33 +10:00
Michel Dänzer
0cfe9ec6c2 Fix --with-xorg-conf-dir default value
If --prefix isn't specified on the command line, $prefix contains "NONE"
at this point, not the default prefix value. So make install would
attempt to install the xorg.conf.d snippet to
${DESTDIR}NONE/share/X11/xorg.conf.d/.

Avoid this by leaving ${prefix} verbatim in the default value, to be
resolved by make.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-09-21 16:29:01 +10:00
Keith Packard
b87d2530db Initializing strip association with wrong index
This looks like a cut&paste coding error to me, and it generated a
compiler warning about possibly uninitialized value.

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-09-19 09:51:00 +10:00
Peter Hutterer
2f1df46ba9 Correct the horizontal scroll property name
Clear typo. Not bothering to be backwards compatible here, anything that uses
the #define will update on rebuild, anyone using the string directly should've
told me about the typo...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-09-13 16:49:33 +10:00
Peter Hutterer
fa69bb1bc2 Always delay hotplugging subdevices
Avoid creating new devices from within the input thread which was the case for
tablet tools. It requires a lot more care about locking and has a potential to
mess up things.

Instead, schedule a WorkProc and buffer all events until we have the device
created. Once that's done, replay the event sequence so far. If the device
comes into proximity and out again before we manage to create the new device
we just ditch the whole sequence and wait for the next proximity in.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-09-09 16:34:05 +10:00
Peter Hutterer
af4fa36884 Add support for configurable tap button mapping
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-09-07 14:41:59 +10:00
Peter Hutterer
a5b3c209fc Add support for the rotation configuration
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-08-31 11:11:37 +10:00
Peter Hutterer
0f7c5ed02d conf: drop libinput to below the other drivers
This is the continuation of 3f569ec493, dropping libinput below the remaining
drivers. Wacom and synaptics already sort higher anyway (see wacom commit
0da5cd54 and synaptics commit 59e5db025). evdev remains the catchall
basic fallback driver and is overwritten by libinput. The two drivers affected
by this patch are joystick and vmmouse.

joystick is a niche driver and drives devices libinput doesn't handle anyway
so there is no need to override. If a user installs it, presumably it is to
use it.

vmmouse is a niche driver and does not assign itself anymore for newer kernel
drivers (see vmmouse commit 576e8123 from Oct 2014). So if vmmouse is
installed it can safely sort higher than libinput.

Note: this is upstream behavior, distributions have to work out the wanted
behavior themselves by renaming the config snippets accordingly.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-08-31 08:33:19 +10:00
Peter Hutterer
0168716fa1 Whitespace fix
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-08-19 11:35:08 +10:00
Peter Hutterer
b508c54fa0 Comment two read-only properties as such
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-08-16 09:35:27 +10:00
Peter Hutterer
d43e514430 Expose tablet pad modes as properties
There is not good wire protocol for pad modes so instead we just export the
information via properties. One property to tell us how many groups and how
many modes each group has. One property for the current mode of each group.
And three properties to tell us which group each button, ring and strip is in.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-08-16 07:49:49 +10:00
Peter Hutterer
5f2fff3c24 Ensure parent devices are actual parent devices
The list returned by xf86FirstLocalDevice() includes our own device. If the
parent device is removed before the hotplug callback is invoked, the first
match with the same shared-device ID is our own device (or potentially another
subdevice on the same already-removed parent). Avoid this by making sure the
matched device is actually a parent device.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Keith Packard <keithp@keithp.com>
2016-08-16 07:49:49 +10:00
Peter Hutterer
116cddba69 Bail out of PreInit if the parent driver data is NULL
If the parent device is removed before the WorkProc is called, the private
data is NULL.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-08-12 11:34:35 +10:00
Peter Hutterer
fb4847d243 Block input events while creating the virtual subdevices
If an event comes in halfway through the new device creation we read it from
libinput's epollfd but depending on the setup stage the new device may not be
ready yet.

https://bugs.freedesktop.org/show_bug.cgi?id=97117

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-08-12 11:34:35 +10:00
Peter Hutterer
ce85b11e4c Fix button offset for tablet pad buttons
4-7 is reserved for scroll buttons, as usual

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-07-08 13:02:32 +10:00
Eric Engestrom
77a47a795c man: fix a couple typos
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-07-04 07:33:34 +10:00
Peter Hutterer
ae4f0a8d72 Init touch x/y axis labels as MT axis labels
https://bugs.freedesktop.org/show_bug.cgi?id=96481

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2016-06-14 12:15:48 +10:00
Keith Packard
289de5be15 Use xf86AddEnabledDevice instead of AddEnabledDevice when threaded [v3]
libinput can't run at SIGIO time, so it has been using
AddEnabledDevice to run in non-signal context.

Threaded input runs all input in non-signal context, so we want to use
xf86AddEnabledDevice at last.

v2: use XINPUT ABI version check instead of testing for presence of
    AddEnabledDevice, which can't get removed from the server until
    a few more patches past the threaded input change are merged.

v3: remove reference to XI86_SIGNAL_IO, which was presumably
    a planned change to the xf86AddEnabledDevice path to make that
    not use SIGIO.

Signed-off-by: Keith Packard <keithp@keithp.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-30 18:21:33 +10:00
Peter Hutterer
ceea2bb8ba Change some fixed floats to decimal notation
Just to make it more obvious we're using floats/doubles here.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-30 15:28:47 +10:00
Peter Hutterer
d8aef83834 Fix proximity events
Two bugs caused proximity events to be discarded. First, on proximity out
posting through pDev would be discarded because pDev is the parent device that
we use as a base for hotplugging the real devices for each tool from. That
device never sends events though, doing so will see the event discarded in the
server.

Second, if the tool already exists don't just exit, send the proximity event
first. To unify the three paths where we do send the events simply move them
down to the exit phase of the function.

https://bugs.freedesktop.org/show_bug.cgi?id=95484

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-23 14:15:22 +10:00
Peter Hutterer
34b6ed980f Add tablet pad support
Modelled to be mostly compatible to the xf86-input-wacom driver behavior. The
pad gets 7 axes, the first three of which are mute and the others are always
available but obviously only send events when the axis is there.

The strip axes are incompatible, the wacom driver merely forwards the device
events (which are a bitshifted value), libinput normalizes it and we just
expand this back into an integer range. Let's see how we go with this.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-09 12:06:24 +10:00
Peter Hutterer
ce85432f41 Discard buttons >= 256
https://bugs.freedesktop.org/show_bug.cgi?id=95295

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-09 08:15:43 +10:00
Peter Hutterer
181ea654dd Fix potential use of uninitialized values
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-04-28 14:41:43 +10:00
6 changed files with 1181 additions and 243 deletions

View File

@@ -27,7 +27,7 @@ MAINTAINERCLEANFILES = ChangeLog INSTALL
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = xorg-libinput.pc
dist_xorgconf_DATA = conf/60-libinput.conf
dist_xorgconf_DATA = conf/40-libinput.conf
.PHONY: ChangeLog INSTALL

View File

@@ -26,3 +26,10 @@ Section "InputClass"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput tablet catchall"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection

View File

@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-input-libinput],
[0.19.1],
[0.23.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-input-libinput])
AC_CONFIG_SRCDIR([Makefile.am])
@@ -45,7 +45,7 @@ XORG_DEFAULT_OPTIONS
# Obtain compiler/linker options from server and required extensions
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.10] xproto [inputproto >= 2.2])
PKG_CHECK_MODULES(LIBINPUT, [libinput >= 1.1.901])
PKG_CHECK_MODULES(LIBINPUT, [libinput >= 1.4.901])
# Define a configure option for an alternate input module directory
AC_ARG_WITH(xorg-module-dir,
@@ -58,9 +58,9 @@ AC_SUBST(inputdir)
AC_ARG_WITH(xorg-conf-dir,
AC_HELP_STRING([--with-xorg-conf-dir=DIR],
[Default xorg.conf.d directory [[default=$prefix/share/X11/xorg.conf.d/]]]),
[Default xorg.conf.d directory [[default=${prefix}/share/X11/xorg.conf.d]]]),
[xorgconfdir="$withval"],
[xorgconfdir="$prefix/share/X11/xorg.conf.d"])
[xorgconfdir='${prefix}/share/X11/xorg.conf.d'])
AC_SUBST(xorgconfdir)
# X Server SDK location is required to install header files

View File

@@ -42,6 +42,13 @@
/* Tap drag lock default enabled/disabled: BOOL, 1 value, read-only */
#define LIBINPUT_PROP_TAP_DRAG_LOCK_DEFAULT "libinput Tapping Drag Lock Enabled Default"
/* Tap button order: BOOL, 2 values in order LRM, LMR, only one may be set
at any time */
#define LIBINPUT_PROP_TAP_BUTTONMAP "libinput Tapping Button Mapping Enabled"
/* Tap button default order: BOOL, 2 values in order LRM, LMR, read-only */
#define LIBINPUT_PROP_TAP_BUTTONMAP_DEFAULT "libinput Tapping Button Mapping Default"
/* Calibration matrix: FLOAT, 9 values of a 3x3 matrix, in rows */
#define LIBINPUT_PROP_CALIBRATION "libinput Calibration Matrix"
@@ -142,4 +149,38 @@
* If disabled, horizontal scroll events are discarded */
#define LIBINPUT_PROP_HORIZ_SCROLL_ENABLED "libinput Horizontal Scroll Enabled"
/* Number of modes each pad mode group has available: CARD8, one for each
* pad mode group, read-only.
*/
#define LIBINPUT_PROP_TABLET_PAD_MODE_GROUPS_AVAILABLE "libinput Pad Mode Groups Modes Available"
/* Mode each pad mode group is currently in: CARD8, one for each pad mode
* group, read-only.
*/
#define LIBINPUT_PROP_TABLET_PAD_MODE_GROUPS "libinput Pad Mode Groups Modes"
/* The association of each logical button with the pad mode group: INT8,
* one for each logical button. If set to -1 the button cannot be associated
* with a mode group. read-only
*/
#define LIBINPUT_PROP_TABLET_PAD_MODE_GROUP_BUTTONS "libinput Pad Mode Group Buttons"
/* The association of each logical strip with the pad mode group: INT8,
* one for each logical strip. If set to -1 the strip cannot be associated
* with a mode group. read-only
*/
#define LIBINPUT_PROP_TABLET_PAD_MODE_GROUP_STRIPS "libinput Pad Mode Group Strips"
/* The association of each logical ring with the pad mode group: INT8,
* one for each logical ring. If set to -1 the ring cannot be associated
* with a mode group. read-only
*/
#define LIBINPUT_PROP_TABLET_PAD_MODE_GROUP_RINGS "libinput Pad Mode Group Rings"
/* Device rotation: FLOAT, 1 value, 32 bit */
#define LIBINPUT_PROP_ROTATION_ANGLE "libinput Rotation Angle"
/* Device rotation: FLOAT, 1 value, 32 bit, read-only */
#define LIBINPUT_PROP_ROTATION_ANGLE_DEFAULT "libinput Rotation Angle Default"
#endif /* _LIBINPUT_PROPERTIES_H_ */

View File

@@ -41,23 +41,14 @@ The following driver
.B Options
are supported:
.TP 7
.BI "Option \*qDevice\*q \*q" string \*q
Specifies the device through which the device can be accessed. This will
generally be of the form \*q/dev/input/eventX\*q, where X is some integer.
When using
.B InputClass
directives, this option is set by the server.
The mapping from device node to hardware is system-dependent. Property:
"Device Node" (read-only).
.TP 7
.BI "Option \*qAccelProfile\*q \*q" string \*q
Sets the pointer acceleration profile to the given profile. Permitted values
are
.BI adaptive,
.BI flat.
Not all devices support this option or all profiles. If a profile is
unsupported, the default profile for this is used. For a description on the
profiles and their behavior, see the libinput documentation.
unsupported, the default profile for this device is used. For a description
on the profiles and their behavior, see the libinput documentation.
.TP 7
.BI "Option \*qAccelSpeed\*q \*q" float \*q
Sets the pointer acceleration speed within the range [-1, 1]
@@ -89,64 +80,19 @@ Enables a click method. Permitted values are
Not all devices support all methods, if an option is unsupported, the
default click method for this device is used.
.TP 7
.BI "Option \*qLeftHanded\*q \*q" bool \*q
Enables left-handed button orientation, i.e. swapping left and right buttons.
.TP 7
.BI "Option \*qMiddleEmulation\*q \*q" bool \*q
Enables middle button emulation. When enabled, pressing the left and right
buttons simultaneously produces a middle mouse button click.
.TP 7
.BI "Option \*qNaturalScrolling\*q \*q" bool \*q
Enables or disables natural scrolling behavior.
.TP 7
.BI "Option \*qScrollButton\*q \*q" int \*q
Designates a button as scroll button. If the
.BI ScrollMethod
is
.BI button
and the button is logically held down, x/y axis movement is converted into
scroll events.
.TP 7
.BI "Option \*qScrollMethod\*q \*q" string \*q
Enables a scroll method. Permitted values are
.BI none,
.BI twofinger,
.BI edge,
.BI button.
Not all devices support all options, if an option is unsupported, the
default scroll option for this device is used.
.TP 7
.BI "Option \*qHorizontalScrolling\*q" bool \*q
Disables horizontal scrolling. When disabled, this driver will discard any
horizontal scroll events from libinput. Note that this does not disable
horizontal scrolling, it merely discards the horizontal axis from any scroll
events.
.TP 7
.BI "Option \*qSendEventsMode\*q \*q" (disabled|enabled|disabled-on-external-mouse) \*q
Sets the send events mode to disabled, enabled, or "disable when an external
mouse is connected".
.TP 7
.BI "Option \*qTapping\*q \*q" bool \*q
Enables or disables tap-to-click behavior.
.TP 7
.BI "Option \*qTappingDrag\*q \*q" bool \*q
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 option
.B Tapping
to be enabled.
.TP 7
.BI "Option \*qTappingDragLock\*q \*q" bool \*q
Enables or disables drag lock during tapping behavior. When enabled, a
finger up during tap-and-drag will not immediately release the button. If
the finger is set down again within the timeout, the dragging process
continues.
.TP 7
.BI "Option \*qDisableWhileTyping\*q \*q" bool \*q
Indicates if the touchpad should be disabled while typing on the keyboard
(this does not apply to modifier keys such as Ctrl or Alt).
.TP 7
.BI "Option \*qDevice\*q \*q" string \*q
Specifies the device through which the device can be accessed. This will
generally be of the form \*q/dev/input/eventX\*q, where X is some integer.
When using
.B InputClass
directives, this option is set by the server.
The mapping from device node to hardware is system-dependent. Property:
"Device Node" (read-only).
.TP 7
.BI "Option \*qDragLockButtons\*q \*q" "L1 B1 L2 B2 ..." \*q
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
@@ -167,6 +113,68 @@ For both meta and button pair configuration, the button numbers are
device button numbers, i.e. the
.B ButtonMapping
applies after drag lock.
.TP 7
.BI "Option \*qHorizontalScrolling\*q \*q" bool \*q
Disables horizontal scrolling. When disabled, this driver will discard any
horizontal scroll events from libinput. Note that this does not disable
horizontal scrolling, it merely discards the horizontal axis from any scroll
events.
.TP 7
.BI "Option \*qLeftHanded\*q \*q" bool \*q
Enables left-handed button orientation, i.e. swapping left and right buttons.
.TP 7
.BI "Option \*qMiddleEmulation\*q \*q" bool \*q
Enables middle button emulation. When enabled, pressing the left and right
buttons simultaneously produces a middle mouse button click.
.TP 7
.BI "Option \*qNaturalScrolling\*q \*q" bool \*q
Enables or disables natural scrolling behavior.
.TP 7
.BI "Option \*qRotationAngle\*q \*q" float \*q
Sets the rotation angle of the device to the given angle, in degrees
clockwise. The angle must be between 0.0 (inclusive) and 360.0 (exclusive).
.TP 7
.BI "Option \*qScrollButton\*q \*q" int \*q
Designates a button as scroll button. If the
.BI ScrollMethod
is
.BI button
and the button is logically held down, x/y axis movement is converted into
scroll events.
.TP 7
.BI "Option \*qScrollMethod\*q \*q" string \*q
Enables a scroll method. Permitted values are
.BI none,
.BI twofinger,
.BI edge,
.BI button.
Not all devices support all options, if an option is unsupported, the
default scroll option for this device is used.
.TP 7
.BI "Option \*qSendEventsMode\*q \*q" (disabled|enabled|disabled-on-external-mouse) \*q
Sets the send events mode to disabled, enabled, or "disable when an external
mouse is connected".
.TP 7
.BI "Option \*qTapping\*q \*q" bool \*q
Enables or disables tap-to-click behavior.
.TP 7
.BI "Option \*qTappingButtonMap\*q \*q" (lrm|lmr) \*q
Set the button mapping for 1/2/3-finger taps to left/right/middle or
left/middle/right, respectively.
.TP 7
.BI "Option \*qTappingDrag\*q \*q" bool \*q
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 option
.B Tapping
to be enabled.
.TP 7
.BI "Option \*qTappingDragLock\*q \*q" bool \*q
Enables or disables drag lock during tapping behavior. When enabled, a
finger up during tap-and-drag will not immediately release the button. If
the finger is set down again within the timeout, the dragging process
continues.
.PP
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
@@ -181,22 +189,59 @@ on the device. The following properties are provided by the
.B libinput
driver.
.TP 7
.BI "libinput Tapping Enabled"
1 boolean value (8 bit, 0 or 1). 1 enables tapping
.BI "libinput Accel Speed"
1 32-bit float value, defines the pointer speed. Value range -1, 1
.TP 7
.BI "libinput Tapping Drag Lock Enabled"
1 boolean value (8 bit, 0 or 1). 1 enables drag lock during tapping
.BI "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.
.TP 7
.BI "libinput Calibration Matrix"
9 32-bit float values, representing a 3x3 calibration matrix, order is row
1, row 2, row 3
.TP 7
.BI "libinput Accel Speed"
1 32-bit float value, defines the pointer speed. Value range -1, 1
.BI "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.
.TP 7
.BI "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.
.TP 7
.BI "libinput Drag Lock Buttons"
Either one 8-bit value specifying the meta drag lock button, or a list of
button pairs. See section
.B BUTTON DRAG LOCK
for details.
.TP 7
.BI "libinput Horizontal Scrolling Enabled"
1 boolean value (8 bit, 0 or 1). Indicates whether horizontal scrolling
events are enabled or not.
.TP 7
.BI "libinput Left Handed Enabled"
1 boolean value (8 bit, 0 or 1). Indicates if left-handed mode is enabled or
disabled.
.TP 7
.BI "libinput Middle Emulation Enabled"
1 boolean value (8 bit, 0 or 1). Indicates if middle emulation is enabled or
disabled.
.TP 7
.BI "libinput Natural Scrolling Enabled"
1 boolean value (8 bit, 0 or 1). 1 enables natural scrolling
.TP 7
.BI "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.
.TP 7
.BI "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.
.TP 7
.BI "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.
.TP 7
.BI "libinput Send Events Modes Available"
2 boolean values (8 bit, 0 or 1), in order "disabled" and
"disabled-on-external-mouse". Indicates which send-event modes are available
@@ -207,52 +252,23 @@ on this device.
"disabled-on-external-mouse". Indicates which send-event modes is currently
enabled on this device.
.TP 7
.BI "libinput Left Handed Enabled"
1 boolean value (8 bit, 0 or 1). Indicates if left-handed mode is enabled or
disabled.
.BI "libinput Tapping Enabled"
1 boolean value (8 bit, 0 or 1). 1 enables tapping
.TP 7
.BI "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.
.BI "libinput Tapping Button Mapping Enabled"
2 boolean value (8 bit, 0 or 1), in order "lrm" and "lmr". Indicates which
button mapping is currently enabled on this device.
.TP 7
.BI "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.
.TP 7
.BI "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.
.TP 7
.BI "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.
.TP 7
.BI "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.
.TP 7
.BI "libinput Middle Emulation Enabled"
1 boolean value (8 bit, 0 or 1). Indicates if middle emulation is enabled or
disabled.
.BI "libinput Tapping Drag Lock Enabled"
1 boolean value (8 bit, 0 or 1). 1 enables drag lock during tapping
.TP 7
.BI "libinput Disable While Typing Enabled"
1 boolean value (8 bit, 0 or 1). Indicates if disable while typing is
enabled or disabled.
.PP
The above properties have a
Most properties have a
.BI "libinput <property name> Default"
equivalent that indicates the default value for this setting on this device.
.TP 7
.BI "libinput Drag Lock Buttons"
Either one 8-bit value specifying the meta drag lock button, or a list of
button pairs. See section
.B BUTTON DRAG LOCK
for details.
.TP 7
.BI "libinput Horizontal Scrolling Enabled"
1 boolean value (8 bit, 0 or 1). Indicates whether horizontal scrolling
events are enabled or not.
.SH BUTTON MAPPING
X clients receive events with logical button numbers, where 1, 2, 3

File diff suppressed because it is too large Load Diff