libinput: Changes to 'ubuntu'
configure.ac | 10
debian/changelog | 43
debian/control | 41
debian/copyright | 49
debian/libinput-bin.install | 1
debian/libinput10-udeb.install | 1
debian/libinput10.symbols | 18
debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch | 10
debian/patches/series | 1
debian/patches/touch-point-orientation-size.patch | 128 --
debian/patches/touchpad-add-a-middle-button-software-area.diff | 302 ----
debian/rules | 11
doc/Makefile.am | 13
doc/clickpad-softbuttons.dox | 14
doc/page-hierarchy.dox | 1
doc/svg/software-buttons.svg | 30
doc/svg/tablet-interfaces.svg | 325 +++++
doc/svg/tablet-left-handed.svg | 469 +++++++
doc/tablet-support.dox | 79 +
doc/touchpad-jumping-cursors.dox | 54
src/Makefile.am | 2
src/evdev-mt-touchpad-buttons.c | 31
src/evdev-mt-touchpad-gestures.c | 2
src/evdev-mt-touchpad.c | 71 -
src/evdev-mt-touchpad.h | 3
src/evdev-tablet-pad.c | 624 ++++++++++
src/evdev-tablet-pad.h | 69 +
src/evdev-tablet.c | 88 -
src/evdev-tablet.h | 2
src/evdev.c | 268 +++-
src/evdev.h | 36
src/libinput-private.h | 26
src/libinput-util.h | 5
src/libinput.c | 257 ++++
src/libinput.h | 363 +++++
src/libinput.sym | 18
src/timer.c | 3
test/Makefile.am | 8
test/gestures.c | 8
test/keyboard.c | 42
test/litest-device-generic-singletouch.c | 1
test/litest-device-synaptics-x1-carbon-3rd.c | 11
test/litest-device-touchscreen-fuzz.c | 96 +
test/litest-device-wacom-intuos3-pad.c | 117 +
test/litest-device-wacom-intuos5-pad.c | 122 +
test/litest-int.h | 16
test/litest.c | 272 ++++
test/litest.h | 134 +-
test/misc.c | 51
test/pad.c | 431 ++++++
test/path.c | 2
test/pointer.c | 148 ++
test/tablet.c | 72 +
test/touch.c | 50
test/touchpad-buttons.c | 30
test/touchpad.c | 112 +
test/trackpoint.c | 1
tools/event-debug.c | 91 +
tools/event-gui.c | 46
tools/publish-doc | 9
udev/90-libinput-model-quirks.hwdb | 36
61 files changed, 4654 insertions(+), 720 deletions(-)
New commits:
commit e36c3a424b9bdcce7d427a10f11afed62c5cc9fb
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Wed Jun 8 10:58:06 2016 +0300
release to yakkety
diff --git a/debian/changelog b/debian/changelog
index dcdc675..aacd389 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,10 @@
-libinput (1.3.1-1ubuntu1) UNRELEASED; urgency=medium
+libinput (1.3.1-1ubuntu1) yakkety; urgency=medium
- * Merge from debian.
+ * Merge from debian. (LP: #1587396, #1571291)
* Refresh patches, drop touchpad-add-a-middle-button-software-area.diff
which is upstream.
- -- Timo Aaltonen <tjaalton@debian.org> Wed, 08 Jun 2016 08:39:45 +0300
+ -- Timo Aaltonen <tjaalton@debian.org> Wed, 08 Jun 2016 10:57:48 +0300
libinput (1.3.1-1) unstable; urgency=medium
commit 98574efedddfc9511e71930394194443c73a709b
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Wed Jun 8 10:57:46 2016 +0300
merge, update/drop patches
diff --git a/debian/changelog b/debian/changelog
index 5441be6..dcdc675 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+libinput (1.3.1-1ubuntu1) UNRELEASED; urgency=medium
+
+ * Merge from debian.
+ * Refresh patches, drop touchpad-add-a-middle-button-software-area.diff
+ which is upstream.
+
+ -- Timo Aaltonen <tjaalton@debian.org> Wed, 08 Jun 2016 08:39:45 +0300
+
libinput (1.3.1-1) unstable; urgency=medium
* New upstream release.
diff --git a/debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch b/debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch
index 0473fdf..d3254c4 100644
--- a/debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch
+++ b/debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch
@@ -17,7 +17,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
--- a/src/evdev.c
+++ b/src/evdev.c
-@@ -665,16 +665,16 @@ evdev_process_key(struct evdev_device *d
+@@ -714,16 +714,16 @@ evdev_process_key(struct evdev_device *d
if (e->value == 2)
return;
@@ -40,7 +40,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
if (e->value == 0) {
--- a/test/touch.c
+++ b/test/touch.c
-@@ -912,6 +912,114 @@ START_TEST(touch_point_no_minor_or_orien
+@@ -958,6 +958,114 @@ START_TEST(touch_point_no_minor_or_orien
}
END_TEST
@@ -155,10 +155,10 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
void
litest_setup_tests(void)
{
-@@ -942,4 +1050,6 @@ litest_setup_tests(void)
- litest_add_ranged("touch:state", touch_initial_state, LITEST_TOUCH, LITEST_PROTOCOL_A, &axes);
-
+@@ -990,4 +1098,6 @@ litest_setup_tests(void)
litest_add("touch:time", touch_time_usec, LITEST_TOUCH, LITEST_TOUCHPAD);
+
+ litest_add_for_device("touch:fuzz", touch_fuzz, LITEST_MULTITOUCH_FUZZ_SCREEN);
+
+ litest_add_no_device("touch:special events", touchscreen_with_btn_tool_finger_on_down);
}
diff --git a/debian/patches/series b/debian/patches/series
index 1b21a7f..63b23e6 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
touch-point-orientation-size.patch
fix-premature-flushing-of-evdev-event-on-mx4.patch
-touchpad-add-a-middle-button-software-area.diff
diff --git a/debian/patches/touch-point-orientation-size.patch b/debian/patches/touch-point-orientation-size.patch
index 298a460..2c40b72 100644
--- a/debian/patches/touch-point-orientation-size.patch
+++ b/debian/patches/touch-point-orientation-size.patch
@@ -42,10 +42,10 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
$(srcdir)/test-suite.dox \
$(srcdir)/tools.dox \
+ $(srcdir)/touch-event-properties.dox \
+ $(srcdir)/touchpad-jumping-cursors.dox \
$(srcdir)/touchpads.dox
- diagram_files = \
-@@ -51,6 +52,7 @@ diagram_files = \
+@@ -60,6 +61,7 @@ diagram_files = \
$(srcdir)/svg/thumb-detection.svg \
$(srcdir)/svg/top-software-buttons.svg \
$(srcdir)/svg/touchscreen-gestures.svg \
@@ -55,7 +55,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
style_files = \
--- a/doc/page-hierarchy.dox
+++ b/doc/page-hierarchy.dox
-@@ -11,6 +11,7 @@
+@@ -12,6 +12,7 @@
@page touchscreens Touchscreens
- @subpage absolute_axes
@@ -460,7 +460,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
+*/
--- a/src/evdev.c
+++ b/src/evdev.c
-@@ -45,6 +45,10 @@
+@@ -49,6 +49,10 @@
#define DEFAULT_WHEEL_CLICK_ANGLE 15
#define DEFAULT_MIDDLE_BUTTON_SCROLL_TIMEOUT ms2us(200)
@@ -471,7 +471,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
enum evdev_key_type {
EVDEV_KEY_TYPE_NONE,
-@@ -258,6 +262,100 @@ evdev_device_transform_y(struct evdev_de
+@@ -318,6 +322,100 @@ evdev_device_transform_y(struct evdev_de
return scale_axis(device->abs.absinfo_y, y, height);
}
@@ -572,91 +572,37 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
static inline void
normalize_delta(struct evdev_device *device,
const struct device_coords *delta,
-@@ -295,8 +393,15 @@ evdev_flush_pending_event(struct evdev_d
- struct normalized_coords accel, unaccel;
+@@ -382,6 +480,11 @@ evdev_flush_pending_event(struct evdev_d
struct device_coords point;
struct device_float_coords raw;
-+ struct mt_slot *slot_data;
+ struct mt_slot *slot = NULL;
+ struct ellipse default_touch = {
+ .major = DEFAULT_TOUCH_MAJOR,
+ .minor = DEFAULT_TOUCH_MINOR,
+ .orientation = DEFAULT_TOUCH_ORIENTATION
+ };
- slot = device->mt.slot;
-+ slot_data = &device->mt.slots[slot];
-
- switch (device->pending_event) {
- case EVDEV_NONE:
-@@ -337,7 +442,7 @@ evdev_flush_pending_event(struct evdev_d
- if (!(device->seat_caps & EVDEV_DEVICE_TOUCH))
- break;
-
-- if (device->mt.slots[slot].seat_slot != -1) {
-+ if (slot_data->seat_slot != -1) {
- log_bug_kernel(libinput,
- "%s: Driver sent multiple touch down for the "
- "same slot",
-@@ -346,38 +451,48 @@ evdev_flush_pending_event(struct evdev_d
- }
-
- seat_slot = ffs(~seat->slot_map) - 1;
-- device->mt.slots[slot].seat_slot = seat_slot;
-+ slot_data->seat_slot = seat_slot;
-
- if (seat_slot == -1)
- break;
-
- seat->slot_map |= 1 << seat_slot;
-- point = device->mt.slots[slot].point;
-+ point = slot_data->point;
+ slot_idx = device->mt.slot;
+ if (device->mt.slots)
+@@ -446,7 +549,7 @@ evdev_flush_pending_event(struct evdev_d
evdev_transform_absolute(device, &point);
-- touch_notify_touch_down(base, time, slot, seat_slot,
+ touch_notify_touch_down(base, time, slot_idx, seat_slot,
- &point);
-+ touch_notify_touch_down(base,
-+ time,
-+ slot,
-+ seat_slot,
-+ &point,
-+ &slot_data->area,
-+ slot_data->pressure);
++ &point, &slot->area, slot->pressure);
break;
case EVDEV_ABSOLUTE_MT_MOTION:
if (!(device->seat_caps & EVDEV_DEVICE_TOUCH))
- break;
-
-- seat_slot = device->mt.slots[slot].seat_slot;
-- point = device->mt.slots[slot].point;
-+ seat_slot = slot_data->seat_slot;
-+ point = slot_data->point;
-
- if (seat_slot == -1)
- break;
+@@ -463,7 +566,7 @@ evdev_flush_pending_event(struct evdev_d
evdev_transform_absolute(device, &point);
-- touch_notify_touch_motion(base, time, slot, seat_slot,
+ touch_notify_touch_motion(base, time, slot_idx, seat_slot,
- &point);
-+ touch_notify_touch_motion(base,
-+ time,
-+ slot,
-+ seat_slot,
-+ &point,
-+ &slot_data->area,
-+ slot_data->pressure);
++ &point, &slot->area, slot->pressure);
break;
case EVDEV_ABSOLUTE_MT_UP:
if (!(device->seat_caps & EVDEV_DEVICE_TOUCH))
- break;
-
-- seat_slot = device->mt.slots[slot].seat_slot;
-- device->mt.slots[slot].seat_slot = -1;
-+ seat_slot = slot_data->seat_slot;
-+ slot_data->seat_slot = -1;
-
- if (seat_slot == -1)
- break;
-@@ -409,7 +524,13 @@ evdev_flush_pending_event(struct evdev_d
+@@ -502,7 +605,13 @@ evdev_flush_pending_event(struct evdev_d
point = device->abs.point;
evdev_transform_absolute(device, &point);
@@ -671,7 +617,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
break;
case EVDEV_ABSOLUTE_MOTION:
point = device->abs.point;
-@@ -421,8 +542,13 @@ evdev_flush_pending_event(struct evdev_d
+@@ -514,8 +623,13 @@ evdev_flush_pending_event(struct evdev_d
if (seat_slot == -1)
break;
@@ -687,7 +633,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
} else if (device->seat_caps & EVDEV_DEVICE_POINTER) {
pointer_notify_motion_absolute(base, time, &point);
}
-@@ -596,8 +722,9 @@ evdev_process_touch(struct evdev_device
+@@ -652,8 +766,9 @@ evdev_process_touch(struct evdev_device
struct input_event *e,
uint64_t time)
{
@@ -699,7 +645,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
if ((size_t)e->value >= device->mt.slots_len) {
log_bug_libinput(device->base.seat->libinput,
"%s exceeds slots (%d of %zd)\n",
-@@ -608,8 +735,7 @@ evdev_process_touch(struct evdev_device
+@@ -664,8 +779,7 @@ evdev_process_touch(struct evdev_device
}
evdev_flush_pending_event(device, time);
device->mt.slot = e->value;
@@ -709,7 +655,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
if (device->pending_event != EVDEV_NONE &&
device->pending_event != EVDEV_ABSOLUTE_MT_MOTION)
evdev_flush_pending_event(device, time);
-@@ -617,17 +743,34 @@ evdev_process_touch(struct evdev_device
+@@ -673,17 +787,34 @@ evdev_process_touch(struct evdev_device
device->pending_event = EVDEV_ABSOLUTE_MT_DOWN;
else
device->pending_event = EVDEV_ABSOLUTE_MT_UP;
@@ -754,7 +700,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
}
}
-@@ -1989,6 +2132,20 @@ evdev_configure_mt_device(struct evdev_d
+@@ -2051,6 +2182,20 @@ evdev_configure_mt_device(struct evdev_d
slots[slot].point.y = libevdev_get_slot_value(evdev,
slot,
ABS_MT_POSITION_Y);
@@ -775,7 +721,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
}
device->mt.slots = slots;
device->mt.slots_len = num_slots;
-@@ -2060,6 +2217,15 @@ evdev_configure_device(struct evdev_devi
+@@ -2120,6 +2265,15 @@ evdev_configure_device(struct evdev_devi
return -1;
}
@@ -793,16 +739,16 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
--- a/src/evdev.h
+++ b/src/evdev.h
-@@ -119,6 +119,8 @@ enum evdev_device_model {
- struct mt_slot {
+@@ -122,6 +122,8 @@ struct mt_slot {
int32_t seat_slot;
struct device_coords point;
+ struct device_coords hysteresis_center;
+ struct ellipse area;
+ int32_t pressure;
};
struct evdev_device {
-@@ -135,6 +137,8 @@ struct evdev_device {
+@@ -138,6 +140,8 @@ struct evdev_device {
int fd;
struct {
const struct input_absinfo *absinfo_x, *absinfo_y;
@@ -811,7 +757,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
int fake_resolution;
struct device_coords point;
-@@ -376,6 +380,26 @@ double
+@@ -394,6 +398,26 @@ double
evdev_device_transform_y(struct evdev_device *device,
double y,
uint32_t height);
@@ -840,7 +786,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
--- a/src/libinput-private.h
+++ b/src/libinput-private.h
-@@ -40,6 +40,11 @@ struct device_coords {
+@@ -48,6 +48,11 @@ struct device_coords {
int x, y;
};
@@ -852,7 +798,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
/*
* A coordinate pair in device coordinates, capable of holding non discrete
* values, this is necessary e.g. when device coordinates get averaged.
-@@ -461,14 +466,18 @@ touch_notify_touch_down(struct libinput_
+@@ -469,14 +474,18 @@ touch_notify_touch_down(struct libinput_
uint64_t time,
int32_t slot,
int32_t seat_slot,
@@ -875,7 +821,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
touch_notify_touch_up(struct libinput_device *device,
--- a/src/libinput-util.h
+++ b/src/libinput-util.h
-@@ -145,6 +145,12 @@ msleep(unsigned int ms)
+@@ -146,6 +146,12 @@ msleep(unsigned int ms)
usleep(ms * 1000);
}
@@ -899,7 +845,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
};
struct libinput_event_gesture {
-@@ -758,6 +760,204 @@ libinput_event_touch_get_y(struct libinp
+@@ -788,6 +790,204 @@ libinput_event_touch_get_y(struct libinp
return evdev_convert_to_mm(device->abs.absinfo_y, event->point.y);
}
@@ -1104,7 +1050,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
LIBINPUT_EXPORT uint32_t
libinput_event_gesture_get_time(struct libinput_event_gesture *event)
{
-@@ -2113,7 +2313,9 @@ touch_notify_touch_down(struct libinput_
+@@ -2146,7 +2346,9 @@ touch_notify_touch_down(struct libinput_
uint64_t time,
int32_t slot,
int32_t seat_slot,
@@ -1115,7 +1061,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
{
struct libinput_event_touch *touch_event;
-@@ -2129,6 +2331,8 @@ touch_notify_touch_down(struct libinput_
+@@ -2162,6 +2364,8 @@ touch_notify_touch_down(struct libinput_
.slot = slot,
.seat_slot = seat_slot,
.point = *point,
@@ -1124,7 +1070,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
};
post_device_event(device, time,
-@@ -2141,7 +2345,9 @@ touch_notify_touch_motion(struct libinpu
+@@ -2174,7 +2378,9 @@ touch_notify_touch_motion(struct libinpu
uint64_t time,
int32_t slot,
int32_t seat_slot,
@@ -1135,7 +1081,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
{
struct libinput_event_touch *touch_event;
-@@ -2157,6 +2363,8 @@ touch_notify_touch_motion(struct libinpu
+@@ -2190,6 +2396,8 @@ touch_notify_touch_motion(struct libinpu
.slot = slot,
.seat_slot = seat_slot,
.point = *point,
@@ -1146,7 +1092,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
post_device_event(device, time,
--- a/src/libinput.h
+++ b/src/libinput.h
-@@ -1151,6 +1151,228 @@ libinput_event_touch_get_y_transformed(s
+@@ -1233,6 +1233,228 @@ libinput_event_touch_get_y_transformed(s
/**
* @ingroup event_touch
*
@@ -1399,7 +1345,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
libinput_device_config_accel_get_profiles;
--- a/test/touch.c
+++ b/test/touch.c
-@@ -673,6 +673,245 @@ START_TEST(touch_time_usec)
+@@ -719,6 +719,245 @@ START_TEST(touch_fuzz)
}
END_TEST
@@ -1645,7 +1591,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
void
litest_setup_tests(void)
{
-@@ -697,6 +936,8 @@ litest_setup_tests(void)
+@@ -743,6 +982,8 @@ litest_setup_tests(void)
litest_add("touch:protocol a", touch_protocol_a_init, LITEST_PROTOCOL_A, LITEST_ANY);
litest_add("touch:protocol a", touch_protocol_a_touch, LITEST_PROTOCOL_A, LITEST_ANY);
litest_add("touch:protocol a", touch_protocol_a_2fg_touch, LITEST_PROTOCOL_A, LITEST_ANY);
diff --git a/debian/patches/touchpad-add-a-middle-button-software-area.diff b/debian/patches/touchpad-add-a-middle-button-software-area.diff
deleted file mode 100644
index 441148a..0000000
--- a/debian/patches/touchpad-add-a-middle-button-software-area.diff
+++ /dev/null
@@ -1,302 +0,0 @@
-commit 886b5a2cd8c785e48ddf5ceb4a902cd1f518d2a9
-Author: Peter Hutterer <peter.hutterer@who-t.net>
-Date: Mon Apr 4 10:06:36 2016 +1000
-
- touchpad: add a middle button software area
-
- Middle button interaction is most commonly to paste and it is a single-event
- interaction (button press). We provided middle button in software button mode
- by emulating it with a two-finger press with L+R down at the same time. This
- is also what many touchpads are spectacularly bad at, it is very common to
- detect the physical button down event before the second finger registers,
- resulting in left or right clicks where a middle button should be triggered.
-
- Unless the fingers are resting on the touchpad for at least one scanout, the
- success rate for middle button emulation is only at 70% or so.
-
- This patch adds a 25%-width middle button area between the left and the right
- software button, everything else stays the same. To avoid immediate breakage,
- the middle button emulation remains but may be removed in the future.
- The doc is updated to only refer to the middle button area now.
-
- https://bugs.freedesktop.org/show_bug.cgi?id=94755
-
- Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
- Reviewed-by: Hans de Goede <hdegoede@redhat.com>
-
-diff --git a/doc/clickpad-softbuttons.dox b/doc/clickpad-softbuttons.dox
-index a4f2e44..cf4c8c9 100644
---- a/doc/clickpad-softbuttons.dox
-+++ b/doc/clickpad-softbuttons.dox
-@@ -20,16 +20,20 @@ generated by libinput and passed to the caller in response to a click.
- @section software_buttons Software button areas
-
- On most clickpads, this is the default behavior. The bottom of the touchpad
--is split in the middle to generate left or right button events on click. The
--height of the button area depends on the hardware but is usually around
--10mm.
-+is split into three distinct areas generate left, middle or right button
-+events on click. The height of the button area depends on the hardware but
-+is usually around 10mm.
-
- Left, right and middle button events can be triggered as follows:
- - if a finger is in the main area or the left button area, a click generates
- left button events.
- - if a finger is in the right area, a click generates right button events.
--- if there is a finger in both the left and right button area, a click
-- generates middle button events.
-+- if a finger is in the middle area, a click generates middle button events.
-+
-+The middle button is always centered on the touchpad and smaller in size
-+than the left or right button. The actual size is device-dependent though as
-+many touchpads do not have visible markings for the middle button the exact
-+location of the button is not visibly obvious.
-
- @image html software-buttons.svg "Left, right and middle-button click with software button areas"
-
-diff --git a/doc/svg/software-buttons.svg b/doc/svg/software-buttons.svg
-index 903535c..c0bc610 100644
---- a/doc/svg/software-buttons.svg
-+++ b/doc/svg/software-buttons.svg
-@@ -41,8 +41,8 @@
- id="namedview4312"
- showgrid="false"
- inkscape:zoom="0.57798581"
-- inkscape:cx="1134.9723"
-- inkscape:cy="-71.183873"
-+ inkscape:cx="842.57758"
-+ inkscape:cy="-74.644166"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
-@@ -106,7 +106,7 @@
- id="rect2858-7"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.19376326;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" />
- <g
-- transform="matrix(0.79657897,0.11742288,-0.14814182,0.631399,665.11943,-345.64117)"
-+ transform="matrix(0.79657897,0.11742288,-0.14814182,0.631399,749.8966,-336.99044)"
- id="g3663-9-8">
- <path
- d="m 388.57143,893.79076 -57.14285,-130 c 0,0 -30.0247,-58.84827 4.28571,-70.00001 27.07438,-8.79984 37.32196,9.59496 40,14.64286 27.54455,51.91936 84.64285,173.21429 84.64285,173.21429 l -0.71428,0 -71.07143,12.14286 z"
-@@ -125,30 +125,6 @@
- inkscape:connector-curvature="0" />
- </g>
- <g
-- id="g4656"
-- transform="translate(-0.31997204,0.28487182)">
-- <g
-- id="g4639">
-- <path
-- inkscape:connector-curvature="0"
-- style="fill:none;stroke:#000000;stroke-width:0.72135597px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-- id="path2820-0-5"
-- d="m 970.15914,263.93369 32.58666,-97.47985 c 0,0 12.2603,-46.32869 38.5506,-33.925 20.7457,9.78778 17.4301,24.72594 16.4399,28.75425 -10.1846,41.43257 -30.105,105.84033 -30.105,105.84033 l -0.428,-0.37827 z"
-- sodipodi:nodetypes="ccssccc" />
-- <path
-- inkscape:connector-curvature="0"
-- style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffccaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.00144271;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate"
-- id="path2824-9-3"
-- d="m 987.16367,214.84092 c 8.97014,-26.84686 16.75933,-50.19953 17.30923,-51.89481 3.8651,-11.91483 10.3862,-22.76212 16.5622,-27.54951 6.8496,-5.30946 13.8243,-5.75615 21.9108,-1.40323 3.7999,2.04543 6.0302,3.61208 8.2265,5.77836 2.5214,2.487 3.6881,4.17002 5.1008,7.35828 1.3655,3.08181 1.9391,7.11725 1.5051,10.58923 -0.597,4.77663 -10.2821,40.41668 -20.9931,77.25236 -7.7256,26.56907 -9.371,31.11182 -9.5644,31.10964 -0.1479,-0.002 -55.70067,-1.83937 -56.08626,-2.18017 -0.16723,-0.1478 6.29681,-19.93218 16.02913,-49.06015 z"
-- sodipodi:nodetypes="scsssscsccs" />
-- <path
-- inkscape:connector-curvature="0"
-- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.92000002;fill:#ffe6d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2;marker:none;enable-background:accumulate"
-- id="path2824-7-8-8"
-- d="m 1008.3595,164.57667 c 3.8651,-11.91483 7.6606,-19.35039 13.8366,-24.13778 6.8495,-5.30946 12.0833,-5.57765 20.1698,-1.22474 9.3061,4.73331 12.9905,9.62271 11.9094,19.03362 -6.3459,19.3209 -6.9054,22.12042 -9.2168,26.32727 -0.1479,-0.002 -33.6651,-14.70742 -35.0296,-15.23839 -1.4035,-0.54616 -1.8884,-3.70289 -1.6694,-4.75998 z" />
-- </g>
-- </g>
-- <g
- transform="translate(-386.56163,2.2570367)"
- id="g4656-3">
- <g
-diff --git a/src/evdev-mt-touchpad-buttons.c b/src/evdev-mt-touchpad-buttons.c
-index 076eab0..a9b7521 100644
---- a/src/evdev-mt-touchpad-buttons.c
-+++ b/src/evdev-mt-touchpad-buttons.c
-@@ -64,6 +64,7 @@ static inline const char*
- button_event_to_str(enum button_event event) {
- switch(event) {
- CASE_RETURN_STRING(BUTTON_EVENT_IN_BOTTOM_R);
-+ CASE_RETURN_STRING(BUTTON_EVENT_IN_BOTTOM_M);
- CASE_RETURN_STRING(BUTTON_EVENT_IN_BOTTOM_L);
- CASE_RETURN_STRING(BUTTON_EVENT_IN_TOP_R);
- CASE_RETURN_STRING(BUTTON_EVENT_IN_TOP_M);
-@@ -93,10 +94,20 @@ is_inside_bottom_right_area(const struct tp_dispatch *tp,
- }
-
- static inline bool
-+is_inside_bottom_middle_area(const struct tp_dispatch *tp,
-+ const struct tp_touch *t)
-+{
-+ return is_inside_bottom_button_area(tp, t) &&
-+ !is_inside_bottom_right_area(tp, t) &&
-+ t->point.x > tp->buttons.bottom_area.middlebutton_left_edge;
-+}
-+
-+static inline bool
- is_inside_bottom_left_area(const struct tp_dispatch *tp,
- const struct tp_touch *t)
- {
- return is_inside_bottom_button_area(tp, t) &&
-+ !is_inside_bottom_middle_area(tp, t) &&
- !is_inside_bottom_right_area(tp, t);
- }
-
-@@ -192,6 +203,7 @@ tp_button_none_handle_event(struct tp_dispatch *tp,
- {
- switch (event) {
- case BUTTON_EVENT_IN_BOTTOM_R:
-+ case BUTTON_EVENT_IN_BOTTOM_M:
- case BUTTON_EVENT_IN_BOTTOM_L:
- tp_button_set_state(tp, t, BUTTON_STATE_BOTTOM, event);
- break;
-@@ -220,6 +232,7 @@ tp_button_area_handle_event(struct tp_dispatch *tp,
- {
- switch (event) {
- case BUTTON_EVENT_IN_BOTTOM_R:
-+ case BUTTON_EVENT_IN_BOTTOM_M:
- case BUTTON_EVENT_IN_BOTTOM_L:
- case BUTTON_EVENT_IN_TOP_R:
- case BUTTON_EVENT_IN_TOP_M:
-@@ -243,6 +256,7 @@ tp_button_bottom_handle_event(struct tp_dispatch *tp,
- {
- switch (event) {
- case BUTTON_EVENT_IN_BOTTOM_R:
-+ case BUTTON_EVENT_IN_BOTTOM_M:
- case BUTTON_EVENT_IN_BOTTOM_L:
- if (event != t->button.curr)
- tp_button_set_state(tp,
-@@ -273,6 +287,7 @@ tp_button_top_handle_event(struct tp_dispatch *tp,
- {
- switch (event) {
- case BUTTON_EVENT_IN_BOTTOM_R:
-+ case BUTTON_EVENT_IN_BOTTOM_M:
- case BUTTON_EVENT_IN_BOTTOM_L:
- tp_button_set_state(tp, t, BUTTON_STATE_TOP_TO_IGNORE, event);
- break;
-@@ -305,6 +320,7 @@ tp_button_top_new_handle_event(struct tp_dispatch *tp,
- {
- switch(event) {
- case BUTTON_EVENT_IN_BOTTOM_R:
-+ case BUTTON_EVENT_IN_BOTTOM_M:
- case BUTTON_EVENT_IN_BOTTOM_L:
- tp_button_set_state(tp, t, BUTTON_STATE_AREA, event);
- break;
-@@ -355,6 +371,7 @@ tp_button_top_to_ignore_handle_event(struct tp_dispatch *tp,
- event);
- break;
- case BUTTON_EVENT_IN_BOTTOM_R:
-+ case BUTTON_EVENT_IN_BOTTOM_M:
- case BUTTON_EVENT_IN_BOTTOM_L:
- case BUTTON_EVENT_IN_AREA:
- break;
-@@ -377,6 +394,7 @@ tp_button_ignore_handle_event(struct tp_dispatch *tp,
- {
- switch (event) {
- case BUTTON_EVENT_IN_BOTTOM_R:
-+ case BUTTON_EVENT_IN_BOTTOM_M:
- case BUTTON_EVENT_IN_BOTTOM_L:
- case BUTTON_EVENT_IN_TOP_R:
- case BUTTON_EVENT_IN_TOP_M:
-@@ -450,6 +468,8 @@ tp_button_handle_state(struct tp_dispatch *tp, uint64_t time)
-
- if (is_inside_bottom_right_area(tp, t))
- event = BUTTON_EVENT_IN_BOTTOM_R;
-+ else if (is_inside_bottom_middle_area(tp, t))
-+ event = BUTTON_EVENT_IN_BOTTOM_M;
- else if (is_inside_bottom_left_area(tp, t))
- event = BUTTON_EVENT_IN_BOTTOM_L;
- else if (is_inside_top_right_area(tp, t))
-@@ -543,7 +563,14 @@ tp_init_softbuttons(struct tp_dispatch *tp,
- } else {
- tp->buttons.bottom_area.top_edge = height * .85 + yoffset;
- }
-- tp->buttons.bottom_area.rightbutton_left_edge = width/2 + xoffset;
-+
-+ /* The middle button is 25% of the touchpad and centered. Many
-+ * touchpads don't have markings for the middle button at all so we
-+ * need to make it big enough to reliably hit it but not too big so
-+ * it takes away all the space.
-+ */
-+ tp->buttons.bottom_area.middlebutton_left_edge = width * 0.375 + xoffset;
-+ tp->buttons.bottom_area.rightbutton_left_edge = width * 0.625 + xoffset;
- }
-
- void
-@@ -989,6 +1016,8 @@ tp_post_clickpadbutton_buttons(struct tp_dispatch *tp, uint64_t time)
- break;
- case BUTTON_EVENT_IN_TOP_M:
- is_top = 1;
-+ /* fallthrough */
-+ case BUTTON_EVENT_IN_BOTTOM_M:
- area |= MIDDLE;
- break;
- case BUTTON_EVENT_IN_TOP_R:
-diff --git a/src/evdev-mt-touchpad.h b/src/evdev-mt-touchpad.h
-index 1f05a03..7277726 100644
---- a/src/evdev-mt-touchpad.h
-+++ b/src/evdev-mt-touchpad.h
-@@ -70,6 +70,7 @@ enum touch_palm_state {
-
- enum button_event {
- BUTTON_EVENT_IN_BOTTOM_R = 30,
-+ BUTTON_EVENT_IN_BOTTOM_M,
- BUTTON_EVENT_IN_BOTTOM_L,
- BUTTON_EVENT_IN_TOP_R,
- BUTTON_EVENT_IN_TOP_M,
-@@ -283,6 +284,7 @@ struct tp_dispatch {
- struct {
- int32_t top_edge; /* in device coordinates */
- int32_t rightbutton_left_edge; /* in device coordinates */
-+ int32_t middlebutton_left_edge; /* in device coordinates */
- } bottom_area;
-
- struct {
-diff --git a/test/touchpad-buttons.c b/test/touchpad-buttons.c
-index 064c29e..080c670 100644
---- a/test/touchpad-buttons.c
-+++ b/test/touchpad-buttons.c
-@@ -987,6 +987,35 @@ START_TEST(clickpad_softbutton_left)
- }
- END_TEST
-
-+START_TEST(clickpad_softbutton_middle)
-+{
-+ struct litest_device *dev = litest_current_device();
-+ struct libinput *li = dev->libinput;
-+
-+ litest_drain_events(li);
-+
-+ litest_touch_down(dev, 0, 50, 90);
-+ litest_event(dev, EV_KEY, BTN_LEFT, 1);
-+ litest_event(dev, EV_SYN, SYN_REPORT, 0);
-+
-+ litest_assert_button_event(li,
-+ BTN_MIDDLE,
-+ LIBINPUT_BUTTON_STATE_PRESSED);
-+
-+ litest_event(dev, EV_KEY, BTN_LEFT, 0);
-+ litest_event(dev, EV_SYN, SYN_REPORT, 0);
-+ litest_touch_up(dev, 0);
-+
-+ litest_assert_button_event(li,
-+ BTN_MIDDLE,
-+ LIBINPUT_BUTTON_STATE_RELEASED);
-+
-+ libinput_dispatch(li);
-+
-+ litest_assert_empty_queue(li);
-+}
-+END_TEST
-+
- START_TEST(clickpad_softbutton_right)
- {
- struct litest_device *dev = litest_current_device();
-@@ -1585,6 +1614,7 @@ litest_setup_tests(void)
- litest_add("touchpad:click", clickpad_finger_pin, LITEST_CLICKPAD, LITEST_ANY);
-
- litest_add("touchpad:softbutton", clickpad_softbutton_left, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
-+ litest_add("touchpad:softbutton", clickpad_softbutton_middle, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
- litest_add("touchpad:softbutton", clickpad_softbutton_right, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
- litest_add("touchpad:softbutton", clickpad_softbutton_left_tap_n_drag, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
- litest_add("touchpad:softbutton", clickpad_softbutton_right_tap_n_drag, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
commit 75a1d5d9e04280e4a90a4241e3c7128ca070c70c
Author: Héctor Orón Martínez <zumbi@debian.org>
Date: Mon May 30 13:13:20 2016 +0200
Release Debian version libinput-1.3.1-1
Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>
diff --git a/debian/changelog b/debian/changelog
index c9f7659..6b2495c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+libinput (1.3.1-1) unstable; urgency=medium
+
+ * New upstream release.
+ - Fixes 'libinput is very choppy with ELAN1000 touchpads'
+ (Closes: #825784)
+
+ -- Héctor Orón Martínez <zumbi@debian.org> Mon, 30 May 2016 12:29:50 +0200
+
libinput (1.3.0-2) unstable; urgency=medium
* rules: Use --fail-missing for dh_install.
commit a5fdfd7672629b22767768afca4fbe27abb81583
Author: Héctor Orón Martínez <zumbi@debian.org>
Date: Mon May 30 13:12:58 2016 +0200
d/control: update uploader name for myself
Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>
diff --git a/debian/control b/debian/control
index 8f92ee9..0acae76 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: libinput
Section: libs
Priority: optional
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
-Uploaders: Emilio Pozuelo Monfort <pochu@debian.org>, Hector Oron <zumbi@debian.org>
+Uploaders: Emilio Pozuelo Monfort <pochu@debian.org>, Héctor Orón Martínez <zumbi@debian.org>
Build-Depends:
debhelper (>= 9),
dh-autoreconf,
commit 568be0867f7ac8c37912ad6724a053f40f6aae51
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Mon May 30 08:51:11 2016 +1000
configure.ac: libinput 1.3.1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/configure.ac b/configure.ac
index a44d84c..3cf46d4 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], [3])
-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])
@@ -35,7 +35,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=18:3:8
+LIBINPUT_LT_VERSION=18:4:8
AC_SUBST(LIBINPUT_LT_VERSION)
AM_SILENT_RULES([yes])
commit 0d5d367a82d250d3cdf4b1e21c48bf1cf81b8d7a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri May 27 10:35:34 2016 +1000
doc: add the missing svg files to the Makefile.am
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 8d80aae784dececda72ff6c9409b4d421a887f20)
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 58effde..62630d0 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -39,15 +39,23 @@ diagram_files = \
$(srcdir)/dot/evemu.gv \
$(srcdir)/svg/button-scrolling.svg \
$(srcdir)/svg/clickfinger.svg \
+ $(srcdir)/svg/clickfinger-distance.svg \
$(srcdir)/svg/edge-scrolling.svg \
+ $(srcdir)/svg/gesture-2fg-ambiguity.svg \
$(srcdir)/svg/palm-detection.svg \
$(srcdir)/svg/pinch-gestures.svg \
+ $(srcdir)/svg/pinch-gestures-softbuttons.svg \
$(srcdir)/svg/ptraccel-linear.svg \
$(srcdir)/svg/ptraccel-low-dpi.svg \
$(srcdir)/svg/ptraccel-touchpad.svg \
$(srcdir)/svg/ptraccel-trackpoint.svg \
$(srcdir)/svg/software-buttons.svg \
$(srcdir)/svg/swipe-gestures.svg \
+ $(srcdir)/svg/tablet-axes.svg \
+ $(srcdir)/svg/tablet-interfaces.svg \
+ $(srcdir)/svg/tablet-left-handed.svg \
+ $(srcdir)/svg/tablet-out-of-bounds.svg \
+ $(srcdir)/svg/tablet.svg \
$(srcdir)/svg/tap-n-drag.svg \
$(srcdir)/svg/thumb-detection.svg \
$(srcdir)/svg/top-software-buttons.svg \
commit 0694e46ccf0a6337441d5e02fb5049f12d97c8cf
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri May 27 10:33:24 2016 +1000
doc: sort the svg files alphabetically
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 7f9c1f1c6c624252fa50693b05f595304aa26764)
diff --git a/doc/Makefile.am b/doc/Makefile.am
index f56ed6a..58effde 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -37,9 +37,8 @@ diagram_files = \
$(srcdir)/dot/libinput-stack-xorg.gv \
$(srcdir)/dot/libinput-stack-gnome.gv \
$(srcdir)/dot/evemu.gv \
- $(srcdir)/svg/software-buttons.svg \
- $(srcdir)/svg/clickfinger.svg \
$(srcdir)/svg/button-scrolling.svg \
+ $(srcdir)/svg/clickfinger.svg \
$(srcdir)/svg/edge-scrolling.svg \
$(srcdir)/svg/palm-detection.svg \
$(srcdir)/svg/pinch-gestures.svg \
@@ -47,6 +46,7 @@ diagram_files = \
$(srcdir)/svg/ptraccel-low-dpi.svg \
$(srcdir)/svg/ptraccel-touchpad.svg \
$(srcdir)/svg/ptraccel-trackpoint.svg \
+ $(srcdir)/svg/software-buttons.svg \
$(srcdir)/svg/swipe-gestures.svg \
$(srcdir)/svg/tap-n-drag.svg \
$(srcdir)/svg/thumb-detection.svg \
commit 97ff0002e9b9276819e1caaad204711948bde2bb
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Thu May 26 08:40:17 2016 +1000
pad: ignore EV_MSC events
The Wacom Express Key Remote sends the serial number via EV_MSC. At some later
point we'll need the serial to match the LEDs correctly but for now we can
ignore them.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 0933650f664560f81145c780ea982f49d4df1924)
diff --git a/src/evdev-tablet-pad.c b/src/evdev-tablet-pad.c
index ad6ead8..5341657 100644
--- a/src/evdev-tablet-pad.c
+++ b/src/evdev-tablet-pad.c
@@ -403,6 +403,10 @@ pad_process(struct evdev_dispatch *dispatch,
case EV_SYN:
pad_flush(pad, device, time);
break;
+ case EV_MSC:
+ /* The EKR sends the serial as MSC_SERIAL, ignore this for
+ * now */
+ break;
default:
log_error(device->base.seat->libinput,
"Unexpected event type %s (%#x)\n",
commit 23bacd16c348e48465f84188c84a2500ecc18002
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue May 24 11:47:48 2016 +1000
doc: update ref/unref behavior for the tablet tool
Brings it in line with the rest of libinput.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 40e3fe23849e90e50c6bdb4e848b7be120c101a1)
diff --git a/src/libinput.h b/src/libinput.h
index 5b08035..3053909 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -1889,10 +1889,13 @@ libinput_event_tablet_tool_get_y_transformed(struct libinput_event_tablet_tool *
*
* Returns the tool that was in use during this event.
*
- * If the caller holds at least one reference (see
- * libinput_tablet_tool_ref()), this struct is used whenever the
- * tools enters proximity. Otherwise, if no references remain when the tool
- * leaves proximity, the tool may be destroyed.
+ * The returned tablet tool is not refcounted and may become invalid after
+ * the next call to libinput. Use libinput_tablet_tool_ref() and
+ * libinput_tablet_tool_unref() to continue using the handle outside of the
+ * immediate scope.
+ *
+ * If the caller holds at least one reference, this struct is used
Reply to: