Hello community, here is the log from the commit of package libinput for openSUSE:Factory checked in at 2018-07-14 20:14:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libinput (Old) and /work/SRC/openSUSE:Factory/.libinput.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libinput" Sat Jul 14 20:14:31 2018 rev:64 rq:621692 version:1.11.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libinput/libinput.changes 2018-06-25 11:36:06.251425717 +0200 +++ /work/SRC/openSUSE:Factory/.libinput.new/libinput.changes 2018-07-14 20:14:34.126552391 +0200 @@ -1,0 +2,9 @@ +Sat Jul 7 20:46:41 UTC 2018 - bjorn....@gmail.com + +- Update to version 1.11.2: + * Add a trackpoint range entry for the Lenovo X270. + * Better lid handling for the Lenovo Thinkpad Yoga models. + * Fixed touchpad palm detection on the Lenovo X1 Carbon 6th. + * Change pressure ranges for the XPS13 9333. + +------------------------------------------------------------------- Old: ---- libinput-1.11.1.tar.xz libinput-1.11.1.tar.xz.sig New: ---- libinput-1.11.2.tar.xz libinput-1.11.2.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libinput.spec ++++++ --- /var/tmp/diff_new_pack.qDUQpU/_old 2018-07-14 20:14:34.574553525 +0200 +++ /var/tmp/diff_new_pack.qDUQpU/_new 2018-07-14 20:14:34.574553525 +0200 @@ -22,7 +22,7 @@ Name: libinput %define lname libinput10 -Version: 1.11.1 +Version: 1.11.2 Release: 0 Summary: Input device and event processing library License: MIT ++++++ libinput-1.11.1.tar.xz -> libinput-1.11.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/doc/building.dox new/libinput-1.11.2/doc/building.dox --- old/libinput-1.11.1/doc/building.dox 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/doc/building.dox 2018-07-03 06:47:19.000000000 +0200 @@ -117,9 +117,18 @@ @subsection building_dependencies Build dependencies libinput has a few build-time dependencies that must be installed prior to -running configure. In most cases, it is sufficient to install the -dependencies that your distribution uses to build the libinput package. -These can be installed with one of the following commands: +running configure. + +@note The build dependencies for some distributions can be found in the +<a href="https://gitlab.freedesktop.org/libinput/libinput/blob/master/.gitlab-ci.yml"> +GitLab Continuous Integration file</a>. Search for <b>FEDORA_RPMS</b> in the +<b>variables:</b> definition and check the list for an entry for your +distribution. + + +In most cases, it is sufficient to install the dependencies that your +distribution uses to build the libinput package. These can be installed +with one of the following commands: <ul> <li><b>Debian/Ubuntu</b> based distributions: ```sudo apt-get build-dep diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/doc/pointer-acceleration.dox new/libinput-1.11.2/doc/pointer-acceleration.dox --- old/libinput-1.11.1/doc/pointer-acceleration.dox 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/doc/pointer-acceleration.dox 2018-07-03 06:47:19.000000000 +0200 @@ -12,7 +12,7 @@ @section ptraccel-profiles Pointer acceleration profiles The profile decides the general method of pointer acceleration. -libinput currently supports two profiles: "adaptive" and "flat". The aptive +libinput currently supports two profiles: "adaptive" and "flat". The adaptive profile is the default profile for all devices and takes the current speed of the device into account when deciding on acceleration. The flat profile is simply a constant factor applied to all device deltas, regardless of the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/meson.build new/libinput-1.11.2/meson.build --- old/libinput-1.11.1/meson.build 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/meson.build 2018-07-03 06:47:19.000000000 +0200 @@ -1,5 +1,5 @@ project('libinput', 'c', 'cpp', - version : '1.11.1', + version : '1.11.2', license : 'MIT/Expat', default_options : [ 'c_std=gnu99', 'warning_level=2' ], meson_version : '>= 0.40.0') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/src/evdev-fallback.c new/libinput-1.11.2/src/evdev-fallback.c --- old/libinput-1.11.1/src/evdev-fallback.c 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/src/evdev-fallback.c 2018-07-03 06:47:19.000000000 +0200 @@ -1012,6 +1012,9 @@ struct fallback_dispatch *dispatch = fallback_dispatch(evdev_dispatch); struct evdev_paired_keyboard *kbd, *tmp; + libinput_timer_cancel(&dispatch->debounce.timer); + libinput_timer_cancel(&dispatch->debounce.timer_short); + libinput_device_remove_event_listener(&dispatch->tablet_mode.other.listener); list_for_each_safe(kbd, @@ -1081,10 +1084,9 @@ { struct fallback_dispatch *dispatch = fallback_dispatch(evdev_dispatch); - libinput_timer_cancel(&dispatch->debounce.timer); libinput_timer_destroy(&dispatch->debounce.timer); - libinput_timer_cancel(&dispatch->debounce.timer_short); libinput_timer_destroy(&dispatch->debounce.timer_short); + free(dispatch->mt.slots); free(dispatch); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/src/evdev-mt-touchpad.c new/libinput-1.11.2/src/evdev-mt-touchpad.c --- old/libinput-1.11.1/src/evdev-mt-touchpad.c 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/src/evdev-mt-touchpad.c 2018-07-03 06:47:19.000000000 +0200 @@ -846,9 +846,6 @@ !t->is_tool_palm) t->palm.state = PALM_NONE; - if (t->palm.state == PALM_TOOL_PALM) - tp_stop_actions(tp, time); - return t->palm.state == PALM_TOOL_PALM; } @@ -1522,6 +1519,11 @@ tp_for_each_touch(tp, t) { if (t->state == TOUCH_MAYBE_END) tp_end_touch(tp, t, time); + + /* Ignore motion when pressure/touch size fell below the + * threshold, thus ending the touch */ + if (t->state == TOUCH_END && t->history.count > 0) + t->point = tp_motion_history_offset(t, 0)->point; } } @@ -1784,6 +1786,8 @@ { struct tp_dispatch *tp = tp_dispatch(dispatch); + libinput_timer_cancel(&tp->arbitration.arbitration_timer); + tp_remove_tap(tp); tp_remove_buttons(tp); tp_remove_sendevents(tp); @@ -1796,7 +1800,6 @@ { struct tp_dispatch *tp = tp_dispatch(dispatch); - libinput_timer_cancel(&tp->arbitration.arbitration_timer); libinput_timer_destroy(&tp->arbitration.arbitration_timer); libinput_timer_destroy(&tp->palm.trackpoint_timer); libinput_timer_destroy(&tp->dwt.keyboard_timer); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/test/test-pointer.c new/libinput-1.11.2/test/test-pointer.c --- old/libinput-1.11.1/test/test-pointer.c 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/test/test-pointer.c 2018-07-03 06:47:19.000000000 +0200 @@ -2533,6 +2533,58 @@ } END_TEST +START_TEST(debounce_remove_device_button_up) +{ + struct libinput *li; + struct litest_device *dev; + + li = litest_create_context(); + + dev = litest_add_device(li, LITEST_MOUSE); + litest_drain_events(li); + + litest_event(dev, EV_KEY, BTN_LEFT, 1); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + litest_event(dev, EV_KEY, BTN_LEFT, 0); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + libinput_dispatch(li); + + /* delete the device while the timer is still active */ + litest_delete_device(dev); + libinput_dispatch(li); + + litest_timeout_debounce(); + libinput_dispatch(li); + + libinput_unref(li); +} +END_TEST + +START_TEST(debounce_remove_device_button_down) +{ + struct libinput *li; + struct litest_device *dev; + + li = litest_create_context(); + + dev = litest_add_device(li, LITEST_MOUSE); + litest_drain_events(li); + + litest_event(dev, EV_KEY, BTN_LEFT, 1); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + libinput_dispatch(li); + + /* delete the device the timer is still active */ + litest_delete_device(dev); + libinput_dispatch(li); + + litest_timeout_debounce(); + libinput_dispatch(li); + + libinput_unref(li); +} +END_TEST + TEST_COLLECTION(pointer) { struct range axis_range = {ABS_X, ABS_Y + 1}; @@ -2607,4 +2659,6 @@ litest_add("pointer:debounce_otherbutton", debounce_spurious_dont_enable_on_otherbutton, LITEST_BUTTON, LITEST_TOUCHPAD|LITEST_NO_DEBOUNCE); litest_add("pointer:debounce_otherbutton", debounce_spurious_cancel_debounce_otherbutton, LITEST_BUTTON, LITEST_TOUCHPAD|LITEST_NO_DEBOUNCE); litest_add("pointer:debounce_otherbutton", debounce_spurious_switch_to_otherbutton, LITEST_BUTTON, LITEST_TOUCHPAD|LITEST_NO_DEBOUNCE); + litest_add_no_device("pointer:debounce", debounce_remove_device_button_down); + litest_add_no_device("pointer:debounce", debounce_remove_device_button_up); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/test/test-touchpad.c new/libinput-1.11.2/test/test-touchpad.c --- old/libinput-1.11.1/test/test-touchpad.c 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/test/test-touchpad.c 2018-07-03 06:47:19.000000000 +0200 @@ -1541,6 +1541,48 @@ } END_TEST +START_TEST(touchpad_palm_detect_tool_palm_tap_after) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + + if (!touchpad_has_tool_palm(dev)) + return; + + litest_enable_tap(dev->libinput_device); + litest_drain_events(li); + + litest_push_event_frame(dev); + litest_event(dev, EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_PALM); + litest_touch_down(dev, 0, 50, 50); + litest_pop_event_frame(dev); + libinput_dispatch(li); + + litest_touch_move_to(dev, 0, 50, 50, 50, 80, 10, 0); + libinput_dispatch(li); + + litest_assert_empty_queue(li); + + litest_push_event_frame(dev); + litest_event(dev, EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_FINGER); + litest_touch_up(dev, 0); + litest_pop_event_frame(dev); + libinput_dispatch(li); + litest_timeout_tap(); + litest_assert_empty_queue(li); + + litest_touch_down(dev, 0, 50, 50); + libinput_dispatch(li); + litest_touch_up(dev, 0); + libinput_dispatch(li); + litest_timeout_tap(); + + litest_assert_button_event(li, BTN_LEFT, LIBINPUT_BUTTON_STATE_PRESSED); + litest_assert_button_event(li, BTN_LEFT, LIBINPUT_BUTTON_STATE_RELEASED); + litest_assert_empty_queue(li); +} +END_TEST + START_TEST(touchpad_palm_detect_tool_palm_tap) { struct litest_device *dev = litest_current_device(); @@ -6336,6 +6378,7 @@ litest_add("touchpad:palm", touchpad_palm_detect_tool_palm, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH); litest_add("touchpad:palm", touchpad_palm_detect_tool_palm_on_off, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH); litest_add("touchpad:palm", touchpad_palm_detect_tool_palm_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH); + litest_add("touchpad:palm", touchpad_palm_detect_tool_palm_tap_after, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH); litest_add("touchpad:palm", touchpad_palm_detect_touch_size, LITEST_APPLE_CLICKPAD, LITEST_ANY); litest_add("touchpad:palm", touchpad_palm_detect_pressure, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/tools/libinput-list-devices.c new/libinput-1.11.2/tools/libinput-list-devices.c --- old/libinput-1.11.1/tools/libinput-list-devices.c 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/tools/libinput-list-devices.c 2018-07-03 06:47:19.000000000 +0200 @@ -372,6 +372,7 @@ { struct libinput *li; struct libinput_event *ev; + bool grab = false; /* This is kept for backwards-compatibility with the old libinput-list-devices */ @@ -388,7 +389,7 @@ } } - li = tools_open_backend(BACKEND_UDEV, "seat0", false, false); + li = tools_open_backend(BACKEND_UDEV, "seat0", false, &grab); if (!li) return 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/tools/libinput-measure-touch-size new/libinput-1.11.2/tools/libinput-measure-touch-size --- old/libinput-1.11.1/tools/libinput-measure-touch-size 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/tools/libinput-measure-touch-size 2018-07-03 06:47:19.000000000 +0200 @@ -138,7 +138,7 @@ def _str_summary(self): if not self.points: - return "Sequence: no major/minor values recorded" + return "{:78s}".format("Sequence: no major/minor values recorded") s = "Sequence: major: [{:3d}..{:3d}] ".format( self.major_range.min, self.major_range.max diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/tools/libinput-measure-touchpad-pressure new/libinput-1.11.2/tools/libinput-measure-touchpad-pressure --- old/libinput-1.11.1/tools/libinput-measure-touchpad-pressure 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/tools/libinput-measure-touchpad-pressure 2018-07-03 06:47:19.000000000 +0200 @@ -105,6 +105,9 @@ return self._str_state() if self.is_active else self._str_summary() def _str_summary(self): + if not self.points: + return "{:78s}".format("Sequence: no pressure values recorded") + s = "Sequence {} pressure: "\ "min: {:3d} max: {:3d} avg: {:3d} median: {:3d} tags:" \ .format( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/tools/libinput-tool.c new/libinput-1.11.2/tools/libinput-tool.c --- old/libinput-1.11.1/tools/libinput-tool.c 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/tools/libinput-tool.c 2018-07-03 06:47:19.000000000 +0200 @@ -57,6 +57,12 @@ "\n" " measure <feature>\n" " Measure various device properties. See the man page for more info\n" + "\n" + " record\n" + " Record event stream from a device node. See the man page for more info\n" + "\n" + " replay\n" + " Replay a previously recorded event stream. See the man page for more info\n" "\n"); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/tools/shared.c new/libinput-1.11.2/tools/shared.c --- old/libinput-1.11.1/tools/shared.c 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/tools/shared.c 2018-07-03 06:47:19.000000000 +0200 @@ -232,7 +232,7 @@ if (fd < 0) fprintf(stderr, "Failed to open %s (%s)\n", path, strerror(errno)); - else if (*grab && ioctl(fd, EVIOCGRAB, (void*)1) == -1) + else if (grab && *grab && ioctl(fd, EVIOCGRAB, (void*)1) == -1) fprintf(stderr, "Grab requested, but failed for %s (%s)\n", path, strerror(errno)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.11.1/udev/90-libinput-model-quirks.hwdb new/libinput-1.11.2/udev/90-libinput-model-quirks.hwdb --- old/libinput-1.11.1/udev/90-libinput-model-quirks.hwdb 2018-06-19 07:00:35.000000000 +0200 +++ new/libinput-1.11.2/udev/90-libinput-model-quirks.hwdb 2018-07-03 06:47:19.000000000 +0200 @@ -124,6 +124,10 @@ LIBINPUT_ATTR_PRESSURE_RANGE=30:20 LIBINPUT_ATTR_PALM_PRESSURE_THRESHOLD=254 +libinput:name:*Synaptics s3203:dmi:*svnDellInc.:*pnXPS139333* + LIBINPUT_ATTR_PRESSURE_RANGE=15:10 + LIBINPUT_ATTR_PALM_PRESSURE_THRESHOLD=150 + ########################################## # Elantech ########################################## @@ -276,17 +280,23 @@ libinput:keyboard:input:b0003v17EFp6047* LIBINPUT_ATTR_KEYBOARD_INTEGRATION=external +# Lenovo X270 +libinput:name:*TPPS/2 IBM TrackPoint*:dmi:svnLENOVO:*:pvrThinkPadX270:* + LIBINPUT_ATTR_TRACKPOINT_RANGE=40 + # Lenovo X280 libinput:name:*ALPS TrackPoint*:dmi:svnLENOVO:*:pvrThinkPadX280:* LIBINPUT_ATTR_TRACKPOINT_RANGE=70 -# Lenovo Thinkpad X1 Yoga disables the keyboard anyway but has the same device -# use a windows key on the screen and volume rocker on the side (#103749) -libinput:name:AT Translated Set 2 keyboard:dmi:*svnLENOVO:*pvrThinkPadX1Yoga1st:* +# Lenovo Thinkpad Yoga (not the consumer versions) disables the keyboard +# mechanically. We must not disable the keyboard because some keys are +# still accessible on the screen and volume rocker. +# Initially #103749 and extended by #106799 comment 7 +libinput:name:AT Translated Set 2 keyboard:dmi:*svnLENOVO:*pvrThinkPad*Yoga*:* LIBINPUT_MODEL_TABLET_MODE_NO_SUSPEND=1 # Lenovo Carbon X1 6th gen (RMI4 only, PS/2 is broken on this device) -libinput:name:Synaptics TM3288-010:dmi:*svnLenovo:*pvrThinkPadX1Carbon6th:* +libinput:name:Synaptics TM3288-011:dmi:*svnLenovo:*pvrThinkPadX1Carbon6th:* LIBINPUT_MODEL_LENOVO_CARBON_X1_6TH=1 ##########################################