[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libinput: Changes to 'debian-unstable'



Rebased ref, commits from common ancestor:
commit 98913e50e3b1a5f8af15599bef84e7d03ecd0bb6
Author: Andreas Boll <andreas.boll.dev@gmail.com>
Date:   Fri Nov 6 09:49:19 2015 +0100

    Change maintainer to Debian X Strike Force.

diff --git a/debian/changelog b/debian/changelog
index 3273adc..01b471d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libinput (1.1.2-2) UNRELEASED; urgency=medium
+
+  * Change maintainer to Debian X Strike Force.
+
+ -- Andreas Boll <andreas.boll.dev@gmail.com>  Fri, 06 Nov 2015 09:49:11 +0100
+
 libinput (1.1.2-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/control b/debian/control
index 78d16cc..1ed5059 100644
--- a/debian/control
+++ b/debian/control
@@ -1,8 +1,8 @@
 Source: libinput
 Section: libs
 Priority: optional
-Maintainer: Emilio Pozuelo Monfort <pochu@debian.org>
-Uploaders: Hector Oron <zumbi@debian.org>
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Uploaders: Emilio Pozuelo Monfort <pochu@debian.org>, Hector Oron <zumbi@debian.org>
 Build-Depends:
  debhelper (>= 9),
  dh-autoreconf,

commit 24f86d48d979ea2ab159d4a362fcb85f1f300e7f
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Thu Dec 10 10:50:51 2015 +0200

    release to unstable

diff --git a/debian/changelog b/debian/changelog
index e42407c..3273adc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,11 @@
-libinput (1.1.2-1) UNRELEASED; urgency=medium
+libinput (1.1.2-1) unstable; urgency=medium
 
   * New upstream release.
   * control: Add a package for libinput-tools, thanks Alessio Treglia!
     (Closes: #806985)
   * control: Update long descriptions.
 
- -- Timo Aaltonen <tjaalton@debian.org>  Thu, 10 Dec 2015 08:14:50 +0200
+ -- Timo Aaltonen <tjaalton@debian.org>  Thu, 10 Dec 2015 08:34:16 +0200
 
 libinput (1.1.0-1) unstable; urgency=medium
 

commit 374f267ba7980fc6ae436f9d65509e81c1fc6935
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Thu Dec 10 08:34:10 2015 +0200

    control: Update long descriptions.

diff --git a/debian/changelog b/debian/changelog
index 09eedb8..e42407c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,7 @@ libinput (1.1.2-1) UNRELEASED; urgency=medium
   * New upstream release.
   * control: Add a package for libinput-tools, thanks Alessio Treglia!
     (Closes: #806985)
+  * control: Update long descriptions.
 
  -- Timo Aaltonen <tjaalton@debian.org>  Thu, 10 Dec 2015 08:14:50 +0200
 
diff --git a/debian/control b/debian/control
index ea260af..78d16cc 100644
--- a/debian/control
+++ b/debian/control
@@ -30,6 +30,8 @@ Description: input device management and event handling library - shared library
  processing and abstraction so minimize the amount of custom input
  code the user of libinput need to provide the common set of
  functionality that users expect.
+ .
+ This package includes the shared library.
 
 Package: libinput10-udeb
 XC-Package-Type: udeb
@@ -58,6 +60,8 @@ Description: input device management and event handling library - debugging symb
  processing and abstraction so minimize the amount of custom input
  code the user of libinput need to provide the common set of
  functionality that users expect.
+ .
+ This package includes the debugging symbols.
 
 Package: libinput-dev
 Section: libdevel
@@ -76,6 +80,8 @@ Description: input device management and event handling library - development fi
  processing and abstraction so minimize the amount of custom input
  code the user of libinput need to provide the common set of
  functionality that users expect.
+ .
+ This package includes the development headers.
 
 Package: libinput-tools
 Section: libdevel

commit bc61a202b1878ae56e2331c1b4099c4e4a6e154e
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Thu Dec 10 08:29:01 2015 +0200

    control: Add a package for libinput-tools, thanks Alessio Treglia! (Closes: #806985)

diff --git a/debian/changelog b/debian/changelog
index 6e01dcc..09eedb8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
 libinput (1.1.2-1) UNRELEASED; urgency=medium
 
   * New upstream release.
+  * control: Add a package for libinput-tools, thanks Alessio Treglia!
+    (Closes: #806985)
 
  -- Timo Aaltonen <tjaalton@debian.org>  Thu, 10 Dec 2015 08:14:50 +0200
 
diff --git a/debian/control b/debian/control
index 108f666..ea260af 100644
--- a/debian/control
+++ b/debian/control
@@ -76,3 +76,23 @@ Description: input device management and event handling library - development fi
  processing and abstraction so minimize the amount of custom input
  code the user of libinput need to provide the common set of
  functionality that users expect.
+
+Package: libinput-tools
+Section: libdevel
+Priority: extra
+Architecture: any
+Multi-Arch: allowed
+Depends:
+ libinput10 (= ${binary:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends},
+Description: input device management and event handling library - command line tools
+ libinput is a library that handles input devices for display servers and
+ other applications that need to directly deal with input devices.
+ .
+ It provides device detection, device handling, input device event
+ processing and abstraction so minimize the amount of custom input
+ code the user of libinput need to provide the common set of
+ functionality that users expect.
+ .
+ This package includes the command line tools.

commit a2fccdfd773df53f59522ed1151844dc1efc276b
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Thu Dec 10 08:17:22 2015 +0200

    update the changelog

diff --git a/debian/changelog b/debian/changelog
index 9d32bc8..6e01dcc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libinput (1.1.2-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+
+ -- Timo Aaltonen <tjaalton@debian.org>  Thu, 10 Dec 2015 08:14:50 +0200
+
 libinput (1.1.0-1) unstable; urgency=medium
 
   * New upstream release.

commit f5d0b9b99b16c3e72b2a6851a14b49a30106cbb9
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Dec 9 09:08:10 2015 +1000

    configure.ac: libinput 1.1.2
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index c841a5f..51350bb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ AC_PREREQ([2.64])
 
 m4_define([libinput_major_version], [1])
 m4_define([libinput_minor_version], [1])
-m4_define([libinput_micro_version], [1])
+m4_define([libinput_micro_version], [2])
 m4_define([libinput_version],
           [libinput_major_version.libinput_minor_version.libinput_micro_version])
 
@@ -31,7 +31,7 @@ AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
 # b) If interfaces have been changed or added, but binary compatibility has
 #    been preserved, change to C+1:0:A+1
 # c) If the interface is the same as the previous version, change to C:R+1:A
-LIBINPUT_LT_VERSION=16:1:6
+LIBINPUT_LT_VERSION=16:2:6
 AC_SUBST(LIBINPUT_LT_VERSION)
 
 AM_SILENT_RULES([yes])

commit 147162da696715fbe7f9c19b31472c090cedc721
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Dec 4 15:52:17 2015 +1000

    touchpad: don't set the axis for a 0.0 value in a scroll event
    
    Once we trigger diagonal scrolling, the device's scroll direction is set as
    horiz+vert. From then on, both axes will be set on every subsequent scroll
    event, even when the actual delta for an axis is 0.
    
    This causes continuous scroll stop events in clients that care about these
    things.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/src/evdev.c b/src/evdev.c
index 4933185..55641c5 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -2548,9 +2548,16 @@ evdev_post_scroll(struct evdev_device *device,
 
 	if (!normalized_is_zero(event)) {
 		const struct discrete_coords zero_discrete = { 0.0, 0.0 };
+		uint32_t axes = device->scroll.direction;
+
+		if (event.y == 0.0)
+			axes &= ~AS_MASK(LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL);
+		if (event.x == 0.0)
+			axes &= ~AS_MASK(LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL);
+
 		evdev_notify_axis(device,
 				  time,
-				  device->scroll.direction,
+				  axes,
 				  source,
 				  &event,
 				  &zero_discrete);
diff --git a/test/touchpad.c b/test/touchpad.c
index e024ace..7bc99e9 100644
--- a/test/touchpad.c
+++ b/test/touchpad.c
@@ -144,6 +144,54 @@ START_TEST(touchpad_2fg_scroll)
 }
 END_TEST
 
+START_TEST(touchpad_2fg_scroll_diagonal)
+{
+	struct litest_device *dev = litest_current_device();
+	struct libinput *li = dev->libinput;
+	struct libinput_event *event;
+	struct libinput_event_pointer *ptrev;
+	int i;
+
+	if (!litest_has_2fg_scroll(dev))
+		return;
+
+	litest_enable_2fg_scroll(dev);
+	litest_drain_events(li);
+
+	litest_touch_down(dev, 0, 45, 30);
+	litest_touch_down(dev, 1, 55, 30);
+
+	litest_touch_move_two_touches(dev, 45, 30, 55, 30, 10, 10, 10, 0);
+	libinput_dispatch(li);
+	litest_wait_for_event_of_type(li,
+				      LIBINPUT_EVENT_POINTER_AXIS,
+				      -1);
+	litest_drain_events(li);
+
+	/* get rid of any touch history still adding x deltas sideways */
+	for (i = 0; i < 5; i++)
+		litest_touch_move(dev, 0, 55, 41 + i);
+	litest_drain_events(li);
+
+	for (i = 6; i < 10; i++) {
+		litest_touch_move(dev, 0, 55, 41 + i);
+		libinput_dispatch(li);
+
+		event = libinput_get_event(li);
+		ptrev = litest_is_axis_event(event,
+				LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL,
+				LIBINPUT_POINTER_AXIS_SOURCE_FINGER);
+		ck_assert(!libinput_event_pointer_has_axis(ptrev,
+				LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL));
+		libinput_event_destroy(event);
+	}
+
+	litest_touch_up(dev, 1);
+	litest_touch_up(dev, 0);
+	libinput_dispatch(li);
+}
+END_TEST
+
 START_TEST(touchpad_2fg_scroll_slow_distance)
 {
 	struct litest_device *dev = litest_current_device();
@@ -3500,6 +3548,7 @@ litest_setup_tests(void)
 	litest_add("touchpad:motion", touchpad_2fg_no_motion, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
 
 	litest_add("touchpad:scroll", touchpad_2fg_scroll, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+	litest_add("touchpad:scroll", touchpad_2fg_scroll_diagonal, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
 	litest_add("touchpad:scroll", touchpad_2fg_scroll_slow_distance, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
 	litest_add("touchpad:scroll", touchpad_2fg_scroll_return_to_motion, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
 	litest_add("touchpad:scroll", touchpad_2fg_scroll_source, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);

commit e8f2eb18f0093795a9041fdcbe649abddfce4171
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Dec 7 11:39:52 2015 +1000

    test: always call libinput_dispatch after moving touches
    
    We dont' want to fill up the event queue and cause SYN_DROPPED events.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/test/litest.c b/test/litest.c
index ba3a308..cf9b534 100644
--- a/test/litest.c
+++ b/test/litest.c
@@ -1502,8 +1502,8 @@ litest_touch_move_two_touches(struct litest_device *d,
 		if (sleep_ms) {
 			libinput_dispatch(d->libinput);
 			msleep(sleep_ms);
-			libinput_dispatch(d->libinput);
 		}
+		libinput_dispatch(d->libinput);
 	}
 	litest_touch_move(d, 0, x0 + dx, y0 + dy);
 	litest_touch_move(d, 1, x1 + dx, y1 + dy);

commit 3d39dbc3f29fb8727a32a11deca52fcc2902b200
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Dec 4 15:58:16 2015 +1000

    tools: print which scroll axis we have in event-debug
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/tools/event-debug.c b/tools/event-debug.c
index c603296..23e6cf9 100644
--- a/tools/event-debug.c
+++ b/tools/event-debug.c
@@ -270,17 +270,23 @@ print_axis_event(struct libinput_event *ev)
 {
 	struct libinput_event_pointer *p = libinput_event_get_pointer_event(ev);
 	double v = 0, h = 0;
+	const char *have_vert = "",
+		   *have_horiz = "";
 
 	if (libinput_event_pointer_has_axis(p,
-				    LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL))
+				LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL)) {
 		v = libinput_event_pointer_get_axis_value(p,
 			      LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL);
+		have_vert = "*";
+	}
 	if (libinput_event_pointer_has_axis(p,
-				    LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL))
+				LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL)) {
 		h = libinput_event_pointer_get_axis_value(p,
 			      LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL);
+		have_horiz = "*";
+	}
 	print_event_time(libinput_event_pointer_get_time(p));
-	printf("vert %.2f horiz %.2f\n", v, h);
+	printf("vert %.2f%s horiz %.2f%s\n", v, have_vert, h, have_horiz);
 }
 
 static void

commit eb1197899e87c51e8c5eb7711659302175732b64
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Dec 2 10:36:30 2015 +1000

    touchpad: don't try to position fake touches when no fingers are down
    
    If all fingers are released in the same frame, we won't be able to find the
    top-most touch.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=93204
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index 8804658..4fba147 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -832,7 +832,8 @@ tp_position_fake_touches(struct tp_dispatch *tp)
 	struct tp_touch *topmost = NULL;
 	unsigned int start, i;
 
-	if (tp_fake_finger_count(tp) <= tp->num_slots)
+	if (tp_fake_finger_count(tp) <= tp->num_slots ||
+	    tp->nfingers_down == 0)
 		return;
 
 	/* We have at least one fake touch down. Find the top-most real
diff --git a/test/touchpad.c b/test/touchpad.c
index 9f5e5a9..e024ace 100644
--- a/test/touchpad.c
+++ b/test/touchpad.c
@@ -1703,6 +1703,31 @@ START_TEST(touchpad_semi_mt_hover_2fg_1fg_down)
 }
 END_TEST
 
+START_TEST(touchpad_semi_mt_hover_2fg_up)
+{
+	struct litest_device *dev = litest_current_device();
+	struct libinput *li = dev->libinput;
+
+	litest_touch_down(dev, 0, 70, 50);
+	litest_touch_down(dev, 1, 50, 50);
+
+	litest_push_event_frame(dev);
+	litest_touch_move(dev, 0, 72, 50);
+	litest_touch_move(dev, 1, 52, 50);
+	litest_event(dev, EV_KEY, BTN_TOUCH, 0);
+	litest_pop_event_frame(dev);
+
+	litest_event(dev, EV_ABS, ABS_MT_SLOT, 0);
+	litest_event(dev, EV_ABS, ABS_MT_TRACKING_ID, -1);
+	litest_event(dev, EV_ABS, ABS_MT_SLOT, 1);
+	litest_event(dev, EV_ABS, ABS_MT_TRACKING_ID, -1);
+	litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0);
+	litest_event(dev, EV_SYN, SYN_REPORT, 0);
+
+	litest_drain_events(li);
+}
+END_TEST
+
 START_TEST(touchpad_hover_noevent)
 {
 	struct litest_device *dev = litest_current_device();
@@ -3521,6 +3546,7 @@ litest_setup_tests(void)
 	litest_add_for_device("touchpad:semi-mt-hover", touchpad_semi_mt_hover_down_hover_down, LITEST_SYNAPTICS_HOVER_SEMI_MT);
 	litest_add_for_device("touchpad:semi-mt-hover", touchpad_semi_mt_hover_2fg_noevent, LITEST_SYNAPTICS_HOVER_SEMI_MT);
 	litest_add_for_device("touchpad:semi-mt-hover", touchpad_semi_mt_hover_2fg_1fg_down, LITEST_SYNAPTICS_HOVER_SEMI_MT);
+	litest_add_for_device("touchpad:semi-mt-hover", touchpad_semi_mt_hover_2fg_up, LITEST_SYNAPTICS_HOVER_SEMI_MT);
 
 	litest_add("touchpad:hover", touchpad_hover_noevent, LITEST_TOUCHPAD|LITEST_HOVER, LITEST_ANY);
 	litest_add("touchpad:hover", touchpad_hover_down, LITEST_TOUCHPAD|LITEST_HOVER, LITEST_ANY);

commit c42dfb9caddd5088dd5299a762c65de523a5e00e
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Dec 2 09:48:01 2015 +1000

    test: if we're hovering, don't send BTN_TOUCH
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/test/litest.c b/test/litest.c
index e235bc9..ba3a308 100644
--- a/test/litest.c
+++ b/test/litest.c
@@ -1317,9 +1317,9 @@ litest_auto_assign_value(struct litest_device *d,
 }
 
 static void
-send_btntool(struct litest_device *d)
+send_btntool(struct litest_device *d, bool hover)
 {
-	litest_event(d, EV_KEY, BTN_TOUCH, d->ntouches_down != 0);
+	litest_event(d, EV_KEY, BTN_TOUCH, d->ntouches_down != 0 && !hover);
 	litest_event(d, EV_KEY, BTN_TOOL_FINGER, d->ntouches_down == 1);
 	litest_event(d, EV_KEY, BTN_TOOL_DOUBLETAP, d->ntouches_down == 2);
 	litest_event(d, EV_KEY, BTN_TOOL_TRIPLETAP, d->ntouches_down == 3);
@@ -1340,7 +1340,7 @@ litest_slot_start(struct litest_device *d,
 	assert(d->ntouches_down >= 0);
 	d->ntouches_down++;
 
-	send_btntool(d);
+	send_btntool(d, !touching);
 
 	if (d->interface->touch_down) {
 		d->interface->touch_down(d, slot, x, y);
@@ -1395,7 +1395,7 @@ litest_touch_up(struct litest_device *d, unsigned int slot)
 	litest_assert_int_gt(d->ntouches_down, 0);
 	d->ntouches_down--;
 
-	send_btntool(d);
+	send_btntool(d, false);
 
 	if (d->interface->touch_up) {
 		d->interface->touch_up(d, slot);
@@ -1559,7 +1559,7 @@ litest_hover_end(struct litest_device *d, unsigned int slot)
 	litest_assert_int_gt(d->ntouches_down, 0);
 	d->ntouches_down--;
 
-	send_btntool(d);
+	send_btntool(d, true);
 
 	if (d->interface->touch_up) {
 		d->interface->touch_up(d, slot);

commit 26c305d04416ff30b0e88818f8f56c6f42146643
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Dec 2 09:27:22 2015 +1000

    test: abort if we have a test that doesn't run for any devices
    
    If the test is filtered out and we never run it generates a false positive.
    Though it isn't listed in the "Checks" summary this is a bit hard to tell when
    you're running >700 tests.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/test/litest.c b/test/litest.c
index 65be6b5..e235bc9 100644
--- a/test/litest.c
+++ b/test/litest.c
@@ -590,6 +590,7 @@ litest_add_tcase(const char *suite_name,
 {
 	struct litest_test_device **dev = devices;
 	struct suite *suite;
+	bool added = false;
 
 	assert(required >= LITEST_DISABLE_DEVICE);
 	assert(excluded >= LITEST_DISABLE_DEVICE);
@@ -607,6 +608,7 @@ litest_add_tcase(const char *suite_name,
 	if (required == LITEST_DISABLE_DEVICE &&
 	    excluded == LITEST_DISABLE_DEVICE) {
 		litest_add_tcase_no_device(suite, func, range);
+		added = true;
 	} else if (required != LITEST_ANY || excluded != LITEST_ANY) {
 		for (; *dev; dev++) {
 			if (filter_device &&
@@ -621,6 +623,7 @@ litest_add_tcase(const char *suite_name,
 						    func,
 						    *dev,
 						    range);
+			added = true;
 		}
 	} else {
 		for (; *dev; dev++) {
@@ -633,8 +636,14 @@ litest_add_tcase(const char *suite_name,
 						    func,
 						    *dev,
 						    range);
+			added = true;
 		}
 	}
+
+	if (!added) {
+		fprintf(stderr, "Test '%s' does not match any devices. Aborting.\n", funcname);
+		abort();
+	}
 }
 
 void

commit 61b2ec3159015b05a59875fc79e09245c0c68c7b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Nov 26 11:51:20 2015 +1000

    Ignore BTN_TOOL_* events when posting button events
    
    These aren't real button events and they are handled elsewhere, either through
    proper touch events on touchscreen or through custom handling in the touchpad
    case.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=93165
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/src/evdev.c b/src/evdev.c
index ec3abc6..4933185 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -439,8 +439,22 @@ evdev_flush_pending_event(struct evdev_device *device, uint64_t time)
 static enum evdev_key_type
 get_key_type(uint16_t code)
 {
-	if (code == BTN_TOUCH)
+	switch (code) {
+	case BTN_TOOL_PEN:
+	case BTN_TOOL_RUBBER:
+	case BTN_TOOL_BRUSH:
+	case BTN_TOOL_PENCIL:
+	case BTN_TOOL_AIRBRUSH:
+	case BTN_TOOL_MOUSE:
+	case BTN_TOOL_LENS:
+	case BTN_TOOL_QUINTTAP:
+	case BTN_TOOL_DOUBLETAP:
+	case BTN_TOOL_TRIPLETAP:
+	case BTN_TOOL_QUADTAP:
+	case BTN_TOOL_FINGER:
+	case BTN_TOUCH:
 		return EVDEV_KEY_TYPE_NONE;
+	}
 
 	if (code >= KEY_ESC && code <= KEY_MICMUTE)
 		return EVDEV_KEY_TYPE_KEY;

commit 5d191d10e7d08422ed1497f78422b26cb1d6ea4d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Dec 2 10:12:48 2015 +1000

    Add a missing closing ) in a comment
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/test/touchpad.c b/test/touchpad.c
index 8bff5a9..9f5e5a9 100644
--- a/test/touchpad.c
+++ b/test/touchpad.c
@@ -3514,7 +3514,7 @@ litest_setup_tests(void)
 	litest_add("touchpad:left-handed", touchpad_left_handed_clickpad_delayed, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
 
 	/* Semi-MT hover tests aren't generic, they only work on this device and
-	 * ignore the semi-mt capability (it doesn't matter for the tests */
+	 * ignore the semi-mt capability (it doesn't matter for the tests) */
 	litest_add_for_device("touchpad:semi-mt-hover", touchpad_semi_mt_hover_noevent, LITEST_SYNAPTICS_HOVER_SEMI_MT);
 	litest_add_for_device("touchpad:semi-mt-hover", touchpad_semi_mt_hover_down, LITEST_SYNAPTICS_HOVER_SEMI_MT);
 	litest_add_for_device("touchpad:semi-mt-hover", touchpad_semi_mt_hover_down_up, LITEST_SYNAPTICS_HOVER_SEMI_MT);

commit 09a296708aa291e0dd5ada2db14f288a3095b61e
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 9 16:21:36 2015 +1000

    touchpad: reduced the 2fg scroll threshold to 1mm
    
    At least on the t440, this is enough to trigger correct detection between
    pinch and scroll 90% of the time. Since scrolling is significantly more
    prevalent than gesturing, erring on the side of scrolling at the cost of
    misdetecting some gestures is acceptable.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/src/evdev-mt-touchpad-gestures.c b/src/evdev-mt-touchpad-gestures.c
index cc26e2a..80aa89f 100644
--- a/src/evdev-mt-touchpad-gestures.c
+++ b/src/evdev-mt-touchpad-gestures.c
@@ -195,7 +195,7 @@ tp_gesture_get_direction(struct tp_dispatch *tp, struct tp_touch *touch)
 	    (tp->device->model_flags & EVDEV_MODEL_ELANTECH_TOUCHPAD) == 0)
 		move_threshold = TP_MM_TO_DPI_NORMALIZED(4);
 	else
-		move_threshold = TP_MM_TO_DPI_NORMALIZED(2);
+		move_threshold = TP_MM_TO_DPI_NORMALIZED(1);
 
 	delta = device_delta(touch->point, touch->gesture.initial);
 
diff --git a/test/gestures.c b/test/gestures.c
index 9e44724..9fc73b9 100644
--- a/test/gestures.c
+++ b/test/gestures.c
@@ -294,13 +294,13 @@ START_TEST(gestures_spread)
 	for (i = 0; i < 15; i++) {
 		litest_push_event_frame(dev);
 		if (dir_x > 0.0)
-			dir_x += 2;
+			dir_x += 1;
 		else if (dir_x < 0.0)
-			dir_x -= 2;
+			dir_x -= 1;
 		if (dir_y > 0.0)
-			dir_y += 2;
+			dir_y += 1;
 		else if (dir_y < 0.0)
-			dir_y -= 2;
+			dir_y -= 1;
 		litest_touch_move(dev,
 				  0,
 				  50 + dir_x,

commit 12e9a940b3ead32a6489170c1f234e66eb781147
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 16 08:36:23 2015 +1000

    configure.ac: libinput 1.1.1
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index 0703dd8..c841a5f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ AC_PREREQ([2.64])
 
 m4_define([libinput_major_version], [1])
 m4_define([libinput_minor_version], [1])
-m4_define([libinput_micro_version], [0])
+m4_define([libinput_micro_version], [1])
 m4_define([libinput_version],
           [libinput_major_version.libinput_minor_version.libinput_micro_version])
 
@@ -31,7 +31,7 @@ AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
 # b) If interfaces have been changed or added, but binary compatibility has
 #    been preserved, change to C+1:0:A+1
 # c) If the interface is the same as the previous version, change to C:R+1:A
-LIBINPUT_LT_VERSION=16:0:6
+LIBINPUT_LT_VERSION=16:1:6
 AC_SUBST(LIBINPUT_LT_VERSION)
 
 AM_SILENT_RULES([yes])

commit 334c3faa7b20d510f36faed4aa12ba2f8c7b078c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 16 07:44:12 2015 +1000

    doc: add a link to the dwt config call to the doc
    
    And link the software buttons sentence to the t440 page.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/doc/palm-detection.dox b/doc/palm-detection.dox
index d30a207..73c81b2 100644
--- a/doc/palm-detection.dox
+++ b/doc/palm-detection.dox
@@ -78,7 +78,10 @@ Notable behaviors of libinput's disable-while-typing feature:
   has stopped, it is thus possible to rest the palm on the touchpad while
   typing.
 - Physical buttons work even while the touchpad is disabled. This includes
-  software-emulated buttons.
+  @ref t440_support "software-emulated buttons".
+
+Disable-while-typing can be enabled and disabled by calling
+libinput_device_config_dwt_set_enabled().
 
 @section thumb-detection Thumb detection
 

commit acfff361a7d0b7b86ccd68caede78187c1b8d474
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 9 15:42:06 2015 +1000

    tools: take the start time before initializing the context
    
    Otherwise events that are already queued before the first libinput_dispatch()
    have a negative timestamp.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/tools/event-debug.c b/tools/event-debug.c
index 1ac0086..c603296 100644
--- a/tools/event-debug.c
+++ b/tools/event-debug.c
@@ -471,6 +471,9 @@ main(int argc, char **argv)
 	struct libinput *li;
 	struct timespec tp;
 
+	clock_gettime(CLOCK_MONOTONIC, &tp);
+	start_time = tp.tv_sec * 1000 + tp.tv_nsec / 1000000;
+
 	tools_init_context(&context);
 
 	if (tools_parse_args(argc, argv, &context))
@@ -480,9 +483,6 @@ main(int argc, char **argv)
 	if (!li)
 		return 1;
 
-	clock_gettime(CLOCK_MONOTONIC, &tp);
-	start_time = tp.tv_sec * 1000 + tp.tv_nsec / 1000000;
-
 	mainloop(li);
 
 	libinput_unref(li);

commit c9149562113ee3121862995511adf6c122f130f5
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 9 10:18:17 2015 +1000

    test: add a device to check MOUSE_WHEEL_CLICK_ANGLE handling
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/test/Makefile.am b/test/Makefile.am
index ff1acda..e4ed8e5 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -28,6 +28,7 @@ liblitest_la_SOURCES = \
 	litest-device-mouse.c \
 	litest-device-mouse-roccat.c \
 	litest-device-mouse-low-dpi.c \
+	litest-device-mouse-wheel-click-angle.c \
 	litest-device-ms-surface-cover.c \
 	litest-device-protocol-a-touch-screen.c \
 	litest-device-qemu-usb-tablet.c \
diff --git a/test/litest-device-mouse-wheel-click-angle.c b/test/litest-device-mouse-wheel-click-angle.c
new file mode 100644
index 0000000..1460ee3
--- /dev/null
+++ b/test/litest-device-mouse-wheel-click-angle.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright © 2015 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "litest.h"
+#include "litest-int.h"
+
+static void litest_mouse_setup(void)
+{
+	struct litest_device *d = litest_create_device(LITEST_MOUSE_WHEEL_CLICK_ANGLE);
+	litest_set_current_device(d);
+}
+
+static struct input_id input_id = {
+	.bustype = 0x3,
+	.vendor = 0x1234,
+	.product = 0x5678,
+};
+
+static int events[] = {
+	EV_KEY, BTN_LEFT,
+	EV_KEY, BTN_RIGHT,
+	EV_KEY, BTN_MIDDLE,
+	EV_REL, REL_X,
+	EV_REL, REL_Y,
+	EV_REL, REL_WHEEL,
+	-1 , -1,
+};
+
+static const char udev_rule[] =
+"ACTION==\"remove\", GOTO=\"wheel_click_angle_end\"\n"
+"KERNEL!=\"event*\", GOTO=\"wheel_click_angle_end\"\n"
+"\n"
+"ATTRS{name}==\"litest Wheel Click Angle Mouse*\",\\\n"
+"    ENV{MOUSE_WHEEL_CLICK_ANGLE}=\"-7\"\n"
+"\n"
+"LABEL=\"wheel_click_angle_end\"";
+
+struct litest_test_device litest_mouse_wheel_click_angle_device = {
+	.type = LITEST_MOUSE_WHEEL_CLICK_ANGLE,
+	.features = LITEST_RELATIVE | LITEST_BUTTON | LITEST_WHEEL,
+	.shortname = "mouse-wheelclickangle",
+	.setup = litest_mouse_setup,
+	.interface = NULL,
+
+	.name = "Wheel Click Angle Mouse",
+	.id = &input_id,
+	.absinfo = NULL,
+	.events = events,
+	.udev_rule = udev_rule,
+};
diff --git a/test/litest.c b/test/litest.c
index c7cb274..65be6b5 100644
--- a/test/litest.c
+++ b/test/litest.c
@@ -366,6 +366,7 @@ extern struct litest_test_device litest_nexus4_device;
 extern struct litest_test_device litest_magicpad_device;
 extern struct litest_test_device litest_elantech_touchpad_device;
 extern struct litest_test_device litest_mouse_gladius_device;
+extern struct litest_test_device litest_mouse_wheel_click_angle_device;
 
 struct litest_test_device* devices[] = {
 	&litest_synaptics_clickpad_device,
@@ -398,6 +399,7 @@ struct litest_test_device* devices[] = {
 	&litest_magicpad_device,
 	&litest_elantech_touchpad_device,
 	&litest_mouse_gladius_device,
+	&litest_mouse_wheel_click_angle_device,
 	NULL,
 };
 
diff --git a/test/litest.h b/test/litest.h
index 058057e..ed23c8a 100644
--- a/test/litest.h
+++ b/test/litest.h
@@ -143,6 +143,7 @@ enum litest_device_type {
 	LITEST_MAGIC_TRACKPAD = -29,
 	LITEST_ELANTECH_TOUCHPAD = -30,
 	LITEST_MOUSE_GLADIUS = -31,
+	LITEST_MOUSE_WHEEL_CLICK_ANGLE = -32,
 };
 
 enum litest_device_feature {
diff --git a/test/pointer.c b/test/pointer.c
index e12034a..ba15815 100644
--- a/test/pointer.c
+++ b/test/pointer.c
@@ -473,6 +473,30 @@ START_TEST(pointer_button_auto_release)
 }
 END_TEST
 
+static inline int
+wheel_click_angle(struct litest_device *dev)
+{
+	struct udev_device *d;
+	const char *prop;
+	const int default_angle = 15;
+	int angle = default_angle;
+
+	d = libinput_device_get_udev_device(dev->libinput_device);
+	litest_assert_ptr_notnull(d);
+
+	prop = udev_device_get_property_value(d, "MOUSE_WHEEL_CLICK_ANGLE");
+	if (!prop)
+		goto out;
+
+	angle = parse_mouse_wheel_click_angle_property(prop);
+	if (angle == 0)
+		angle = default_angle;
+
+out:
+	udev_device_unref(d);
+	return angle;
+}
+
 static void
 test_wheel_event(struct litest_device *dev, int which, int amount)
 {
@@ -481,11 +505,11 @@ test_wheel_event(struct litest_device *dev, int which, int amount)
 	struct libinput_event_pointer *ptrev;
 	enum libinput_pointer_axis axis;
 
-	/* the current evdev implementation scales the scroll wheel events
-	   up by a factor 15 */
-	const int scroll_step = 15;
-	int expected = amount * scroll_step;
-	int discrete = amount;
+	int scroll_step, expected, discrete;;
+
+	scroll_step = wheel_click_angle(dev);
+	expected = amount * scroll_step;
+	discrete = amount;
 
 	if (libinput_device_config_scroll_get_natural_scroll_enabled(dev->libinput_device)) {
 		expected *= -1;

commit e68598855a93e2ff71c11a3088d5f5a097de70dc
Author: Tomi Leppänen <tomi.leppanen@telemail.fi>
Date:   Thu Sep 17 15:05:25 2015 +0300

    Documentation fixes to arrows in svg files
    
    There were two files (doc/svg/{edge,twofinger}-scrolling.svg) that had both
    arrow heads pointing to wrong direction. Those arrow heads used markers but
    their ids were defined wrong and therefore they displayed weirdly. On Firefox
    the arrow head that should have pointed to left pointed actually to right.
    
    This commit fixes that problem by defining the marker ids correctly.
    
    I tested on Firefox 40.0.3 that the arrow heads are now displayed correctly.
    
    Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
    Tested-by: Bryce Harrington <bryce@osg.samsung.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/doc/svg/edge-scrolling.svg b/doc/svg/edge-scrolling.svg
index cba72c5..c768e80 100644
--- a/doc/svg/edge-scrolling.svg
+++ b/doc/svg/edge-scrolling.svg
@@ -105,7 +105,7 @@
     <path
        d="m 455.56456,762.87232 c 0,0 -235.01231,1.01015 -235.01231,1.01015"
        id="path3702"
-       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lstart)" />
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart-4);marker-end:url(#Arrow1Lend-2)" />
     <g
        transform="matrix(0.98314313,0.18283763,-0.18283763,0.98314313,132.81621,-12.620089)"
        id="g3663-9">
diff --git a/doc/svg/twofinger-scrolling.svg b/doc/svg/twofinger-scrolling.svg
index e182a7f..7830c25 100644
--- a/doc/svg/twofinger-scrolling.svg
+++ b/doc/svg/twofinger-scrolling.svg
@@ -127,7 +127,7 @@


Reply to: