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

libinput: Changes to 'ubuntu'



 .gitignore                                                        |    2 
 configure.ac                                                      |   57 
 debian/changelog                                                  |   20 
 debian/libinput10.symbols                                         |   20 
 debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch |    2 
 debian/patches/touch-point-orientation-size.patch                 |   50 
 doc/Makefile.am                                                   |   30 
 doc/absolute-coordinate-ranges.dox                                |  119 +
 doc/clickpad-softbuttons.dox                                      |    4 
 doc/faqs.dox                                                      |   31 
 doc/page-hierarchy.dox                                            |    1 
 doc/svg/tablet-cintiq24hd-modes.svg                               |  460 ++++++
 doc/svg/tablet-intuos-modes.svg                                   |  321 ++++
 doc/tablet-support.dox                                            |   59 
 src/Makefile.am                                                   |    1 
 src/evdev-middle-button.c                                         |   16 
 src/evdev-mt-touchpad-buttons.c                                   |  136 +-
 src/evdev-mt-touchpad-edge-scroll.c                               |   30 
 src/evdev-mt-touchpad-gestures.c                                  |   40 
 src/evdev-mt-touchpad.c                                           |  255 ++-
 src/evdev-mt-touchpad.h                                           |   11 
 src/evdev-tablet-pad-leds.c                                       |  177 ++
 src/evdev-tablet-pad.c                                            |   86 +
 src/evdev-tablet-pad.h                                            |   18 
 src/evdev-tablet.c                                                |   54 
 src/evdev-tablet.h                                                |    6 
 src/evdev.c                                                       |  179 +-
 src/evdev.h                                                       |   54 
 src/filter.c                                                      |   80 +
 src/libinput-private.h                                            |   38 
 src/libinput-util.h                                               |   52 
 src/libinput.c                                                    |  260 +++
 src/libinput.h                                                    |  674 +++++++---
 src/libinput.sym                                                  |   22 
 test/Makefile.am                                                  |   16 
 test/device.c                                                     |   16 
 test/gestures.c                                                   |   10 
 test/litest-device-alps-dualpoint.c                               |   11 
 test/litest-device-apple-magicmouse.c                             |  104 +
 test/litest-device-keyboard-all-codes.c                           |   76 +
 test/litest-device-logitech-trackball.c                           |    2 
 test/litest-device-synaptics-i2c.c                                |   11 
 test/litest-device-wacom-cintiq-13hdt-finger.c                    |  102 +
 test/litest-device-wacom-cintiq-13hdt-pad.c                       |  121 +
 test/litest-device-wacom-cintiq-13hdt-pen.c                       |  147 ++
 test/litest-device-wacom-cintiq-24hdt-pad.c                       |  148 ++
 test/litest-device-wacom-ekr.c                                    |  132 +
 test/litest.c                                                     |  133 +
 test/litest.h                                                     |   41 
 test/pad.c                                                        |  234 +++
 test/pointer.c                                                    |   16 
 test/tablet.c                                                     |    4 
 test/touchpad-buttons.c                                           |  233 +++
 test/touchpad.c                                                   |  258 ++-
 test/trackball.c                                                  |  273 ++++
 tools/Makefile.am                                                 |    2 
 tools/event-debug.c                                               |   47 
 tools/event-gui.c                                                 |    2 
 tools/libinput-list-devices.c                                     |   48 
 udev/90-libinput-model-quirks.hwdb                                |   40 
 60 files changed, 4976 insertions(+), 616 deletions(-)

New commits:
commit 45ddc511b9fa7a99e920894da351e0796cbfa88a
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Tue Aug 2 10:53:37 2016 +0300

    release to yak

diff --git a/debian/changelog b/debian/changelog
index 9cd7b00..e78e99f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+libinput (1.4.0-1ubuntu1) yakkety; urgency=medium
+
+  * Merge from Debian.
+  * Refresh patches.
+
+ -- Timo Aaltonen <tjaalton@debian.org>  Tue, 02 Aug 2016 10:47:19 +0300
+
 libinput (1.4.0-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 d3254c4..8fdbb4a 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
-@@ -714,16 +714,16 @@ evdev_process_key(struct evdev_device *d
+@@ -732,16 +732,16 @@ evdev_process_key(struct evdev_device *d
  	if (e->value == 2)
  		return;
  
diff --git a/debian/patches/touch-point-orientation-size.patch b/debian/patches/touch-point-orientation-size.patch
index 2c40b72..26992a9 100644
--- a/debian/patches/touch-point-orientation-size.patch
+++ b/debian/patches/touch-point-orientation-size.patch
@@ -37,7 +37,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
 
 --- a/doc/Makefile.am
 +++ b/doc/Makefile.am
-@@ -27,6 +27,7 @@ header_files = \
+@@ -24,6 +24,7 @@ header_files = \
  	$(srcdir)/tapping.dox \
  	$(srcdir)/test-suite.dox \
  	$(srcdir)/tools.dox \
@@ -45,7 +45,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	$(srcdir)/touchpad-jumping-cursors.dox \
  	$(srcdir)/touchpads.dox
  
-@@ -60,6 +61,7 @@ diagram_files = \
+@@ -59,6 +60,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
-@@ -12,6 +12,7 @@
+@@ -13,6 +13,7 @@
  @page touchscreens Touchscreens
  
  - @subpage absolute_axes
@@ -572,7 +572,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  static inline void
  normalize_delta(struct evdev_device *device,
  		const struct device_coords *delta,
-@@ -382,6 +480,11 @@ evdev_flush_pending_event(struct evdev_d
+@@ -398,6 +496,11 @@ evdev_flush_pending_event(struct evdev_d
  	struct device_coords point;
  	struct device_float_coords raw;
  	struct mt_slot *slot = NULL;
@@ -584,7 +584,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  
  	slot_idx = device->mt.slot;
  	if (device->mt.slots)
-@@ -446,7 +549,7 @@ evdev_flush_pending_event(struct evdev_d
+@@ -464,7 +567,7 @@ evdev_flush_pending_event(struct evdev_d
  		evdev_transform_absolute(device, &point);
  
  		touch_notify_touch_down(base, time, slot_idx, seat_slot,
@@ -593,7 +593,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		break;
  	case EVDEV_ABSOLUTE_MT_MOTION:
  		if (!(device->seat_caps & EVDEV_DEVICE_TOUCH))
-@@ -463,7 +566,7 @@ evdev_flush_pending_event(struct evdev_d
+@@ -481,7 +584,7 @@ evdev_flush_pending_event(struct evdev_d
  
  		evdev_transform_absolute(device, &point);
  		touch_notify_touch_motion(base, time, slot_idx, seat_slot,
@@ -602,7 +602,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		break;
  	case EVDEV_ABSOLUTE_MT_UP:
  		if (!(device->seat_caps & EVDEV_DEVICE_TOUCH))
-@@ -502,7 +605,13 @@ evdev_flush_pending_event(struct evdev_d
+@@ -520,7 +623,13 @@ evdev_flush_pending_event(struct evdev_d
  		point = device->abs.point;
  		evdev_transform_absolute(device, &point);
  
@@ -617,7 +617,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		break;
  	case EVDEV_ABSOLUTE_MOTION:
  		point = device->abs.point;
-@@ -514,8 +623,13 @@ evdev_flush_pending_event(struct evdev_d
+@@ -532,8 +641,13 @@ evdev_flush_pending_event(struct evdev_d
  			if (seat_slot == -1)
  				break;
  
@@ -633,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);
  		}
-@@ -652,8 +766,9 @@ evdev_process_touch(struct evdev_device
+@@ -670,8 +784,9 @@ evdev_process_touch(struct evdev_device
  		    struct input_event *e,
  		    uint64_t time)
  {
@@ -643,9 +643,9 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
 +
 +	if (e->code == ABS_MT_SLOT) {
  		if ((size_t)e->value >= device->mt.slots_len) {
- 			log_bug_libinput(device->base.seat->libinput,
+ 			log_bug_libinput(evdev_libinput_context(device),
  					 "%s exceeds slots (%d of %zd)\n",
-@@ -664,8 +779,7 @@ evdev_process_touch(struct evdev_device
+@@ -682,8 +797,7 @@ evdev_process_touch(struct evdev_device
  		}
  		evdev_flush_pending_event(device, time);
  		device->mt.slot = e->value;
@@ -655,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);
-@@ -673,17 +787,34 @@ evdev_process_touch(struct evdev_device
+@@ -691,17 +805,34 @@ evdev_process_touch(struct evdev_device
  			device->pending_event = EVDEV_ABSOLUTE_MT_DOWN;
  		else
  			device->pending_event = EVDEV_ABSOLUTE_MT_UP;
@@ -700,7 +700,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	}
  }
  
-@@ -2051,6 +2182,20 @@ evdev_configure_mt_device(struct evdev_d
+@@ -2122,6 +2253,20 @@ evdev_configure_mt_device(struct evdev_d
  		slots[slot].point.y = libevdev_get_slot_value(evdev,
  							      slot,
  							      ABS_MT_POSITION_Y);
@@ -721,7 +721,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	}
  	device->mt.slots = slots;
  	device->mt.slots_len = num_slots;
-@@ -2120,6 +2265,15 @@ evdev_configure_device(struct evdev_devi
+@@ -2191,6 +2336,15 @@ evdev_configure_device(struct evdev_devi
  		return -1;
  	}
  
@@ -739,7 +739,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  
 --- a/src/evdev.h
 +++ b/src/evdev.h
-@@ -122,6 +122,8 @@ struct mt_slot {
+@@ -124,6 +124,8 @@ struct mt_slot {
  	int32_t seat_slot;
  	struct device_coords point;
  	struct device_coords hysteresis_center;
@@ -748,7 +748,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  };
  
  struct evdev_device {
-@@ -138,6 +140,8 @@ struct evdev_device {
+@@ -140,6 +142,8 @@ struct evdev_device {
  	int fd;
  	struct {
  		const struct input_absinfo *absinfo_x, *absinfo_y;
@@ -757,7 +757,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		int fake_resolution;
  
  		struct device_coords point;
-@@ -394,6 +398,26 @@ double
+@@ -415,6 +419,26 @@ double
  evdev_device_transform_y(struct evdev_device *device,
  			 double y,
  			 uint32_t height);
@@ -798,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.
-@@ -469,14 +474,18 @@ touch_notify_touch_down(struct libinput_
+@@ -498,14 +503,18 @@ touch_notify_touch_down(struct libinput_
  			uint64_t time,
  			int32_t slot,
  			int32_t seat_slot,
@@ -821,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
-@@ -146,6 +146,12 @@ msleep(unsigned int ms)
+@@ -148,6 +148,12 @@ msleep(unsigned int ms)
  	usleep(ms * 1000);
  }
  
@@ -845,7 +845,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  };
  
  struct libinput_event_gesture {
-@@ -788,6 +790,204 @@ libinput_event_touch_get_y(struct libinp
+@@ -792,6 +794,204 @@ libinput_event_touch_get_y(struct libinp
  	return evdev_convert_to_mm(device->abs.absinfo_y, event->point.y);
  }
  
@@ -1050,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)
  {
-@@ -2146,7 +2346,9 @@ touch_notify_touch_down(struct libinput_
+@@ -2180,7 +2380,9 @@ touch_notify_touch_down(struct libinput_
  			uint64_t time,
  			int32_t slot,
  			int32_t seat_slot,
@@ -1061,7 +1061,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  {
  	struct libinput_event_touch *touch_event;
  
-@@ -2162,6 +2364,8 @@ touch_notify_touch_down(struct libinput_
+@@ -2196,6 +2398,8 @@ touch_notify_touch_down(struct libinput_
  		.slot = slot,
  		.seat_slot = seat_slot,
  		.point = *point,
@@ -1070,7 +1070,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	};
  
  	post_device_event(device, time,
-@@ -2174,7 +2378,9 @@ touch_notify_touch_motion(struct libinpu
+@@ -2208,7 +2412,9 @@ touch_notify_touch_motion(struct libinpu
  			  uint64_t time,
  			  int32_t slot,
  			  int32_t seat_slot,
@@ -1081,7 +1081,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  {
  	struct libinput_event_touch *touch_event;
  
-@@ -2190,6 +2396,8 @@ touch_notify_touch_motion(struct libinpu
+@@ -2224,6 +2430,8 @@ touch_notify_touch_motion(struct libinpu
  		.slot = slot,
  		.seat_slot = seat_slot,
  		.point = *point,
@@ -1092,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
-@@ -1233,6 +1233,228 @@ libinput_event_touch_get_y_transformed(s
+@@ -1475,6 +1475,228 @@ libinput_event_touch_get_y_transformed(s
  /**
   * @ingroup event_touch
   *

commit eab01d67347fa6e86d57fdb9778990d80e789f5f
Author: Emilio Pozuelo Monfort <pochu@debian.org>
Date:   Mon Aug 1 17:55:02 2016 +0200

    Release to unstable

diff --git a/debian/changelog b/debian/changelog
index 3e3b3a2..4fe252c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,9 @@
-libinput (1.4.0-1) UNRELEASED; urgency=medium
+libinput (1.4.0-1) unstable; urgency=medium
 
   * New upstream release.
   * debian/libinput10.symbols: add new symbols.
 
- -- Emilio Pozuelo Monfort <pochu@debian.org>  Mon, 01 Aug 2016 17:06:27 +0200
+ -- Emilio Pozuelo Monfort <pochu@debian.org>  Mon, 01 Aug 2016 17:54:58 +0200
 
 libinput (1.3.3-1) unstable; urgency=medium
 

commit 5943c2e73811cedbb62dd18ae4a8470168159d2d
Author: Emilio Pozuelo Monfort <pochu@debian.org>
Date:   Mon Aug 1 17:50:15 2016 +0200

    Add new symbols

diff --git a/debian/changelog b/debian/changelog
index a0e8b7c..3e3b3a2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 libinput (1.4.0-1) UNRELEASED; urgency=medium
 
   * New upstream release.
+  * debian/libinput10.symbols: add new symbols.
 
  -- Emilio Pozuelo Monfort <pochu@debian.org>  Mon, 01 Aug 2016 17:06:27 +0200
 
diff --git a/debian/libinput10.symbols b/debian/libinput10.symbols
index 06b37ef..ad94e70 100644
--- a/debian/libinput10.symbols
+++ b/debian/libinput10.symbols
@@ -9,6 +9,7 @@ libinput.so.10 libinput10 #MINVER#
  LIBINPUT_1.1@LIBINPUT_1.1 1.1.0
  LIBINPUT_1.2@LIBINPUT_1.2 1.2.0
  LIBINPUT_1.3@LIBINPUT_1.3 1.3.0
+ LIBINPUT_1.4@LIBINPUT_1.4 1.4.0
  libinput_config_status_to_str@LIBINPUT_0.12.0 0.15.0
  libinput_device_config_accel_get_default_profile@LIBINPUT_1.1 1.1.0
  libinput_device_config_accel_get_default_speed@LIBINPUT_0.12.0 0.15.0
@@ -38,6 +39,10 @@ libinput.so.10 libinput10 #MINVER#
  libinput_device_config_middle_emulation_get_enabled@LIBINPUT_0.14.0 0.15.0
  libinput_device_config_middle_emulation_is_available@LIBINPUT_0.14.0 0.15.0
  libinput_device_config_middle_emulation_set_enabled@LIBINPUT_0.14.0 0.15.0
+ libinput_device_config_rotation_get_angle@LIBINPUT_1.4 1.4.0
+ libinput_device_config_rotation_get_default_angle@LIBINPUT_1.4 1.4.0
+ libinput_device_config_rotation_is_available@LIBINPUT_1.4 1.4.0
+ libinput_device_config_rotation_set_angle@LIBINPUT_1.4 1.4.0
  libinput_device_config_scroll_get_button@LIBINPUT_0.12.0 0.15.0
  libinput_device_config_scroll_get_default_button@LIBINPUT_0.12.0 0.15.0
  libinput_device_config_scroll_get_default_method@LIBINPUT_0.12.0 0.15.0
@@ -85,7 +90,9 @@ libinput.so.10 libinput10 #MINVER#
  libinput_device_ref@LIBINPUT_0.12.0 0.15.0
  libinput_device_set_seat_logical_name@LIBINPUT_0.12.0 0.15.0
  libinput_device_set_user_data@LIBINPUT_0.12.0 0.15.0
+ libinput_device_tablet_pad_get_mode_group@LIBINPUT_1.4 1.4.0
  libinput_device_tablet_pad_get_num_buttons@LIBINPUT_1.3 1.3.0
+ libinput_device_tablet_pad_get_num_mode_groups@LIBINPUT_1.4 1.4.0
  libinput_device_tablet_pad_get_num_rings@LIBINPUT_1.3 1.3.0
  libinput_device_tablet_pad_get_num_strips@LIBINPUT_1.3 1.3.0
  libinput_device_unref@LIBINPUT_0.12.0 0.15.0
@@ -140,6 +147,8 @@ libinput.so.10 libinput10 #MINVER#
  libinput_event_tablet_pad_get_base_event@LIBINPUT_1.3 1.3.0
  libinput_event_tablet_pad_get_button_number@LIBINPUT_1.3 1.3.0
  libinput_event_tablet_pad_get_button_state@LIBINPUT_1.3 1.3.0
+ libinput_event_tablet_pad_get_mode@LIBINPUT_1.4 1.4.0
+ libinput_event_tablet_pad_get_mode_group@LIBINPUT_1.4 1.4.0
  libinput_event_tablet_pad_get_ring_number@LIBINPUT_1.3 1.3.0
  libinput_event_tablet_pad_get_ring_position@LIBINPUT_1.3 1.3.0
  libinput_event_tablet_pad_get_ring_source@LIBINPUT_1.3 1.3.0
@@ -210,6 +219,17 @@ libinput.so.10 libinput10 #MINVER#
  libinput_seat_unref@LIBINPUT_0.12.0 0.15.0
  libinput_set_user_data@LIBINPUT_0.12.0 0.15.0
  libinput_suspend@LIBINPUT_0.12.0 0.15.0
+ libinput_tablet_pad_mode_group_button_is_toggle@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_get_index@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_get_mode@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_get_num_modes@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_get_user_data@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_has_button@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_has_ring@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_has_strip@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_ref@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_set_user_data@LIBINPUT_1.4 1.4.0
+ libinput_tablet_pad_mode_group_unref@LIBINPUT_1.4 1.4.0
  libinput_tablet_tool_get_serial@LIBINPUT_1.2 1.2.0
  libinput_tablet_tool_get_tool_id@LIBINPUT_1.2 1.2.0
  libinput_tablet_tool_get_type@LIBINPUT_1.2 1.2.0

commit aedc251e9ea3d509456d4eee442f87dc1b3ff676
Author: Emilio Pozuelo Monfort <pochu@debian.org>
Date:   Mon Aug 1 17:09:09 2016 +0200

    New upstream release

diff --git a/debian/changelog b/debian/changelog
index e4e78d8..a0e8b7c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libinput (1.4.0-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+
+ -- Emilio Pozuelo Monfort <pochu@debian.org>  Mon, 01 Aug 2016 17:06:27 +0200
+
 libinput (1.3.3-1) unstable; urgency=medium
 
   * New upstream release.

commit 67c7ba9bf3246aadf472cfddff62e745f00dde19
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Jul 18 11:17:56 2016 +1000

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

diff --git a/configure.ac b/configure.ac
index 0e7ffc2..9e238b4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,8 +1,8 @@
 AC_PREREQ([2.64])
 
 m4_define([libinput_major_version], [1])
-m4_define([libinput_minor_version], [3])
-m4_define([libinput_micro_version], [901])
+m4_define([libinput_minor_version], [4])
+m4_define([libinput_micro_version], [0])
 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=19:0:9
+LIBINPUT_LT_VERSION=19:1:9
 AC_SUBST(LIBINPUT_LT_VERSION)
 
 AM_SILENT_RULES([yes])

commit 3758f3cdef0d7d6388025a1a843cafdcfd007351
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Jul 18 10:08:16 2016 +1000

    test: make one ALPS and the Synaptics i2c test devices Dell touchpads
    
    The i2c one came from an Dell XPS13. The ALPS one I can't remember but highly
    likely they were on Dells and if not, nothing really changes here anyway
    because it's not a clickpad and right now only clickpads have dell-specific
    behaviour.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/test/litest-device-alps-dualpoint.c b/test/litest-device-alps-dualpoint.c
index 8e42f9a..5020427 100644
--- a/test/litest-device-alps-dualpoint.c
+++ b/test/litest-device-alps-dualpoint.c
@@ -102,6 +102,16 @@ static struct input_absinfo absinfo[] = {
 	{ .value = -1 }
 };
 
+static const char udev_rule[] =
+"ACTION==\"remove\", GOTO=\"touchpad_end\"\n"
+"KERNEL!=\"event*\", GOTO=\"touchpad_end\"\n"
+"ENV{ID_INPUT_TOUCHPAD}==\"\", GOTO=\"touchpad_end\"\n"
+"\n"
+"ATTRS{name}==\"litest AlpsPS/2 ALPS DualPoint TouchPad\","
+"    ENV{LIBINPUT_MODEL_DELL_TOUCHPAD}=\"1\"\n"
+"\n"
+"LABEL=\"touchpad_end\"";
+
 struct litest_test_device litest_alps_dualpoint_device = {
 	.type = LITEST_ALPS_DUALPOINT,
 	.features = LITEST_TOUCHPAD | LITEST_BUTTON | LITEST_SEMI_MT,
@@ -114,6 +124,7 @@ struct litest_test_device litest_alps_dualpoint_device = {
 	.id = &input_id,
 	.events = events,
 	.absinfo = absinfo,
+	.udev_rule = udev_rule,
 };
 
 static void
diff --git a/test/litest-device-synaptics-i2c.c b/test/litest-device-synaptics-i2c.c
index b6b632b..be826a4 100644
--- a/test/litest-device-synaptics-i2c.c
+++ b/test/litest-device-synaptics-i2c.c
@@ -88,6 +88,16 @@ static struct input_absinfo absinfo[] = {
 	{ .value = -1 }
 };
 
+static const char udev_rule[] =
+"ACTION==\"remove\", GOTO=\"touchpad_end\"\n"
+"KERNEL!=\"event*\", GOTO=\"touchpad_end\"\n"
+"ENV{ID_INPUT_TOUCHPAD}==\"\", GOTO=\"touchpad_end\"\n"
+"\n"
+"ATTRS{name}==\"litest DLL0704:01 06CB:76AD Touchpad\","
+"    ENV{LIBINPUT_MODEL_DELL_TOUCHPAD}=\"1\"\n"
+"\n"
+"LABEL=\"touchpad_end\"";
+
 struct litest_test_device litest_synaptics_i2c_device = {
 	.type = LITEST_SYNAPTICS_I2C,
 	.features = LITEST_TOUCHPAD | LITEST_CLICKPAD | LITEST_BUTTON,
@@ -99,4 +109,5 @@ struct litest_test_device litest_synaptics_i2c_device = {
 	.id = &input_id,
 	.events = events,
 	.absinfo = absinfo,
+	.udev_rule = udev_rule,
 };

commit 7464fa9710ea3750112e1d9b449aa44d2da39065
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jul 15 10:54:05 2016 +1000

    touchpad: change offset ints to device_coords
    
    No functional changes, just makes the unit more explicit
    
    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-buttons.c b/src/evdev-mt-touchpad-buttons.c
index cf49c83..85a355f 100644
--- a/src/evdev-mt-touchpad-buttons.c
+++ b/src/evdev-mt-touchpad-buttons.c
@@ -543,15 +543,15 @@ tp_init_softbuttons(struct tp_dispatch *tp,
 {
 	int width, height;
 	const struct input_absinfo *absinfo_x, *absinfo_y;
-	int xoffset, yoffset;
+	struct device_coords offset;
 	int xres, yres;
 	int mb_le, mb_re; /* middle button left/right edge */
 
 	absinfo_x = device->abs.absinfo_x;
 	absinfo_y = device->abs.absinfo_y;
 
-	xoffset = absinfo_x->minimum,
-	yoffset = absinfo_y->minimum,
+	offset.x = absinfo_x->minimum,
+	offset.y = absinfo_y->minimum,
 	xres = absinfo_x->resolution;
 	yres = absinfo_y->resolution;
 	width = device->abs.dimensions.x;
@@ -563,11 +563,11 @@ tp_init_softbuttons(struct tp_dispatch *tp,
 		tp->buttons.bottom_area.top_edge =
 			absinfo_y->maximum - 10 * yres;
 	} else {
-		tp->buttons.bottom_area.top_edge = height * .85 + yoffset;
+		tp->buttons.bottom_area.top_edge = height * .85 + offset.y;
 	}
 
 	tp->buttons.bottom_area.middlebutton_left_edge = INT_MAX;
-	tp->buttons.bottom_area.rightbutton_left_edge = width/2 + xoffset;
+	tp->buttons.bottom_area.rightbutton_left_edge = width/2 + offset.x;
 
 	/* if middlebutton emulation is enabled, don't init a software area */
 	if (device->middlebutton.want_enabled)
@@ -587,11 +587,11 @@ tp_init_softbuttons(struct tp_dispatch *tp,
 		const int MIDDLE_BUTTON_WIDTH = 10; /* mm */
 		int half_width = MIDDLE_BUTTON_WIDTH/2 * xres; /* units */
 
-		mb_le = xoffset + width/2 - half_width;
-		mb_re = xoffset + width/2 + half_width;
+		mb_le = offset.x + width/2 - half_width;
+		mb_re = offset.x + width/2 + half_width;
 	} else {
-		mb_le = xoffset + width * 0.375;
-		mb_re = xoffset + width * 0.625;
+		mb_le = offset.x + width * 0.375;
+		mb_re = offset.x + width * 0.625;
 	}
 
 	tp->buttons.bottom_area.middlebutton_left_edge = mb_le;
@@ -605,14 +605,14 @@ tp_init_top_softbuttons(struct tp_dispatch *tp,
 {
 	int width;
 	const struct input_absinfo *absinfo_x, *absinfo_y;
-	int xoffset, yoffset;
+	struct device_coords offset;
 	int yres;
 
 	absinfo_x = device->abs.absinfo_x;
 	absinfo_y = device->abs.absinfo_y;
 
-	xoffset = absinfo_x->minimum,
-	yoffset = absinfo_y->minimum;
+	offset.x = absinfo_x->minimum,
+	offset.y = absinfo_y->minimum;
 	yres = absinfo_y->resolution;
 	width = device->abs.dimensions.x;
 
@@ -623,9 +623,9 @@ tp_init_top_softbuttons(struct tp_dispatch *tp,
 		   area using a multiplier for the touchpad disabled case. */
 		double topsize_mm = 10 * topbutton_size_mult;
 
-		tp->buttons.top_area.bottom_edge = yoffset + topsize_mm * yres;
-		tp->buttons.top_area.rightbutton_left_edge = width * .58 + xoffset;
-		tp->buttons.top_area.leftbutton_right_edge = width * .42 + xoffset;
+		tp->buttons.top_area.bottom_edge = offset.y + topsize_mm * yres;
+		tp->buttons.top_area.rightbutton_left_edge = width * .58 + offset.x;
+		tp->buttons.top_area.leftbutton_right_edge = width * .42 + offset.x;
 	} else {
 		tp->buttons.top_area.bottom_edge = INT_MIN;
 	}

commit d9c253572184bed441c4ad0c55001292c8e033c4
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jul 15 11:13:06 2016 +1000

    evdev: constify evdev_device_get_size
    
    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 6d231db..1a0759b 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -2671,7 +2671,7 @@ evdev_device_has_capability(struct evdev_device *device,
 }
 
 int
-evdev_device_get_size(struct evdev_device *device,
+evdev_device_get_size(const struct evdev_device *device,
 		      double *width,
 		      double *height)
 {
diff --git a/src/evdev.h b/src/evdev.h
index a3e76c5..f9c0dd1 100644
--- a/src/evdev.h
+++ b/src/evdev.h
@@ -371,7 +371,7 @@ evdev_device_has_capability(struct evdev_device *device,
 			    enum libinput_device_capability capability);
 
 int
-evdev_device_get_size(struct evdev_device *device,
+evdev_device_get_size(const struct evdev_device *device,
 		      double *w,
 		      double *h);
 

commit 7188cf612058a9a65321251b255195b54f99dd75
Author: Emilio Pozuelo Monfort <pochu@debian.org>
Date:   Thu Jul 14 17:42:16 2016 +0200

    Release to unstable

diff --git a/debian/changelog b/debian/changelog
index dafe506..e4e78d8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,8 @@
-libinput (1.3.3-1) UNRELEASED; urgency=medium
+libinput (1.3.3-1) unstable; urgency=medium
 
   * New upstream release.
 
- -- Emilio Pozuelo Monfort <pochu@debian.org>  Thu, 14 Jul 2016 17:09:58 +0200
+ -- Emilio Pozuelo Monfort <pochu@debian.org>  Sun, 17 Jul 2016 18:56:44 +0200
 
 libinput (1.3.1-1) unstable; urgency=medium
 

commit 8e7f99c27ab39df0ef6a79443266b00ad43d824f
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Jul 13 11:47:30 2016 +1000

    touchpad: don't init a horizontal scroll area on touchpads <50mm high
    
    We simply don't have enough space on those touchpads to have an area carved
    out for horizontal scrolling. Given that horizontal scrolling is rarely needed
    anyway users of these touchpads will just have to cling to scroll bars or use
    two-finger scrolling.
    
    Exception are small clickpads because they already have an area blocked off
    for software buttons and those small clickpads generally come from a time when
    clickfinger wasn't much of a thing yet.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=96910
    
    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-edge-scroll.c b/src/evdev-mt-touchpad-edge-scroll.c
index 8222bba..610744a 100644
--- a/src/evdev-mt-touchpad-edge-scroll.c
+++ b/src/evdev-mt-touchpad-edge-scroll.c
@@ -286,13 +286,29 @@ tp_edge_scroll_init(struct tp_dispatch *tp, struct evdev_device *device)
 {
 	struct tp_touch *t;
 	int edge_width, edge_height;
+	double width, height;
+	bool want_horiz_scroll = true;
+
+	/* Touchpads smaller than 50mm are not tall enough to have a
+	   horizontal scroll area, it takes too much space away. But
+	   clickpads have enough space here anyway because of the
+	   software button area (and all these tiny clickpads were built
+	   when software buttons were a thing, e.g. Lenovo *20 series)
+	 */
+	if (!tp->buttons.is_clickpad) {
+	    evdev_device_get_size(device, &width, &height);
+	    want_horiz_scroll = (height >= 50);
+	}
 
 	/* 7mm edge size */
 	edge_width = device->abs.absinfo_x->resolution * 7;
 	edge_height = device->abs.absinfo_y->resolution * 7;
 
 	tp->scroll.right_edge = device->abs.absinfo_x->maximum - edge_width;
-	tp->scroll.bottom_edge = device->abs.absinfo_y->maximum - edge_height;
+	if (want_horiz_scroll)
+		tp->scroll.bottom_edge = device->abs.absinfo_y->maximum - edge_height;
+	else
+		tp->scroll.bottom_edge = INT_MAX;
 
 	tp_for_each_touch(tp, t) {
 		t->scroll.direction = -1;
diff --git a/test/touchpad.c b/test/touchpad.c
index 28cf1f1..57e4712 100644
--- a/test/touchpad.c
+++ b/test/touchpad.c
@@ -450,11 +450,25 @@ START_TEST(touchpad_edge_scroll_vert)
 }
 END_TEST
 
+static int
+touchpad_has_horiz_edge_scroll_size(struct litest_device *dev)
+{
+	double width, height;
+	int rc;
+
+	rc = libinput_device_get_size(dev->libinput_device, &width, &height);
+
+	return rc == 0 && height >= 50;
+}
+
 START_TEST(touchpad_edge_scroll_horiz)
 {
 	struct litest_device *dev = litest_current_device();
 	struct libinput *li = dev->libinput;
 
+	if (!touchpad_has_horiz_edge_scroll_size(dev))
+		return;
+
 	litest_drain_events(li);
 	litest_enable_edge_scroll(dev);
 
@@ -476,6 +490,57 @@ START_TEST(touchpad_edge_scroll_horiz)
 }
 END_TEST
 
+START_TEST(touchpad_edge_scroll_horiz_clickpad)
+{
+	struct litest_device *dev = litest_current_device();
+	struct libinput *li = dev->libinput;
+
+	litest_drain_events(li);
+	litest_enable_edge_scroll(dev);
+
+	litest_touch_down(dev, 0, 20, 99);
+	litest_touch_move_to(dev, 0, 20, 99, 70, 99, 10, 0);
+	litest_touch_up(dev, 0);
+
+	libinput_dispatch(li);
+	litest_assert_scroll(li, LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL, 4);
+	litest_assert_empty_queue(li);
+
+	litest_touch_down(dev, 0, 70, 99);
+	litest_touch_move_to(dev, 0, 70, 99, 20, 99, 10, 0);
+	litest_touch_up(dev, 0);
+
+	libinput_dispatch(li);
+	litest_assert_scroll(li, LIBINPUT_POINTER_AXIS_SCROLL_HORIZONTAL, -4);
+	litest_assert_empty_queue(li);
+}
+END_TEST
+
+START_TEST(touchpad_edge_scroll_no_horiz)
+{
+	struct litest_device *dev = litest_current_device();
+	struct libinput *li = dev->libinput;
+
+	if (touchpad_has_horiz_edge_scroll_size(dev))
+		return;
+
+	litest_drain_events(li);
+	litest_enable_edge_scroll(dev);
+
+	litest_touch_down(dev, 0, 20, 99);
+	litest_touch_move_to(dev, 0, 20, 99, 70, 99, 10, 0);
+	litest_touch_up(dev, 0);
+
+	litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
+
+	litest_touch_down(dev, 0, 70, 99);
+	litest_touch_move_to(dev, 0, 70, 99, 20, 99, 10, 0);
+	litest_touch_up(dev, 0);
+
+	litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
+}
+END_TEST
+
 START_TEST(touchpad_scroll_defaults)
 {
 	struct litest_device *dev = litest_current_device();
@@ -700,6 +765,9 @@ START_TEST(touchpad_edge_scroll_within_buttonareas)
 	struct litest_device *dev = litest_current_device();
 	struct libinput *li = dev->libinput;
 
+	if (!touchpad_has_horiz_edge_scroll_size(dev))
+		return;
+
 	litest_enable_buttonareas(dev);
 	litest_enable_edge_scroll(dev);
 	litest_drain_events(li);
@@ -728,6 +796,9 @@ START_TEST(touchpad_edge_scroll_buttonareas_click_stops_scroll)
 	struct libinput_event_pointer *ptrev;
 	double val;
 
+	if (!touchpad_has_horiz_edge_scroll_size(dev))
+		return;
+
 	litest_enable_buttonareas(dev);
 	litest_enable_edge_scroll(dev);
 	litest_drain_events(li);
@@ -775,6 +846,9 @@ START_TEST(touchpad_edge_scroll_clickfinger_click_stops_scroll)
 	struct libinput_event_pointer *ptrev;
 	double val;
 
+	if (!touchpad_has_horiz_edge_scroll_size(dev))
+		return;
+
 	litest_enable_clickfinger(dev);
 	litest_enable_edge_scroll(dev);
 	litest_drain_events(li);
@@ -4081,7 +4155,9 @@ litest_setup_tests(void)
 	litest_add("touchpad:scroll", touchpad_scroll_natural_edge, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
 	litest_add("touchpad:scroll", touchpad_scroll_defaults, LITEST_TOUCHPAD, LITEST_ANY);
 	litest_add("touchpad:scroll", touchpad_edge_scroll_vert, LITEST_TOUCHPAD, LITEST_ANY);
-	litest_add("touchpad:scroll", touchpad_edge_scroll_horiz, LITEST_TOUCHPAD, LITEST_ANY);
+	litest_add("touchpad:scroll", touchpad_edge_scroll_horiz, LITEST_TOUCHPAD, LITEST_CLICKPAD);
+	litest_add("touchpad:scroll", touchpad_edge_scroll_horiz_clickpad, LITEST_CLICKPAD, LITEST_ANY);
+	litest_add("touchpad:scroll", touchpad_edge_scroll_no_horiz, LITEST_TOUCHPAD, LITEST_CLICKPAD);
 	litest_add("touchpad:scroll", touchpad_edge_scroll_no_motion, LITEST_TOUCHPAD, LITEST_ANY);
 	litest_add("touchpad:scroll", touchpad_edge_scroll_no_edge_after_motion, LITEST_TOUCHPAD, LITEST_ANY);
 	litest_add("touchpad:scroll", touchpad_edge_scroll_timeout, LITEST_TOUCHPAD, LITEST_ANY);

commit ef3c7437ef8262741486889f014d13607f43db71
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jul 15 09:17:28 2016 +1000

    test: split edge scroll tests into one for vert, one for horiz
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/test/touchpad.c b/test/touchpad.c
index 5c63202..28cf1f1 100644
--- a/test/touchpad.c
+++ b/test/touchpad.c
@@ -424,7 +424,7 @@ START_TEST(touchpad_scroll_natural_edge)
 }
 END_TEST
 
-START_TEST(touchpad_edge_scroll)
+START_TEST(touchpad_edge_scroll_vert)
 {
 	struct litest_device *dev = litest_current_device();
 	struct libinput *li = dev->libinput;
@@ -447,6 +447,16 @@ START_TEST(touchpad_edge_scroll)
 	libinput_dispatch(li);
 	litest_assert_scroll(li, LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL, -4);
 	litest_assert_empty_queue(li);
+}
+END_TEST
+
+START_TEST(touchpad_edge_scroll_horiz)
+{
+	struct litest_device *dev = litest_current_device();
+	struct libinput *li = dev->libinput;
+
+	litest_drain_events(li);
+	litest_enable_edge_scroll(dev);
 
 	litest_touch_down(dev, 0, 20, 99);
 	litest_touch_move_to(dev, 0, 20, 99, 70, 99, 10, 0);
@@ -4070,7 +4080,8 @@ litest_setup_tests(void)
 	litest_add("touchpad:scroll", touchpad_scroll_natural_2fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
 	litest_add("touchpad:scroll", touchpad_scroll_natural_edge, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
 	litest_add("touchpad:scroll", touchpad_scroll_defaults, LITEST_TOUCHPAD, LITEST_ANY);
-	litest_add("touchpad:scroll", touchpad_edge_scroll, LITEST_TOUCHPAD, LITEST_ANY);
+	litest_add("touchpad:scroll", touchpad_edge_scroll_vert, LITEST_TOUCHPAD, LITEST_ANY);
+	litest_add("touchpad:scroll", touchpad_edge_scroll_horiz, LITEST_TOUCHPAD, LITEST_ANY);
 	litest_add("touchpad:scroll", touchpad_edge_scroll_no_motion, LITEST_TOUCHPAD, LITEST_ANY);
 	litest_add("touchpad:scroll", touchpad_edge_scroll_no_edge_after_motion, LITEST_TOUCHPAD, LITEST_ANY);
 	litest_add("touchpad:scroll", touchpad_edge_scroll_timeout, LITEST_TOUCHPAD, LITEST_ANY);

commit 27395ef88e3ccc2afb0798fddbff20f2ddce5640
Author: Emilio Pozuelo Monfort <pochu@debian.org>
Date:   Thu Jul 14 17:20:55 2016 +0200

    New upstream release.

diff --git a/debian/changelog b/debian/changelog
index 6b2495c..dafe506 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libinput (1.3.3-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+
+ -- Emilio Pozuelo Monfort <pochu@debian.org>  Thu, 14 Jul 2016 17:09:58 +0200
+
 libinput (1.3.1-1) unstable; urgency=medium
 
   * New upstream release.

commit caf14fab16b2919b657087c80133cf357be84b09
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Jun 30 10:11:17 2016 +1000

    touchpad: reduce middle button size on Dell touchpads to 10mm
    
    All Dell touchpas appear to have a visual marker on their touchpads. With a
    visible marker our middle button can (and should) be much smaller since we
    can rely on users to hit the button precisely.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=96710
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Tested-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/src/evdev-mt-touchpad-buttons.c b/src/evdev-mt-touchpad-buttons.c
index a2f3121..cf49c83 100644
--- a/src/evdev-mt-touchpad-buttons.c
+++ b/src/evdev-mt-touchpad-buttons.c
@@ -544,13 +544,15 @@ tp_init_softbuttons(struct tp_dispatch *tp,
 	int width, height;
 	const struct input_absinfo *absinfo_x, *absinfo_y;
 	int xoffset, yoffset;
-	int yres;
+	int xres, yres;
+	int mb_le, mb_re; /* middle button left/right edge */
 
 	absinfo_x = device->abs.absinfo_x;
 	absinfo_y = device->abs.absinfo_y;
 
 	xoffset = absinfo_x->minimum,
 	yoffset = absinfo_y->minimum,
+	xres = absinfo_x->resolution;
 	yres = absinfo_y->resolution;
 	width = device->abs.dimensions.x;
 	height = device->abs.dimensions.y;
@@ -575,9 +577,25 @@ tp_init_softbuttons(struct tp_dispatch *tp,
 	 * 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.
+	 *


Reply to: