conf/40-libinput.conf | 7 + configure.ac | 2 debian/changelog | 11 ++ debian/compat | 2 debian/control | 3 debian/rules | 8 -- man/libinput.man | 184 +++++++++++++++++++++++++------------------------- src/xf86libinput.c | 133 ++++++++++++++++++++++-------------- 8 files changed, 198 insertions(+), 152 deletions(-)
New commits: commit 7db08cbba7dc95ed691a96a7862ed74e64d789b5 Author: Emilio Pozuelo Monfort <po...@debian.org> Date: Mon Dec 12 19:15:46 2016 +0100 Release to unstable diff --git a/debian/changelog b/debian/changelog index 56e81fb..a17b40c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xserver-xorg-input-libinput (0.23.0-1) UNRELEASED; urgency=medium +xserver-xorg-input-libinput (0.23.0-1) unstable; urgency=medium * New upstream release. * Bump debhelper compat to 10. @@ -7,7 +7,7 @@ xserver-xorg-input-libinput (0.23.0-1) UNRELEASED; urgency=medium that these days. * No need for --destdir=debian/tmp as we have multiple binary packages. - -- Emilio Pozuelo Monfort <po...@debian.org> Mon, 12 Dec 2016 19:09:05 +0100 + -- Emilio Pozuelo Monfort <po...@debian.org> Mon, 12 Dec 2016 19:15:41 +0100 xserver-xorg-input-libinput (0.22.0-1) unstable; urgency=medium commit 3451290f6d89bbc5f5b30711550266d64683c763 Author: Emilio Pozuelo Monfort <po...@debian.org> Date: Mon Dec 12 19:14:04 2016 +0100 Let debhelper specify the destdir diff --git a/debian/changelog b/debian/changelog index d2d4dc8..56e81fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,7 @@ xserver-xorg-input-libinput (0.23.0-1) UNRELEASED; urgency=medium + Let debhelper run autoreconf for us. * No need to pass --disable-silent-rules to configure, debhelper does that these days. + * No need for --destdir=debian/tmp as we have multiple binary packages. -- Emilio Pozuelo Monfort <po...@debian.org> Mon, 12 Dec 2016 19:09:05 +0100 diff --git a/debian/rules b/debian/rules index 4891efa..7aa35b3 100755 --- a/debian/rules +++ b/debian/rules @@ -4,10 +4,6 @@ override_dh_auto_configure: dh_auto_configure -- \ --libdir=\$${exec_prefix}/lib -# Install in debian/tmp to retain control through dh_install: -override_dh_auto_install: - dh_auto_install --destdir=debian/tmp - # Kill *.la files, and forget no-one: override_dh_install: find debian/tmp -name '*.la' -delete commit 4461d2e0f10faf7a8a71e3d1c708c696274495b6 Author: Emilio Pozuelo Monfort <po...@debian.org> Date: Mon Dec 12 19:13:12 2016 +0100 debhelper runs autoreconf for us diff --git a/debian/changelog b/debian/changelog index 0251d40..d2d4dc8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ xserver-xorg-input-libinput (0.23.0-1) UNRELEASED; urgency=medium * New upstream release. * Bump debhelper compat to 10. + + Let debhelper run autoreconf for us. * No need to pass --disable-silent-rules to configure, debhelper does that these days. diff --git a/debian/control b/debian/control index 6ff2591..d7aded2 100644 --- a/debian/control +++ b/debian/control @@ -5,7 +5,6 @@ Maintainer: Debian X Strike Force <debian-x@lists.debian.org> Uploaders: Timo Aaltonen <tjaal...@debian.org>, Build-Depends: debhelper (>= 10), - dh-autoreconf, libinput-dev (>= 1.4.901), libudev-dev, pkg-config, diff --git a/debian/rules b/debian/rules index 1b4e79b..4891efa 100755 --- a/debian/rules +++ b/debian/rules @@ -18,4 +18,4 @@ override_dh_shlibdeps: dh_shlibdeps -- --warnings=6 %: - dh $@ --with quilt,autoreconf,xsf --builddirectory=build/ + dh $@ --with quilt,xsf --builddirectory=build/ commit 82544f7d606ad0e5bc5b61938a888c32ea286a93 Author: Emilio Pozuelo Monfort <po...@debian.org> Date: Mon Dec 12 19:11:58 2016 +0100 Let debhelper disable silent rules diff --git a/debian/changelog b/debian/changelog index 8c5f5ae..0251d40 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ xserver-xorg-input-libinput (0.23.0-1) UNRELEASED; urgency=medium * New upstream release. * Bump debhelper compat to 10. + * No need to pass --disable-silent-rules to configure, debhelper does + that these days. -- Emilio Pozuelo Monfort <po...@debian.org> Mon, 12 Dec 2016 19:09:05 +0100 diff --git a/debian/rules b/debian/rules index d19a5b2..1b4e79b 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,7 @@ #!/usr/bin/make -f override_dh_auto_configure: - dh_auto_configure -- --disable-silent-rules \ + dh_auto_configure -- \ --libdir=\$${exec_prefix}/lib # Install in debian/tmp to retain control through dh_install: commit 7a974305feba7699965cbc1a724a5c7393b52146 Author: Emilio Pozuelo Monfort <po...@debian.org> Date: Mon Dec 12 19:10:46 2016 +0100 Bump debhelper compat to 10 diff --git a/debian/changelog b/debian/changelog index bc137d4..8c5f5ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ xserver-xorg-input-libinput (0.23.0-1) UNRELEASED; urgency=medium * New upstream release. + * Bump debhelper compat to 10. -- Emilio Pozuelo Monfort <po...@debian.org> Mon, 12 Dec 2016 19:09:05 +0100 diff --git a/debian/compat b/debian/compat index ec63514..f599e28 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -9 +10 diff --git a/debian/control b/debian/control index a5eee51..6ff2591 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: optional Maintainer: Debian X Strike Force <debian-x@lists.debian.org> Uploaders: Timo Aaltonen <tjaal...@debian.org>, Build-Depends: - debhelper (>= 9), + debhelper (>= 10), dh-autoreconf, libinput-dev (>= 1.4.901), libudev-dev, commit 5f8002492510bc2f28bcc03f79d48fc8ca7f7d9f Author: Emilio Pozuelo Monfort <po...@debian.org> Date: Mon Dec 12 19:10:16 2016 +0100 New upstream release diff --git a/debian/changelog b/debian/changelog index 59aa9ca..bc137d4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +xserver-xorg-input-libinput (0.23.0-1) UNRELEASED; urgency=medium + + * New upstream release. + + -- Emilio Pozuelo Monfort <po...@debian.org> Mon, 12 Dec 2016 19:09:05 +0100 + xserver-xorg-input-libinput (0.22.0-1) unstable; urgency=medium * New upstream release. commit 1c3ce3ce3c315213511735db1b0fdd74ca8442d0 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Mon Dec 12 14:54:00 2016 +1000 xf86-input-libinput 0.23.0 Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/configure.ac b/configure.ac index 9894817..7a1918b 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-input-libinput], - [0.22.0], + [0.23.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-input-libinput]) AC_CONFIG_SRCDIR([Makefile.am]) commit 4d481ea7c80dad9f53b47c026959c25ad9da5211 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Mon Dec 5 14:25:31 2016 +1000 Fix default scroll button number Was exposing the evdev code rather than the xorg code. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Hans de Goede <hdego...@redhat.com> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index 747e84b..b130a77 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -4386,6 +4386,7 @@ LibinputInitScrollMethodsProperty(DeviceIntPtr dev, return; scroll_button = libinput_device_config_scroll_get_default_button(device); + scroll_button = btn_linux2xorg(scroll_button); prop_scroll_button_default = LibinputMakeProperty(dev, LIBINPUT_PROP_SCROLL_BUTTON_DEFAULT, XA_CARDINAL, 32, commit 72bac84df9ce72f2baf730655ecc23f1692d1e64 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Nov 15 11:23:08 2016 +1000 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.hutte...@who-t.net> Reviewed-by: Hans de Goede <hdego...@redhat.com> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index 6792d1c..747e84b 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -2850,7 +2850,7 @@ xf86libinput_pre_init(InputDriverPtr drv, struct xf86libinput *driver_data = NULL; struct xf86libinput_device *shared_device = NULL; struct libinput *libinput = NULL; - struct libinput_device *device; + struct libinput_device *device = NULL; char *path = NULL; bool is_subdevice; @@ -2885,7 +2885,28 @@ xf86libinput_pre_init(InputDriverPtr drv, } is_subdevice = xf86libinput_is_subdevice(pInfo); - if (!is_subdevice) { + if (is_subdevice) { + InputInfoPtr parent; + struct xf86libinput *parent_driver_data; + + parent = xf86libinput_get_parent(pInfo); + if (!parent) { + xf86IDrvMsg(pInfo, X_ERROR, "Failed to find parent device\n"); + goto fail; + } + + parent_driver_data = parent->private; + if (!parent_driver_data) /* parent already removed again */ + goto fail; + + xf86IDrvMsg(pInfo, X_INFO, "is a virtual subdevice\n"); + shared_device = xf86libinput_shared_ref(parent_driver_data->shared_device); + device = shared_device->device; + if (!device) + xf86IDrvMsg(pInfo, X_ERROR, "Parent device not available\n"); + } + + if (!device) { device = libinput_path_add_device(libinput, path); if (!device) { xf86IDrvMsg(pInfo, X_ERROR, "Failed to create a device for %s\n", path); @@ -2903,23 +2924,6 @@ xf86libinput_pre_init(InputDriverPtr drv, libinput_device_unref(device); goto fail; } - } else { - InputInfoPtr parent; - struct xf86libinput *parent_driver_data; - - parent = xf86libinput_get_parent(pInfo); - if (!parent) { - xf86IDrvMsg(pInfo, X_ERROR, "Failed to find parent device\n"); - goto fail; - } - - parent_driver_data = parent->private; - if (!parent_driver_data) /* parent already removed again */ - goto fail; - - xf86IDrvMsg(pInfo, X_INFO, "is a virtual subdevice\n"); - shared_device = xf86libinput_shared_ref(parent_driver_data->shared_device); - device = shared_device->device; } pInfo->private = driver_data; commit 0b073d90e63d644401769c61611638d65a4eaf44 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Fri Nov 11 12:36:01 2016 +1000 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.hutte...@who-t.net> Reviewed-by: Hans de Goede <hdego...@redhat.com> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index a6481bc..6792d1c 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -3494,7 +3494,28 @@ LibinputSetPropertyLeftHanded(DeviceIntPtr dev, if (!supported && left_handed) return BadValue; } else { + struct xf86libinput *other; + driver_data->options.left_handed = *data; + + xorg_list_for_each_entry(other, + &driver_data->shared_device->device_list, + shared_device_link) { + DeviceIntPtr other_device = other->pInfo->dev; + + if (other->options.left_handed == *data) + continue; + + XIChangeDeviceProperty(other_device, + atom, + val->type, + val->format, + PropModeReplace, + val->size, + val->data, + TRUE); + } + } return Success; commit 669fbb098516e0bdf6c62c52c1bcb12580de069b Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Nov 1 10:42:19 2016 +1000 Drop indentation for matrix handling Exit early if the string is NULL to reduce indentation. No functional changes. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index 07b4d4e..a6481bc 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -2331,6 +2331,7 @@ xf86libinput_parse_calibration_option(InputInfoPtr pInfo, { char *str; float matrix[9] = { 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0}; + int num_calibration; memcpy(matrix_out, matrix, sizeof(matrix)); @@ -2340,27 +2341,29 @@ xf86libinput_parse_calibration_option(InputInfoPtr pInfo, libinput_device_config_calibration_get_matrix(device, matrix); memcpy(matrix_out, matrix, sizeof(matrix)); - if ((str = xf86CheckStrOption(pInfo->options, - "CalibrationMatrix", - NULL))) { - int num_calibration = sscanf(str, "%f %f %f %f %f %f %f %f %f ", - &matrix[0], &matrix[1], - &matrix[2], &matrix[3], - &matrix[4], &matrix[5], - &matrix[6], &matrix[7], - &matrix[8]); - if (num_calibration != 9) { - xf86IDrvMsg(pInfo, X_ERROR, - "Invalid matrix: %s, using default\n", str); - } else if (libinput_device_config_calibration_set_matrix(device, - matrix) == - LIBINPUT_CONFIG_STATUS_SUCCESS) { - memcpy(matrix_out, matrix, sizeof(matrix)); - } else - xf86IDrvMsg(pInfo, X_ERROR, - "Failed to apply matrix: %s, using default\n", str); - free(str); - } + str = xf86CheckStrOption(pInfo->options, + "CalibrationMatrix", + NULL); + if (!str) + return; + + num_calibration = sscanf(str, "%f %f %f %f %f %f %f %f %f ", + &matrix[0], &matrix[1], + &matrix[2], &matrix[3], + &matrix[4], &matrix[5], + &matrix[6], &matrix[7], + &matrix[8]); + if (num_calibration != 9) { + xf86IDrvMsg(pInfo, X_ERROR, + "Invalid matrix: %s, using default\n", str); + } else if (libinput_device_config_calibration_set_matrix(device, + matrix) == + LIBINPUT_CONFIG_STATUS_SUCCESS) { + memcpy(matrix_out, matrix, sizeof(matrix)); + } else + xf86IDrvMsg(pInfo, X_ERROR, + "Failed to apply matrix: %s, using default\n", str); + free(str); } static inline BOOL commit c4f0a9bcb846f70b85a285e8acea8fe086abdccb Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Nov 1 10:06:03 2016 +1000 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.hutte...@who-t.net> diff --git a/conf/40-libinput.conf b/conf/40-libinput.conf index 97afd07..7b7162e 100644 --- a/conf/40-libinput.conf +++ b/conf/40-libinput.conf @@ -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 commit a61e156326197dbbf1c1294693946c504af9daee Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Mon Oct 24 14:23:16 2016 +1000 man: sort the options and properties alphabetically Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/man/libinput.man b/man/libinput.man index 92e181e..36775e6 100644 --- a/man/libinput.man +++ b/man/libinput.man @@ -41,15 +41,6 @@ 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 @@ -89,6 +80,46 @@ 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 \*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 +of the same button is required. +.IP +If the option is a single button number, that button acts as the +"meta" locking button for the next button number. See section +.B BUTTON DRAG LOCK +for details. +.IP +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 +.B BUTTON DRAG LOCK +for details. +.IP +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 @@ -99,6 +130,10 @@ buttons simultaneously produces a middle mouse button click. .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 @@ -116,20 +151,10 @@ Enables a scroll method. Permitted values are 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 \*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 \*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 \*qTapping\*q \*q" bool \*q Enables or disables tap-to-click behavior. .TP 7 @@ -150,31 +175,6 @@ 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 \*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 -of the same button is required. -.IP -If the option is a single button number, that button acts as the -"meta" locking button for the next button number. See section -.B BUTTON DRAG LOCK -for details. -.IP -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 -.B BUTTON DRAG LOCK -for details. -.IP -For both meta and button pair configuration, the button numbers are -device button numbers, i.e. the -.B ButtonMapping -applies after drag lock. .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 @@ -189,40 +189,51 @@ 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 -.TP 7 -.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. +.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 Natural Scrolling Enabled" -1 boolean value (8 bit, 0 or 1). 1 enables natural scrolling +.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 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 -on this device. +.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 Send Events Mode Enabled" -2 boolean values (8 bit, 0 or 1), in order "disabled" and -"disabled-on-external-mouse". Indicates which send-event modes is currently -enabled on this device. +.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. @@ -231,44 +242,33 @@ Indicates which scroll methods are available on this device. 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. +.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 +on this device. .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. +.BI "libinput Send Events Mode Enabled" +2 boolean values (8 bit, 0 or 1), in order "disabled" and +"disabled-on-external-mouse". Indicates which send-event modes is currently +enabled 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. +.BI "libinput Tapping Enabled" +1 boolean value (8 bit, 0 or 1). 1 enables tapping .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 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 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. -.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. .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 commit 552cbaf466a0aede8f789aa2013795f3b9ac253d Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Oct 26 15:03:48 2016 +1000 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.hutte...@who-t.net> Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index 8ee6cbe..07b4d4e 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -4092,7 +4092,8 @@ LibinputInitAccelProperty(DeviceIntPtr dev, enum libinput_config_accel_profile profile; BOOL profiles[2] = {FALSE}; - if (!libinput_device_config_accel_is_available(device)) + if (!libinput_device_config_accel_is_available(device) || + driver_data->capabilities & CAP_TABLET) return; prop_accel = LibinputMakeProperty(dev, @@ -4260,7 +4261,8 @@ LibinputInitLeftHandedProperty(DeviceIntPtr dev, { BOOL left_handed = driver_data->options.left_handed; - if (!libinput_device_config_left_handed_is_available(device)) + if (!libinput_device_config_left_handed_is_available(device) || + driver_data->capabilities & CAP_TABLET) return; prop_left_handed = LibinputMakeProperty(dev, commit bc91d337d7cf765fd23e47783a498e4b3b334f39 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Thu Oct 20 08:42:53 2016 +1000 Fix potential NULL pointer dereferencing Found by coverity. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index a3260ae..8ee6cbe 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -2968,10 +2968,12 @@ xf86libinput_pre_init(InputDriverPtr drv, return Success; fail: - if (driver_data->valuators) - valuator_mask_free(&driver_data->valuators); - if (driver_data->valuators_unaccelerated) - valuator_mask_free(&driver_data->valuators_unaccelerated); + if (driver_data) { + if (driver_data->valuators) + valuator_mask_free(&driver_data->valuators); + if (driver_data->valuators_unaccelerated) + valuator_mask_free(&driver_data->valuators_unaccelerated); + } free(path); if (shared_device) xf86libinput_shared_unref(shared_device); commit c8d2293873d3f86e5cefffa5c51cfe423d09c948 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Thu Oct 20 08:38:24 2016 +1000 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.hutte...@who-t.net> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index 3ac0df3..a3260ae 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -1162,8 +1162,7 @@ swap_registered_device(InputInfoPtr pInfo) int sigstate = xf86BlockSIGIO(); #endif xf86RemoveEnabledDevice(pInfo); - if (next) /* shouldn't ever be NULL anyway */ - xf86AddEnabledDevice(next); + xf86AddEnabledDevice(next); driver_context.registered_InputInfoPtr = next; #if HAVE_THREADED_INPUT input_unlock(); commit a7014aa8c619ed9bc1cd5c0b38428fd88f1bc8d4 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Thu Oct 20 08:27:01 2016 +1000 Remove two unused variables They were never used anyway Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index 8646c6d..3ac0df3 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -126,8 +126,6 @@ struct xf86libinput { struct { int vdist; int hdist; - int vdist_remainder; - int hdist_remainder; } scroll; struct { commit bf7fffde520277e13b350950de9dc5bf89858951 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Oct 19 11:42:57 2016 +1000 Don't init the horiz scroll property on non-pointer devices Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/src/xf86libinput.c b/src/xf86libinput.c index 24219a6..8646c6d 100644 --- a/src/xf86libinput.c +++ b/src/xf86libinput.c @@ -4653,6 +4653,9 @@ LibinputInitHorizScrollProperty(DeviceIntPtr dev, { BOOL enabled = driver_data->options.horiz_scrolling_enabled; + if ((driver_data->capabilities & CAP_POINTER) == 0) + return; + prop_horiz_scroll = LibinputMakeProperty(dev, LIBINPUT_PROP_HORIZ_SCROLL_ENABLED, XA_INTEGER, 8,