Hello community,

here is the log from the commit of package libinput for openSUSE:Factory 
checked in at 2019-10-23 15:36:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libinput (Old)
 and      /work/SRC/openSUSE:Factory/.libinput.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libinput"

Wed Oct 23 15:36:38 2019 rev:79 rq:739081 version:1.14.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/libinput/libinput.changes        2019-08-27 
15:48:57.595846393 +0200
+++ /work/SRC/openSUSE:Factory/.libinput.new.2352/libinput.changes      
2019-10-23 15:36:40.449738402 +0200
@@ -1,0 +2,11 @@
+Thu Oct 17 07:35:26 UTC 2019 - Jan Engelhardt <jeng...@inai.de>
+
+- Update to release 1.14.2
+  * Added quirks for specific devices, notably the Logitech MX
+    Master 2S and 3, Thinkpad 13 G2, HP Elite x2 1013 G3 and the
+    Lenovo T490s and X200.
+  * For everyone else, the thumb detection is now less
+    aggressive, fixing a few issues seen where two-finger
+    scrolling was misdetected as pinch gestures.
+
+-------------------------------------------------------------------

Old:
----
  libinput-1.14.1.tar.xz
  libinput-1.14.1.tar.xz.sig

New:
----
  libinput-1.14.2.tar.xz
  libinput-1.14.2.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libinput.spec ++++++
--- /var/tmp/diff_new_pack.4zHvvU/_old  2019-10-23 15:36:41.081739128 +0200
+++ /var/tmp/diff_new_pack.4zHvvU/_new  2019-10-23 15:36:41.081739128 +0200
@@ -18,12 +18,12 @@
 
 Name:           libinput
 %define lname  libinput10
-Version:        1.14.1
+Version:        1.14.2
 Release:        0
 Summary:        Input device and event processing library
 License:        MIT
-Group:          Development/Libraries/C and C++
-Url:            http://www.freedesktop.org/wiki/Software/libinput/
+Group:          c development hardware
+URL:            https://www.freedesktop.org/wiki/Software/libinput/
 
 #Git-Clone:    https://gitlab.freedesktop.org/libinput/libinput.git
 #Git-Web:      https://gitlab.freedesktop.org/libinput/libinput/
@@ -56,7 +56,7 @@
 
 %package udev
 Summary:        Input device and event processing library integration into udev
-Group:          System/Base
+Group:          base
 
 %description udev
 The libinput udev helper rule will set the LIBINPUT_DEVICE_GROUP
@@ -66,7 +66,7 @@
 
 %package -n %lname
 Summary:        Input device and event processing library
-Group:          System/Libraries
+Group:          c development hardware
 Recommends:     %name-udev
 
 %description -n %lname
@@ -80,7 +80,7 @@
 
 %package tools
 Summary:        Utilities to display libinput configuration
-Group:          System/X11/Utilities
+Group:          hardware
 
 %description tools
 This tool lists the locally recognised devices and their respective
@@ -88,7 +88,7 @@
 
 %package devel
 Summary:        Development files for the Input Device Library
-Group:          Development/Libraries/C and C++
+Group:          c development
 Requires:       %lname = %version
 
 %description devel

++++++ libinput-1.14.1.tar.xz -> libinput-1.14.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/meson.build 
new/libinput-1.14.2/meson.build
--- old/libinput-1.14.1/meson.build     2019-08-26 04:49:02.000000000 +0200
+++ new/libinput-1.14.2/meson.build     2019-10-17 03:26:59.000000000 +0200
@@ -1,5 +1,5 @@
 project('libinput', 'c',
-       version : '1.14.1',
+       version : '1.14.2',
        license : 'MIT/Expat',
        default_options : [ 'c_std=gnu99', 'warning_level=2' ],
        meson_version : '>= 0.41.0')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/quirks/30-vendor-logitech.quirks 
new/libinput-1.14.2/quirks/30-vendor-logitech.quirks
--- old/libinput-1.14.1/quirks/30-vendor-logitech.quirks        2019-08-26 
04:49:02.000000000 +0200
+++ new/libinput-1.14.2/quirks/30-vendor-logitech.quirks        2019-10-17 
03:26:59.000000000 +0200
@@ -45,3 +45,13 @@
 MatchVendor=0x046D
 MatchProduct=0x4011
 AttrPalmPressureThreshold=400
+
+[Logitech MX Master 2S]
+MatchVendor=0x46D
+MatchProduct=0x4069
+ModelInvertHorizontalScrolling=1
+
+[Logitech MX Master 3]
+MatchVendor=0x46D
+MatchProduct=0x4082
+ModelInvertHorizontalScrolling=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/quirks/50-system-hp.quirks 
new/libinput-1.14.2/quirks/50-system-hp.quirks
--- old/libinput-1.14.1/quirks/50-system-hp.quirks      2019-08-26 
04:49:02.000000000 +0200
+++ new/libinput-1.14.2/quirks/50-system-hp.quirks      2019-10-17 
03:26:59.000000000 +0200
@@ -41,3 +41,21 @@
 AttrPressureRange=55:40
 AttrThumbPressureThreshold=90
 AttrPalmPressureThreshold=100
+
+[HP Elite x2 1013 G3 Tablet Mode Switch]
+MatchName=*Intel Virtual Button*
+MatchDMIModalias=dmi:*svnHP:pnHPElitex21013G3:*
+ModelTabletModeSwitchUnreliable=1
+
+[HP Elite x2 1013 G3 Touchpad]
+MatchUdevType=touchpad
+MatchBus=usb
+MatchVendor=0x044E
+MatchProduct=0x1221
+AttrTPKComboLayout=below
+
+[HP Elite x2 1013 G3 Keyboard]
+MatchUdevType=keyboard
+MatchBus=ps2
+MatchDMIModalias=dmi:*svnHP:pnHPElitex21013G3:*
+AttrKeyboardIntegration=external
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/quirks/50-system-lenovo.quirks 
new/libinput-1.14.2/quirks/50-system-lenovo.quirks
--- old/libinput-1.14.1/quirks/50-system-lenovo.quirks  2019-08-26 
04:49:02.000000000 +0200
+++ new/libinput-1.14.2/quirks/50-system-lenovo.quirks  2019-10-17 
03:26:59.000000000 +0200
@@ -5,6 +5,12 @@
 MatchDMIModalias=dmi:*svnLENOVO:*:pvrThinkPad*:*
 AttrThumbPressureThreshold=100
 
+[Lenovo ThinkPad 13 2nd Generation TrackPoint]
+MatchUdevType=pointingstick
+MatchName=*ETPS/2 Elantech TrackPoint*
+MatchDMIModalias=dmi:*svnLENOVO:*:pvrThinkPad132ndGen*
+AttrTrackpointMultiplier=1.75
+
 [Lenovo x230 Touchpad]
 MatchName=*SynPS/2 Synaptics TouchPad
 MatchDMIModalias=dmi:*svnLENOVO:*:pvrThinkPadX230*
@@ -30,6 +36,16 @@
 MatchDMIModalias=dmi:*svnLENOVO:*:pvrThinkPadT480s*
 ModelLenovoT480sTouchpad=1
 
+[Lenovo T490s Touchpad]
+MatchName=Elan Touchpad
+MatchDMIModalias=dmi:*svnLENOVO:*:pvrThinkPadT490s*
+ModelLenovoT490sTouchpad=1
+
+[Lenovo T490s Trackpoint]
+MatchName=*TPPS/2 IBM TrackPoint
+MatchDMIModalias=dmi:*svnLENOVO:*:pvrThinkPadT490s:*
+AttrTrackpointMultiplier=0.4
+
 [Lenovo L380 Touchpad]
 MatchName=Elan Touchpad
 MatchDMIModalias=dmi:*svnLENOVO:*:pvrThinkPadL380*
@@ -146,6 +162,13 @@
 MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX230Tablet:*
 ModelTabletModeNoSuspend=1
 
+# Special bezel button deactivation with
+# keyboard also applies to X200 Tablet
+[Lenovo X200 Tablet]
+MatchName=AT Translated Set 2 keyboard
+MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX200Tablet:*
+ModelTabletModeNoSuspend=1
+
 # Lenovo MIIX 720 comes with a detachable keyboard. We must not disable
 # the keyboard because some keys are still accessible on the screen and
 # volume rocker. See
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/src/evdev-mt-touchpad-gestures.c 
new/libinput-1.14.2/src/evdev-mt-touchpad-gestures.c
--- old/libinput-1.14.1/src/evdev-mt-touchpad-gestures.c        2019-08-26 
04:49:02.000000000 +0200
+++ new/libinput-1.14.2/src/evdev-mt-touchpad-gestures.c        2019-10-17 
03:26:59.000000000 +0200
@@ -481,6 +481,12 @@
        double inner = 1.5; /* inner threshold in mm - count this touch */
        double outer = 4.0; /* outer threshold in mm - ignore other touch */
 
+       /* If we have more fingers than slots, we don't know where the
+        * fingers are. Default to swipe */
+       if (tp->gesture.enabled && tp->gesture.finger_count > 2 &&
+           tp->gesture.finger_count > tp->num_slots)
+               return GESTURE_STATE_SWIPE;
+
        /* Need more margin for error when there are more fingers */
        outer += 2.0 * (tp->gesture.finger_count - 2);
        inner += 0.5 * (tp->gesture.finger_count - 2);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/src/evdev-mt-touchpad-thumb.c 
new/libinput-1.14.2/src/evdev-mt-touchpad-thumb.c
--- old/libinput-1.14.1/src/evdev-mt-touchpad-thumb.c   2019-08-26 
04:49:02.000000000 +0200
+++ new/libinput-1.14.2/src/evdev-mt-touchpad-thumb.c   2019-10-17 
03:26:59.000000000 +0200
@@ -335,15 +335,18 @@
 
        /* Position-based thumb detection: When a new touch arrives, check the
         * two lowest touches. If they qualify for 2-finger scrolling, clear
-        * thumb status. If not, mark the lower touch (based on pinch_eligible)
-        * as either PINCH or SUPPRESSED.
+        * thumb status.
+        *
+        * If they were in distinct diagonal position, then mark the lower
+        * touch (based on pinch_eligible) as either PINCH or SUPPRESSED. If
+        * we're too close together for a thumb, lift that.
         */
-       if (mm.y > SCROLL_MM_Y) {
+       if (mm.y > SCROLL_MM_Y && mm.x > SCROLL_MM_X) {
                if (tp->thumb.pinch_eligible)
                        tp_thumb_pinch(tp, first);
                else
                        tp_thumb_suppress(tp, first);
-       } else {
+       } else if (mm.x < SCROLL_MM_X && mm.y < SCROLL_MM_Y) {
                tp_thumb_lift(tp);
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/src/evdev.c 
new/libinput-1.14.2/src/evdev.c
--- old/libinput-1.14.1/src/evdev.c     2019-08-26 04:49:02.000000000 +0200
+++ new/libinput-1.14.2/src/evdev.c     2019-10-17 03:26:59.000000000 +0200
@@ -357,6 +357,11 @@
        struct normalized_coords delta = *delta_in;
        struct discrete_coords discrete = *discrete_in;
 
+       if (device->scroll.invert_horizontal_scrolling) {
+               delta.x *= -1;
+               discrete.x *= -1;
+       }
+
        if (device->scroll.natural_scrolling_enabled) {
                delta.x *= -1;
                delta.y *= -1;
@@ -1841,6 +1846,10 @@
                return NULL;
        }
 
+       if (evdev_device_has_model_quirk(device, 
QUIRK_MODEL_INVERT_HORIZONTAL_SCROLLING)) {
+               device->scroll.invert_horizontal_scrolling = true;
+       }
+
        return fallback_dispatch_create(&device->base);
 }
 
@@ -1953,6 +1962,7 @@
         * https://gitlab.freedesktop.org/libinput/libinput/issues/177 and
         * https://gitlab.freedesktop.org/libinput/libinput/issues/234 */
        if (evdev_device_has_model_quirk(device, 
QUIRK_MODEL_LENOVO_T480S_TOUCHPAD) ||
+           evdev_device_has_model_quirk(device, 
QUIRK_MODEL_LENOVO_T490S_TOUCHPAD) ||
            evdev_device_has_model_quirk(device, 
QUIRK_MODEL_LENOVO_L380_TOUCHPAD))
                libevdev_enable_property(device->evdev,
                                         INPUT_PROP_BUTTONPAD);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/src/evdev.h 
new/libinput-1.14.2/src/evdev.h
--- old/libinput-1.14.1/src/evdev.h     2019-08-26 04:49:02.000000000 +0200
+++ new/libinput-1.14.2/src/evdev.h     2019-10-17 03:26:59.000000000 +0200
@@ -216,6 +216,10 @@
                 * used at runtime to enable/disable the feature */
                bool natural_scrolling_enabled;
 
+               /* set during device init to invert direction of
+                * horizontal scrolling */
+               bool invert_horizontal_scrolling;
+
                /* angle per REL_WHEEL click in degrees */
                struct wheel_angle wheel_click_angle;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/src/quirks.c 
new/libinput-1.14.2/src/quirks.c
--- old/libinput-1.14.1/src/quirks.c    2019-08-26 04:49:02.000000000 +0200
+++ new/libinput-1.14.2/src/quirks.c    2019-10-17 03:26:59.000000000 +0200
@@ -239,10 +239,12 @@
        case QUIRK_MODEL_HP_PAVILION_DM4_TOUCHPAD:      return 
"ModelHPPavilionDM4Touchpad";
        case QUIRK_MODEL_HP_STREAM11_TOUCHPAD:          return 
"ModelHPStream11Touchpad";
        case QUIRK_MODEL_HP_ZBOOK_STUDIO_G3:            return 
"ModelHPZBookStudioG3";
+       case QUIRK_MODEL_INVERT_HORIZONTAL_SCROLLING:   return 
"ModelInvertHorizontalScrolling";
        case QUIRK_MODEL_LENOVO_L380_TOUCHPAD:          return 
"ModelLenovoL380Touchpad";
        case QUIRK_MODEL_LENOVO_SCROLLPOINT:            return 
"ModelLenovoScrollPoint";
        case QUIRK_MODEL_LENOVO_T450_TOUCHPAD:          return 
"ModelLenovoT450Touchpad";
        case QUIRK_MODEL_LENOVO_T480S_TOUCHPAD:         return 
"ModelLenovoT480sTouchpad";
+       case QUIRK_MODEL_LENOVO_T490S_TOUCHPAD:         return 
"ModelLenovoT490sTouchpad";
        case QUIRK_MODEL_LENOVO_X230:                   return 
"ModelLenovoX230";
        case QUIRK_MODEL_SYNAPTICS_SERIAL_TOUCHPAD:     return 
"ModelSynapticsSerialTouchpad";
        case QUIRK_MODEL_SYSTEM76_BONOBO:               return 
"ModelSystem76Bonobo";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/src/quirks.h 
new/libinput-1.14.2/src/quirks.h
--- old/libinput-1.14.1/src/quirks.h    2019-08-26 04:49:02.000000000 +0200
+++ new/libinput-1.14.2/src/quirks.h    2019-10-17 03:26:59.000000000 +0200
@@ -71,10 +71,12 @@
        QUIRK_MODEL_HP_PAVILION_DM4_TOUCHPAD,
        QUIRK_MODEL_HP_STREAM11_TOUCHPAD,
        QUIRK_MODEL_HP_ZBOOK_STUDIO_G3,
+       QUIRK_MODEL_INVERT_HORIZONTAL_SCROLLING,
        QUIRK_MODEL_LENOVO_L380_TOUCHPAD,
        QUIRK_MODEL_LENOVO_SCROLLPOINT,
        QUIRK_MODEL_LENOVO_T450_TOUCHPAD,
        QUIRK_MODEL_LENOVO_T480S_TOUCHPAD,
+       QUIRK_MODEL_LENOVO_T490S_TOUCHPAD,
        QUIRK_MODEL_LENOVO_X230,
        QUIRK_MODEL_SYNAPTICS_SERIAL_TOUCHPAD,
        QUIRK_MODEL_SYSTEM76_BONOBO,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/test/litest-int.h 
new/libinput-1.14.2/test/litest-int.h
--- old/libinput-1.14.1/test/litest-int.h       2019-08-26 04:49:02.000000000 
+0200
+++ new/libinput-1.14.2/test/litest-int.h       2019-10-17 03:26:59.000000000 
+0200
@@ -77,7 +77,7 @@
        const char *udev_rule;
        const char *quirk_file;
 
-       const struct key_value_str udev_properties[];
+       const struct key_value_str udev_properties[32];
 };
 
 struct litest_device_interface {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.14.1/test/test-gestures.c 
new/libinput-1.14.2/test/test-gestures.c
--- old/libinput-1.14.1/test/test-gestures.c    2019-08-26 04:49:02.000000000 
+0200
+++ new/libinput-1.14.2/test/test-gestures.c    2019-10-17 03:26:59.000000000 
+0200
@@ -259,6 +259,58 @@
 }
 END_TEST
 
+START_TEST(gestures_swipe_3fg_btntool_pinch_like)
+{
+       struct litest_device *dev = litest_current_device();
+       struct libinput *li = dev->libinput;
+       struct libinput_event *event;
+       struct libinput_event_gesture *gevent;
+
+       if (libevdev_get_num_slots(dev->evdev) > 2 ||
+           !libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_TRIPLETAP) ||
+           !libinput_device_has_capability(dev->libinput_device,
+                                           LIBINPUT_DEVICE_CAP_GESTURE))
+               return;
+
+       litest_drain_events(li);
+
+       /* Technically a pinch position + pinch movement, but expect swipe
+        * for nfingers > nslots */
+       litest_touch_down(dev, 0, 20, 60);
+       litest_touch_down(dev, 1, 50, 20);
+       litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0);
+       litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1);
+       litest_event(dev, EV_SYN, SYN_REPORT, 0);
+
+       libinput_dispatch(li);
+       litest_touch_move_to(dev, 0, 20, 60, 10, 80, 20);
+       libinput_dispatch(li);
+
+       event = libinput_get_event(li);
+       gevent = litest_is_gesture_event(event,
+                                        LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN,
+                                        3);
+       libinput_event_destroy(event);
+
+       while ((event = libinput_get_event(li)) != NULL) {
+               gevent = litest_is_gesture_event(event,
+                                                
LIBINPUT_EVENT_GESTURE_SWIPE_UPDATE,
+                                                3);
+               libinput_event_destroy(event);
+       }
+
+       litest_touch_up(dev, 0);
+       litest_touch_up(dev, 1);
+       libinput_dispatch(li);
+       event = libinput_get_event(li);
+       gevent = litest_is_gesture_event(event,
+                                        LIBINPUT_EVENT_GESTURE_SWIPE_END,
+                                        3);
+       ck_assert(!libinput_event_gesture_get_cancelled(gevent));
+       libinput_event_destroy(event);
+}
+END_TEST
+
 START_TEST(gestures_swipe_4fg)
 {
        struct litest_device *dev = litest_current_device();
@@ -1021,6 +1073,7 @@
 
        litest_add_ranged("gestures:swipe", gestures_swipe_3fg, 
LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
        litest_add_ranged("gestures:swipe", gestures_swipe_3fg_btntool, 
LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
+       litest_add("gestures:swipe", gestures_swipe_3fg_btntool_pinch_like, 
LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
        litest_add_ranged("gestures:swipe", gestures_swipe_4fg, 
LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
        litest_add_ranged("gestures:swipe", gestures_swipe_4fg_btntool, 
LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
        litest_add_ranged("gestures:pinch", gestures_pinch, LITEST_TOUCHPAD, 
LITEST_SINGLE_TOUCH, &cardinals);


Reply via email to