Hello community, here is the log from the commit of package libinput for openSUSE:Factory checked in at 2019-08-27 15:48:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libinput (Old) and /work/SRC/openSUSE:Factory/.libinput.new.7948 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libinput" Tue Aug 27 15:48:48 2019 rev:78 rq:725991 version:1.14.1 Changes: -------- --- /work/SRC/openSUSE:Factory/libinput/libinput.changes 2019-08-24 18:41:13.333787254 +0200 +++ /work/SRC/openSUSE:Factory/.libinput.new.7948/libinput.changes 2019-08-27 15:48:57.595846393 +0200 @@ -1,0 +2,9 @@ +Mon Aug 26 04:22:25 UTC 2019 - Jan Engelhardt <[email protected]> + +- Update to new upstream release 1.14.1 + * Fix a two-finger interaction (click + drag) was interpreted + as scroll event instead of the intended action + * The RollerMouse v3 now has debouncing disabled so the + double-click button works. + +------------------------------------------------------------------- Old: ---- libinput-1.14.0.tar.xz libinput-1.14.0.tar.xz.sig New: ---- libinput-1.14.1.tar.xz libinput-1.14.1.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libinput.spec ++++++ --- /var/tmp/diff_new_pack.YrvWZ9/_old 2019-08-27 15:49:02.311839150 +0200 +++ /var/tmp/diff_new_pack.YrvWZ9/_new 2019-08-27 15:49:02.311839150 +0200 @@ -18,7 +18,7 @@ Name: libinput %define lname libinput10 -Version: 1.14.0 +Version: 1.14.1 Release: 0 Summary: Input device and event processing library License: MIT @@ -41,7 +41,7 @@ BuildRequires: graphviz >= 2.26 BuildRequires: grep BuildRequires: meson >= 0.41.0 -BuildRequires: pkgconfig +BuildRequires: pkg-config BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gtk+-3.0) >= 3.20 ++++++ libinput-1.14.0.tar.xz -> libinput-1.14.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.14.0/completion/zsh/_libinput new/libinput-1.14.1/completion/zsh/_libinput --- old/libinput-1.14.0/completion/zsh/_libinput 1970-01-01 01:00:00.000000000 +0100 +++ new/libinput-1.14.1/completion/zsh/_libinput 2019-08-26 04:49:02.000000000 +0200 @@ -0,0 +1,199 @@ +#compdef libinput + +(( $+functions[_libinput_commands] )) || _libinput_commands() +{ + local -a commands + commands=( + "list-devices:List all devices recognized by libinput" + "debug-events:Print all events as seen by libinput" + "debug-gui:Show a GUI to visualize libinput's events" + "measure:Measure various properties of devices" + "record:Record the events from a device" + "replay:Replay the events from a device" + ) + + _describe -t commands 'command' commands +} + +__all_seats() +{ + # Obviously only works with logind + local -a seats + seats=${(f)"$(loginctl --no-legend --no-pager list-seats 2>/dev/null)"} + if [[ -z $seats ]]; then + # Can always offer seat0, even if we can't enumerate the seats + compadd "$@" - seat0 + else + compadd "$@" - $seats + fi +} + +(( $+functions[_libinput_list-devices] )) || _libinput_list-devices() +{ + _arguments \ + '--help[Show help and exit]' \ + '--version[show version information and exit]' +} + +(( $+functions[_libinput_debug-events] )) || _libinput_debug-events() +{ + _arguments \ + '--help[Show debug-events help and exit]' \ + '--quiet[Only print libinput messages and nothing from this tool]' \ + '--verbose[Use verbose output]' \ + '--show-keycodes[Make all keycodes visible]' \ + '--grab[Exclusively grab all opened devices]' \ + '--device=[Use the given device with the path backend]:device:_files -W /dev/input/ -P /dev/input/' \ + '--udev=[Listen for notifications on the given seat]:seat:__all_seats' \ + '--apply-to=[Apply configuration options where the device name matches the pattern]:pattern' \ + '--disable-sendevents=[Disable send-events option for the devices matching the pattern]:pattern' \ + '--set-click-method=[Set the desired click method]:click-method:(none clickfinger buttonareas)' \ + '--set-scroll-method=[Set the desired scroll method]:scroll-method:(none twofinger edge button)' \ + '--set-scroll-button=[Set the button to the given button code]' \ + '--set-profile=[Set pointer acceleration profile]:accel-profile:(adaptive flat)' \ + '--set-speed=[Set pointer acceleration speed (within range \[-1, 1\])]' \ + '--set-tap-map=[Set button mapping for tapping]:tap-map:(( \ + lrm\:2-fingers\ right-click\ /\ 3-fingers\ middle-click \ + lmr\:2-fingers\ middle-click\ /\ 3-fingers\ right-click \ + ))' \ + + '(tap-to-click)' \ + '--enable-tap[Enable tap-to-click]' \ + '--disable-tap[Disable tap-to-click]' \ + + '(drag)' \ + '--enable-drag[Enable tap-and-drag]' \ + '--disable-drag[Disable tap-and-drag]' \ + + '(drag-lock)' \ + '--enable-drag-lock[Enable drag-lock]' \ + '--disable-drag-lock[Disable drag-lock]' \ + + '(natural-scrolling)' \ + '--enable-natural-scrolling[Enable natural scrolling]' \ + '--disable-natural-scrolling[Disable natural scrolling]' \ + + '(left-handed)' \ + '--enable-left-handed[Enable left handed button configuration]' \ + '--disable-left-handed[Disable left handed button configuration]' \ + + '(middlebutton)' \ + '--enable-middlebutton[Enable middle button emulation]' \ + '--disable-middlebutton[Disable middle button emulation]' \ + + '(dwt)' \ + '--enable-dwt[Enable disable-while-typing]' \ + '--disable-dwt[Disable enable-while-typing]' +} + +(( $+functions[_libinput_debug-gui] )) || _libinput_debug-gui() +{ + _arguments \ + '--help[Show debug-gui help and exit]' \ + '--verbose[Use verbose output]' \ + '--grab[Exclusively grab all opened devices]' \ + '--device=[Use the given device with the path backend]:device:_files -W /dev/input/ -P /dev/input/' \ + '--udev=[Listen for notifications on the given seat]:seat:_libinput_all_seats' +} + +(( $+functions[_libinput_measure] )) || _libinput_measure() +{ + local curcontext=$curcontext state line ret=1 + local features + features=( + "fuzz:Measure touch fuzz to avoid pointer jitter" + "touch-size:Measure touch size and orientation" + "touchpad-tap:Measure tap-to-click time" + "touchpad-pressure:Measure touch pressure" + ) + + _arguments -C \ + '--help[Print help and exit]' \ + ':feature:->feature' \ + '*:: :->option-or-argument' + + case $state in + (feature) + _describe -t features 'feature' features + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:libinput-measure-$words[1]: + if ! _call_function ret _libinput_measure_$words[1]; then + _message "unknown feature: $words[1]" + fi + ;; + esac + return ret +} + +(( $+functions[_libinput_measure_fuzz] )) || _libinput_measure_fuzz() +{ + _arguments \ + '--help[Show help message and exit]' \ + ':device:_files -W /dev/input/ -P /dev/input/' +} + +(( $+functions[_libinput_measure_touch-size] )) || _libinput_measure_touch-size() +{ + _arguments \ + '--help[Show help message and exit]' \ + '--touch-threshold=[Assume a touch pressure threshold of "down:up"]' \ + '--palm-threshold=[Assume a palm threshold of N]' \ + ':device:_files -W /dev/input/ -P /dev/input/' +} + +(( $+functions[_libinput_measure_touchpad-pressure] )) || _libinput_measure_touchpad-pressure() +{ + _arguments \ + '--help[Show help message and exit]' \ + '--touch-threshold=[Assume a touch pressure threshold of "down:up"]' \ + '--palm-threshold=[Assume a palm threshold of N]' \ + ':device:_files -W /dev/input/ -P /dev/input/' +} + +(( $+functions[_libinput_measure_touchpad-tap] )) || _libinput_measure_touchpad-tap() +{ + _arguments \ + '--help[Show help message and exit]' \ + '--format=dat[Specify the data format to be printed. The default is "summary"]' + ':device:_files -W /dev/input/ -P /dev/input/' +} + +(( $+functions[_libinput_record] )) || _libinput_record() +{ + _arguments \ + '--help[Show help message and exit]' \ + '--all[Record all /dev/input/event* devices available on the system]' \ + '--autorestart=[Terminate the current recording after s seconds of device inactivity]' \ + {-o+,--output=}'[Speficy the output file to use]:file:_files -g "*.yml"' \ + '--multiple[Record multiple devices at once]' \ + '--show-keycodes[Show keycodes as-is in the recording]' \ + '--with-libinput[Record libinput events alongside device events]' \ + '*::device:_files -W /dev/input/ -P /dev/input/' +} + +(( $+functions[_libinput_replay] )) || _libinput_replay() +{ + _arguments \ + '--help[Show help message and exit]' \ + ':recording:_files' +} + +_libinput() +{ + local curcontext=$curcontext state line ret=1 + + _arguments -C \ + {-h,--help}'[Show help message and exit]' \ + '--version[Show version information and exit]' \ + ':command:->command' \ + '*:: :->option-or-argument' && return + + case $state in + (command) + _libinput_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:libinput-$words[1]: + if ! _call_function ret _libinput_$words[1]; then + _message "unknown libinput command: $words[1]" + fi + ;; + esac + return ret +} + +_libinput diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.14.0/completion/zsh/meson.build new/libinput-1.14.1/completion/zsh/meson.build --- old/libinput-1.14.0/completion/zsh/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/libinput-1.14.1/completion/zsh/meson.build 2019-08-26 04:49:02.000000000 +0200 @@ -0,0 +1,12 @@ +zshcompletiondir = get_option('zshcompletiondir') +if zshcompletiondir == '' + zshcompletiondir = join_paths(get_option('datadir'), 'zsh', 'site-functions') +endif + +if zshcompletiondir != 'no' + install_data( + '_libinput', + install_dir: zshcompletiondir, + install_mode: 'rw-r--r--', + ) +endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.14.0/meson.build new/libinput-1.14.1/meson.build --- old/libinput-1.14.0/meson.build 2019-08-08 07:06:16.000000000 +0200 +++ new/libinput-1.14.1/meson.build 2019-08-26 04:49:02.000000000 +0200 @@ -1,5 +1,5 @@ project('libinput', 'c', - version : '1.14.0', + version : '1.14.1', license : 'MIT/Expat', default_options : [ 'c_std=gnu99', 'warning_level=2' ], meson_version : '>= 0.41.0') @@ -405,6 +405,10 @@ subdir('doc/user') endif +############ shell completion ######### + +subdir('completion/zsh') + ############ tools ############ libinput_tool_path = dir_libexec config_h.set_quoted('LIBINPUT_TOOL_PATH', libinput_tool_path) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.14.0/meson_options.txt new/libinput-1.14.1/meson_options.txt --- old/libinput-1.14.0/meson_options.txt 2019-08-08 07:06:16.000000000 +0200 +++ new/libinput-1.14.1/meson_options.txt 2019-08-26 04:49:02.000000000 +0200 @@ -30,3 +30,7 @@ type: 'boolean', value: false, description: 'Enable coverity build fixes, see meson.build for details [default=false]') +option('zshcompletiondir', + type: 'string', + value: '', + description: 'Directory for zsh completion scripts ["no" disables]') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.14.0/quirks/30-vendor-contour.quirks new/libinput-1.14.1/quirks/30-vendor-contour.quirks --- old/libinput-1.14.0/quirks/30-vendor-contour.quirks 2019-08-08 07:06:16.000000000 +0200 +++ new/libinput-1.14.1/quirks/30-vendor-contour.quirks 2019-08-26 04:49:02.000000000 +0200 @@ -9,3 +9,9 @@ MatchProduct=0x1000 MatchUdevType=mouse ModelBouncingKeys=1 + +[Contour Design RollerMouse Red v3] +MatchVendor=0x0B33 +MatchProduct=0x1004 +MatchUdevType=mouse +ModelBouncingKeys=1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.14.0/src/evdev-mt-touchpad-gestures.c new/libinput-1.14.1/src/evdev-mt-touchpad-gestures.c --- old/libinput-1.14.0/src/evdev-mt-touchpad-gestures.c 2019-08-08 07:06:16.000000000 +0200 +++ new/libinput-1.14.1/src/evdev-mt-touchpad-gestures.c 2019-08-26 04:49:02.000000000 +0200 @@ -717,8 +717,13 @@ if (tp->gesture.finger_count == 0) return; - /* When tap-and-dragging, force 1fg mode. */ - if (tp_tap_dragging(tp)) { + /* When tap-and-dragging, force 1fg mode. On clickpads, if the + * physical button is down, don't allow gestures unless the button + * is held down by a *thumb*, specifically. + */ + if (tp_tap_dragging(tp) || + (tp->buttons.is_clickpad && tp->buttons.state && + tp->thumb.state == THUMB_STATE_FINGER)) { tp_gesture_cancel(tp, time); tp->gesture.finger_count = 1; tp->gesture.finger_count_pending = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.14.0/test/test-touchpad-buttons.c new/libinput-1.14.1/test/test-touchpad-buttons.c --- old/libinput-1.14.0/test/test-touchpad-buttons.c 2019-08-08 07:06:16.000000000 +0200 +++ new/libinput-1.14.1/test/test-touchpad-buttons.c 2019-08-26 04:49:02.000000000 +0200 @@ -958,6 +958,96 @@ } END_TEST +START_TEST(touchpad_clickfinger_click_drag) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + int nfingers = _i; /* ranged test */ + unsigned int button; + int nslots = libevdev_get_num_slots(dev->evdev); + + litest_enable_clickfinger(dev); + litest_drain_events(li); + + litest_touch_down(dev, 0, 40, 50); + button = BTN_LEFT; + + if (nfingers > 1) { + if (nslots > 1) { + litest_touch_down(dev, 1, 50, 50); + } else { + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 1); + } + button = BTN_RIGHT; + } + + if (nfingers > 2) { + if (nslots > 2) { + litest_touch_down(dev, 2, 60, 50); + } else { + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); + litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1); + } + button = BTN_MIDDLE; + } + + litest_button_click(dev, BTN_LEFT, true); + + libinput_dispatch(li); + litest_assert_button_event(li, button, + LIBINPUT_BUTTON_STATE_PRESSED); + + for (int i = 0; i < 20; i++) { + litest_push_event_frame(dev); + switch (nfingers) { + case 3: + if (nslots >= nfingers) + litest_touch_move(dev, 2, 60, 50 + i); + /* fallthrough */ + case 2: + if (nslots >= nfingers) + litest_touch_move(dev, 1, 50, 50 + i); + /* fallthrough */ + case 1: + litest_touch_move(dev, 0, 40, 50 + i); + break; + } + litest_pop_event_frame(dev); + libinput_dispatch(li); + } + + litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION); + + litest_button_click(dev, BTN_LEFT, false); + litest_assert_button_event(li, button, + LIBINPUT_BUTTON_STATE_RELEASED); + + if (nfingers > 3) { + if (nslots > 3) { + litest_touch_up(dev, 2); + } else { + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 1); + litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 0); + } + } + + if (nfingers > 2) { + if (nslots > 2) { + litest_touch_up(dev, 1); + } else { + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); + } + button = BTN_MIDDLE; + } + + litest_touch_up(dev, 0); + + + libinput_dispatch(li); + litest_assert_empty_queue(li); +} +END_TEST + START_TEST(touchpad_btn_left) { struct litest_device *dev = litest_current_device(); @@ -2006,6 +2096,8 @@ TEST_COLLECTION(touchpad_buttons) { + struct range finger_count = {1, 4}; + litest_add("touchpad:button", touchpad_button, LITEST_TOUCHPAD, LITEST_CLICKPAD); litest_add("touchpad:clickfinger", touchpad_1fg_clickfinger, LITEST_CLICKPAD, LITEST_ANY); @@ -2036,6 +2128,8 @@ litest_add_for_device("touchpad:clickfinger", touchpad_clickfinger_appletouch_2fg, LITEST_APPLETOUCH); litest_add_for_device("touchpad:clickfinger", touchpad_clickfinger_appletouch_3fg, LITEST_APPLETOUCH); + litest_add_ranged("touchpad:clickfinger", touchpad_clickfinger_click_drag, LITEST_CLICKPAD, LITEST_ANY, &finger_count); + litest_add("touchpad:click", touchpad_click_defaults_clickfinger, LITEST_APPLE_CLICKPAD, LITEST_ANY); litest_add("touchpad:click", touchpad_click_defaults_btnarea, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD); litest_add("touchpad:click", touchpad_click_defaults_none, LITEST_TOUCHPAD, LITEST_CLICKPAD); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinput-1.14.0/tools/libinput-debug-events.man new/libinput-1.14.1/tools/libinput-debug-events.man --- old/libinput-1.14.0/tools/libinput-debug-events.man 2019-08-08 07:06:16.000000000 +0200 +++ new/libinput-1.14.1/tools/libinput-debug-events.man 2019-08-26 04:49:02.000000000 +0200 @@ -65,7 +65,7 @@ Enable or disable tap-and-drag .TP 8 .B \-\-enable\-drag-lock|\-\-disable\-drag\-lock -Enable or disable tap-and-drag +Enable or disable drag-lock .TP 8 .B \-\-enable\-natural\-scrolling|\-\-disable\-natural\-scrolling Enable or disable natural scrolling
