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

libinput: Changes to 'debian-unstable'



 configure.ac                                 |   10 
 debian/changelog                             |    8 
 debian/control                               |    6 
 debian/libinput10.symbols                    |   18 
 doc/Makefile.am                              |    1 
 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.c                      |   67 ++
 src/evdev-mt-touchpad.h                      |    3 
 src/evdev-tablet-pad.c                       |  620 +++++++++++++++++++++++++++
 src/evdev-tablet-pad.h                       |   69 +++
 src/evdev-tablet.c                           |   53 --
 src/evdev.c                                  |  262 ++++++++---
 src/evdev.h                                  |   36 +
 src/libinput-private.h                       |   26 +
 src/libinput-util.h                          |    5 
 src/libinput.c                               |  257 +++++++++++
 src/libinput.h                               |  342 ++++++++++++++
 src/libinput.sym                             |   18 
 src/timer.c                                  |    3 
 test/Makefile.am                             |    8 
 test/gestures.c                              |    8 
 test/keyboard.c                              |    4 
 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                                |  270 +++++++++++
 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           |    8 
 51 files changed, 4392 insertions(+), 255 deletions(-)

New commits:
commit 8bea6d9077d889a91d846b4c55a55c34d709783d
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Tue May 10 11:13:33 2016 +0300

    release to unstable.

diff --git a/debian/changelog b/debian/changelog
index 9114f38..83388ca 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,10 @@
-libinput (1.3.0-1) UNRELEASED; urgency=medium
+libinput (1.3.0-1) unstable; urgency=medium
 
   * New upstream release.
   * symbols: Updated.
   * control: Use https vcs urls.
 
- -- Timo Aaltonen <tjaalton@debian.org>  Tue, 10 May 2016 10:55:00 +0300
+ -- Timo Aaltonen <tjaalton@debian.org>  Tue, 10 May 2016 11:01:43 +0300
 
 libinput (1.2.4-1) unstable; urgency=medium
 

commit b716343525b16f5d24523f757008abb573e4b6d6
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Tue May 10 11:01:33 2016 +0300

    Bump policy to 3.9.8, no changes.

diff --git a/debian/changelog b/debian/changelog
index a7b0a3b..9114f38 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,7 @@ libinput (1.3.0-1) UNRELEASED; urgency=medium
 
   * New upstream release.
   * symbols: Updated.
+  * control: Use https vcs urls.
 
  -- Timo Aaltonen <tjaalton@debian.org>  Tue, 10 May 2016 10:55:00 +0300
 
diff --git a/debian/control b/debian/control
index cee8a83..3639c79 100644
--- a/debian/control
+++ b/debian/control
@@ -11,9 +11,9 @@ Build-Depends:
  libudev-dev,
  libevdev-dev (>= 0.4),
  libwacom-dev (>= 0.12),
-Standards-Version: 3.9.6
-Vcs-Git: git://anonscm.debian.org/pkg-xorg/lib/libinput.git
-Vcs-Browser: http://anonscm.debian.org/cgit/pkg-xorg/lib/libinput.git
+Standards-Version: 3.9.8
+Vcs-Git: https://anonscm.debian.org/pkg-xorg/lib/libinput.git
+Vcs-Browser: https://anonscm.debian.org/cgit/pkg-xorg/lib/libinput.git
 Homepage: http://www.freedesktop.org/wiki/Software/libinput/
 
 Package: libinput10

commit 69335ad5b4ec4a385503fb373cc7f89b9f8b4a36
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Tue May 10 11:00:54 2016 +0300

    symbols: Updated.

diff --git a/debian/changelog b/debian/changelog
index a811683..a7b0a3b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+libinput (1.3.0-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+  * symbols: Updated.
+
+ -- Timo Aaltonen <tjaalton@debian.org>  Tue, 10 May 2016 10:55:00 +0300
+
 libinput (1.2.4-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/libinput10.symbols b/debian/libinput10.symbols
index ee42245..06b37ef 100644
--- a/debian/libinput10.symbols
+++ b/debian/libinput10.symbols
@@ -7,7 +7,8 @@ libinput.so.10 libinput10 #MINVER#
  LIBINPUT_0.20.0@LIBINPUT_0.20.0 0.21.0
  LIBINPUT_0.21.0@LIBINPUT_0.21.0 0.21.0
  LIBINPUT_1.1@LIBINPUT_1.1 1.1.0
- LIBINPUT_1.2@LIBINPUT_1.2 1.2.0-1
+ LIBINPUT_1.2@LIBINPUT_1.2 1.2.0
+ LIBINPUT_1.3@LIBINPUT_1.3 1.3.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
@@ -84,6 +85,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_num_buttons@LIBINPUT_1.3 1.3.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
  libinput_dispatch@LIBINPUT_0.12.0 0.15.0
  libinput_event_destroy@LIBINPUT_0.12.0 0.15.0
@@ -105,6 +109,7 @@ libinput.so.10 libinput10 #MINVER#
  libinput_event_get_gesture_event@LIBINPUT_0.20.0 0.21.0
  libinput_event_get_keyboard_event@LIBINPUT_0.12.0 0.15.0
  libinput_event_get_pointer_event@LIBINPUT_0.12.0 0.15.0
+ libinput_event_get_tablet_pad_event@LIBINPUT_1.3 1.3.0
  libinput_event_get_tablet_tool_event@LIBINPUT_1.2 1.2.0
  libinput_event_get_touch_event@LIBINPUT_0.12.0 0.15.0
  libinput_event_get_type@LIBINPUT_0.12.0 0.15.0
@@ -132,6 +137,17 @@ libinput.so.10 libinput10 #MINVER#
  libinput_event_pointer_get_time@LIBINPUT_0.12.0 0.15.0
  libinput_event_pointer_get_time_usec@LIBINPUT_0.21.0 0.21.0
  libinput_event_pointer_has_axis@LIBINPUT_0.12.0 0.15.0
+ 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_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
+ libinput_event_tablet_pad_get_strip_number@LIBINPUT_1.3 1.3.0
+ libinput_event_tablet_pad_get_strip_position@LIBINPUT_1.3 1.3.0
+ libinput_event_tablet_pad_get_strip_source@LIBINPUT_1.3 1.3.0
+ libinput_event_tablet_pad_get_time@LIBINPUT_1.3 1.3.0
+ libinput_event_tablet_pad_get_time_usec@LIBINPUT_1.3 1.3.0
  libinput_event_tablet_tool_distance_has_changed@LIBINPUT_1.2 1.2.0
  libinput_event_tablet_tool_get_base_event@LIBINPUT_1.2 1.2.0
  libinput_event_tablet_tool_get_button@LIBINPUT_1.2 1.2.0

commit dfd9517f5a17001ed4e13c41d16fe935d2b190db
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue May 10 13:53:24 2016 +1000

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

diff --git a/configure.ac b/configure.ac
index df53289..a44d84c 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], [2])
-m4_define([libinput_micro_version], [903])
+m4_define([libinput_minor_version], [3])
+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=18:2:8
+LIBINPUT_LT_VERSION=18:3:8
 AC_SUBST(LIBINPUT_LT_VERSION)
 
 AM_SILENT_RULES([yes])

commit 87550f8dc97c0339d7339124477e736b13837c68
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon May 9 11:13:55 2016 +1000

    doc: add an entry about tablets in left-handed mode
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/doc/svg/tablet-left-handed.svg b/doc/svg/tablet-left-handed.svg
new file mode 100644
index 0000000..ff73fd9
--- /dev/null
+++ b/doc/svg/tablet-left-handed.svg
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="251.43713mm"
+   height="65.496956mm"
+   viewBox="0 0 890.91894 232.07583"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tablet-left-handed.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5774"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         id="path5776"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5732"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:collect="always">
+      <path
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         id="path5734"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path5471"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4294">
+      <stop
+         style="stop-color:#1a1a1a;stop-opacity:1;"
+         offset="0"
+         id="stop4296" />
+      <stop
+         style="stop-color:#808080;stop-opacity:1"
+         offset="1"
+         id="stop4298" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4294"
+       id="linearGradient4300"
+       x1="465.81339"
+       y1="666.13727"
+       x2="454.82117"
+       y2="658.65521"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4294"
+       id="linearGradient5445"
+       gradientUnits="userSpaceOnUse"
+       x1="465.81339"
+       y1="666.13727"
+       x2="454.82117"
+       y2="658.65521" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="395.90581"
+     inkscape:cy="178.07552"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer3"
+     showgrid="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <sodipodi:guide
+       position="127.77902,266.16995"
+       orientation="0,1"
+       id="guide4164" />
+    <sodipodi:guide
+       position="125.25364,38.38054"
+       orientation="0,1"
+       id="guide4166" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="tablet"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline"
+     transform="translate(-75.261626,-208.63373)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="stylus"
+     style="display:inline"
+     transform="translate(-75.261626,-208.63373)">
+    <g
+       id="g5394"
+       transform="matrix(0.75576066,0,0,0.75576066,18.38185,107.63861)">
+      <g
+         inkscape:export-ydpi="90"
+         inkscape:export-xdpi="90"
+         id="g4309"
+         style="display:inline">
+        <rect
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:1.05118144;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:4.20472551, 1.05118138;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4136"
+           width="522.19733"
+           height="306.02466"
+           x="75.787216"
+           y="134.15933" />
+        <rect
+           y="175.42407"
+           x="199.33878"
+           height="226.52563"
+           width="357.34042"
+           id="rect4140"
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74813837;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:2.99255325, 0.74813831;stroke-dashoffset:0;stroke-opacity:1" />
+        <rect
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4142"
+           width="65"
+           height="22.142857"
+           x="103.10225"
+           y="175.72914" />
+        <rect
+           y="203.72914"
+           x="103.10225"
+           height="22.142857"
+           width="65"
+           id="rect4148"
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1" />
+        <rect
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4150"
+           width="65"
+           height="22.142857"
+           x="103.10225"
+           y="231.72913" />
+        <rect
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4154"
+           width="65"
+           height="22.142857"
+           x="103.10225"
+           y="323.72913" />
+        <rect
+           y="351.72913"
+           x="103.10225"
+           height="22.142857"
+           width="65"
+           id="rect4156"
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1" />
+        <circle
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+           id="path4158"
+           cx="135.61298"
+           cy="287.06125"
+           r="22.98097" />
+        <ellipse
+           cy="287.06125"
+           cx="135.61298"
+           id="circle4160"
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.52043104;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:2.08172421, 0.52043105;stroke-dashoffset:0;stroke-opacity:1"
+           rx="11.5985"
+           ry="12.608653" />
+        <rect
+           style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect4162"
+           width="65"
+           height="22.142857"
+           x="103.10225"
+           y="379.72913" />
+      </g>
+      <g
+         transform="matrix(0.37129971,0.09948946,-0.09618892,0.35898192,295.60339,7.6883643)"
+         id="g4304">
+        <path
+           style="display:inline;fill:#cccccc;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 387.83544,799.76093 c -1.1128,3.61694 -3.2211,13.05163 -1.08543,14.07769 2.13567,1.02606 7.81039,-3.72162 10.99756,-6.69095 z"
+           id="path4286"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="czcc" />
+        <path
+           style="display:inline;fill:#000000"
+           d="m 392.64431,804.79039 c -8.52094,-5.90399 -8.49394,-11.01546 0.22879,-43.30647 1.03999,-3.85 2.46829,-9.67602 3.17399,-12.9467 0.99731,-4.62219 2.39455,-7.29497 6.27321,-12 2.74456,-3.32932 5.25157,-6.2783 5.57113,-6.5533 40.78433,-60.97488 80.48307,-125.1652 118.27253,-184 9.86283,-15.675 26.59424,-42.225 37.18089,-59 10.58666,-16.775 34.01422,-53.9 52.06125,-82.5 18.04703,-28.6 35.04505,-55.31677 37.77338,-59.37059 l 4.9606,-7.3706 4.1828,0.57332 c 4.16371,0.5707 4.19706,0.54958 7.30887,-4.62941 3.75631,-6.2516 8.82067,-11.57582 12.2516,-12.88026 5.99391,-2.27888 14.03303,2.9506 14.03303,9.12854 0,3.90203 -2.51704,10.62127 -6.02878,16.09385 -1.63417,2.54664 -2.97122,4.85949 -2.97122,5.13969 0,0.28019 0.9,1.54715 2,2.81546 2.28453,2.63408 2.47267,4.21918 0.86833,7.31574 -1.28218,2.47476 -26.61383,45.18798 -55.85724,94.18426 -10.83283,18.15 -25.72943,43.1137 -33.10357,55.47489 -7.37413,12.3612 -13.69273,23.17153 -14.04131,24.02297 -0.34859,0.85144 -7.50972,12.78774 -15
 .91363,26.52511 -15.54138,25.40455 -32.24417,52.9052 -70.74345,116.47703 -40.26028,66.47968 -43.66308,72.46026 -49.21634,86.5 -1.74036,4.4 -3.92035,8.675 -4.8444,9.5 -0.92405,0.825 -4.36246,3.75 -7.6409,6.5 -3.27845,2.75 -9.57132,8.3067 -13.98415,12.34823 -10.62726,9.73304 -16.99729,13.87361 -22.52334,14.64034 -3.99187,0.55386 -5.03885,0.251 -9.27207,-2.6821 z"
+           id="path4283"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="ssssccssscsssssssssssssssssss" />
+        <path
+           style="fill:url(#linearGradient4300);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 450.89044,688.88586 c 8.71518,5.62513 45.74035,-59.18436 43.57923,-75.43494 l -7.07107,-6.56599 c -29.93081,25.86352 -47.78438,74.72281 -47.78438,74.72281 0,0 0,0 11.27622,7.27812 z"
+           id="path4292"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="scccs" />
+      </g>
+    </g>
+    <g
+       inkscape:export-ydpi="90"
+       inkscape:export-xdpi="90"
+       id="g5413"
+       style="display:inline"
+       transform="matrix(-0.75576066,0,0,-0.75576066,1023.0604,541.7047)">
+      <rect
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:1.05118144;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:4.20472551, 1.05118138;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect5415"
+         width="522.19733"
+         height="306.02466"
+         x="75.787216"
+         y="134.15933" />
+      <rect
+         y="175.42407"
+         x="199.33878"
+         height="226.52563"
+         width="357.34042"
+         id="rect5417"
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74813837;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:2.99255325, 0.74813831;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect5419"
+         width="65"
+         height="22.142857"
+         x="103.10225"
+         y="175.72914" />
+      <rect
+         y="203.72914"
+         x="103.10225"
+         height="22.142857"
+         width="65"
+         id="rect5421"
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect5423"
+         width="65"
+         height="22.142857"
+         x="103.10225"
+         y="231.72913" />
+      <rect
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect5425"
+         width="65"
+         height="22.142857"
+         x="103.10225"
+         y="323.72913" />
+      <rect
+         y="351.72913"
+         x="103.10225"
+         height="22.142857"
+         width="65"
+         id="rect5427"
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1" />
+      <circle
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+         id="circle5429"
+         cx="135.61298"
+         cy="287.06125"
+         r="22.98097" />
+      <ellipse
+         cy="287.06125"
+         cx="135.61298"
+         id="ellipse5431"
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.52043104;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:2.08172421, 0.52043105;stroke-dashoffset:0;stroke-opacity:1"
+         rx="11.5985"
+         ry="12.608653" />
+      <rect
+         style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.98900002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:3.956, 0.989;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect5433"
+         width="65"
+         height="22.142857"
+         x="103.10225"
+         y="379.72913" />
+    </g>
+    <g
+       transform="matrix(0.28061371,0.07519022,-0.0726958,0.27130441,737.25564,113.44918)"
+       id="g5435">
+      <path
+         style="display:inline;fill:#cccccc;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 387.83544,799.76093 c -1.1128,3.61694 -3.2211,13.05163 -1.08543,14.07769 2.13567,1.02606 7.81039,-3.72162 10.99756,-6.69095 z"
+         id="path5437"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="czcc" />
+      <path
+         style="display:inline;fill:#000000"
+         d="m 392.64431,804.79039 c -8.52094,-5.90399 -8.49394,-11.01546 0.22879,-43.30647 1.03999,-3.85 2.46829,-9.67602 3.17399,-12.9467 0.99731,-4.62219 2.39455,-7.29497 6.27321,-12 2.74456,-3.32932 5.25157,-6.2783 5.57113,-6.5533 40.78433,-60.97488 80.48307,-125.1652 118.27253,-184 9.86283,-15.675 26.59424,-42.225 37.18089,-59 10.58666,-16.775 34.01422,-53.9 52.06125,-82.5 18.04703,-28.6 35.04505,-55.31677 37.77338,-59.37059 l 4.9606,-7.3706 4.1828,0.57332 c 4.16371,0.5707 4.19706,0.54958 7.30887,-4.62941 3.75631,-6.2516 8.82067,-11.57582 12.2516,-12.88026 5.99391,-2.27888 14.03303,2.9506 14.03303,9.12854 0,3.90203 -2.51704,10.62127 -6.02878,16.09385 -1.63417,2.54664 -2.97122,4.85949 -2.97122,5.13969 0,0.28019 0.9,1.54715 2,2.81546 2.28453,2.63408 2.47267,4.21918 0.86833,7.31574 -1.28218,2.47476 -26.61383,45.18798 -55.85724,94.18426 -10.83283,18.15 -25.72943,43.1137 -33.10357,55.47489 -7.37413,12.3612 -13.69273,23.17153 -14.04131,24.02297 -0.34859,0.85144 -7.50972,12.78774 -15.9
 1363,26.52511 -15.54138,25.40455 -32.24417,52.9052 -70.74345,116.47703 -40.26028,66.47968 -43.66308,72.46026 -49.21634,86.5 -1.74036,4.4 -3.92035,8.675 -4.8444,9.5 -0.92405,0.825 -4.36246,3.75 -7.6409,6.5 -3.27845,2.75 -9.57132,8.3067 -13.98415,12.34823 -10.62726,9.73304 -16.99729,13.87361 -22.52334,14.64034 -3.99187,0.55386 -5.03885,0.251 -9.27207,-2.6821 z"
+         id="path5439"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ssssccssscsssssssssssssssssss" />
+      <path
+         style="fill:url(#linearGradient5445);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 450.89044,688.88586 c 8.71518,5.62513 45.74035,-59.18436 43.57923,-75.43494 l -7.07107,-6.56599 c -29.93081,25.86352 -47.78438,74.72281 -47.78438,74.72281 0,0 0,0 11.27622,7.27812 z"
+         id="path5441"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="scccs" />
+    </g>
+    <g
+       id="g5742"
+       transform="matrix(0.75576066,0,0,0.75576066,18.38185,107.63861)">
+      <path
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5732)"
+         d="m 198.52376,174.60605 173.3128,0"
+         id="path5730"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5462"
+         d="m 199.04066,174.53964 0,173.3128"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" />
+    </g>
+    <g
+       style="display:inline"
+       id="g5746"
+       transform="matrix(0.75576066,0,0,0.75576066,452.18847,107.63861)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5748"
+         d="m 198.52376,174.60605 173.3128,0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5732)" />
+      <path
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+         d="m 199.04066,174.53964 0,173.3128"
+         id="path5750"
+         inkscape:connector-curvature="0" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:13.22581196px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="152.45718"
+       y="228.55676"
+       id="text5758"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5760"
+         x="152.45718"
+         y="228.55676"
+         style="fill:#ff0000">origin</tspan></text>
+    <text
+       sodipodi:linespacing="125%"
+       id="text5762"
+       y="228.55676"
+       x="587.55939"
+       style="font-style:normal;font-weight:normal;font-size:13.22581196px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="fill:#ff0000"
+         y="228.55676"
+         x="587.55939"
+         id="tspan5764"
+         sodipodi:role="line">origin</tspan></text>
+    <g
+       id="g5786"
+       transform="matrix(0.75576066,0,0,0.75576066,18.366504,109.15014)">
+      <path
+         sodipodi:nodetypes="cc"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5774)"
+         d="m 135.40105,167.16145 0,93.31279"
+         id="path5770"
+         inkscape:connector-curvature="0" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="116.75471"
+         y="156.13232"
+         id="text5782"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan5784"
+           x="116.75471"
+           y="156.13232"
+           style="fill:#ff0000">zero</tspan></text>
+    </g>
+    <g
+       transform="matrix(0.75576066,0,0,0.75576066,817.96129,109.15014)"
+       id="g5791">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5793"
+         d="m 135.40105,167.16145 0,93.31279"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5774)"
+         sodipodi:nodetypes="cc" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text5795"
+         y="156.13232"
+         x="116.75471"
+         style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="fill:#ff0000"
+           y="156.13232"
+           x="116.75471"
+           id="tspan5797"
+           sodipodi:role="line">zero</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/doc/tablet-support.dox b/doc/tablet-support.dox
index 0a44010..c555cea 100644
--- a/doc/tablet-support.dox
+++ b/doc/tablet-support.dox
@@ -245,4 +245,35 @@ caller and libinput does not provide specific handling. Callers should use
 external sources like libwacom to identify which buttons have semantic
 behaviors.
 
+@section tablet-left-handed Tablets in left-handed mode
+
+Left-handed mode on tablet devices usually means rotating the physical
+tablet by 180 degrees to move the tablet pad button area to right side of
+the tablet.  When left-handed mode is enabled on a tablet device (see
+libinput_device_config_left_handed_set()) the tablet tool and tablet pad
+behavior changes. In left-handed mode, the tools' axes are adjusted
+so that the origin of each axis remains the logical north-east of
+the physical tablet. For example, the x and y axes are inverted and the
+positive x/y coordinates are down/right of the top-left corner of the tablet
+in its current orientation. On a tablet pad, the ring and strip are
+similarly adjusted. The origin of the ring and strips remain the top-most
+point.
+
+@image html tablet-left-handed.svg "Tablet axes in right- and left-handed mode"
+
+Pad buttons are not affected by left-handed mode; the number of each button
+remains the same even when the perceived physical location of the button
+changes. This is a conscious design decision:
+- Tablet pad buttons do not have intrinsic semantic meanings. Re-ordering
+  the button numbers would not change any functionality.
+- Button numbers should not be exposed directly to the user but handled in
+  the intermediate layers. Re-ordering button numbers thus has no
+  user-visible effect.
+- Re-ordering button numbers may complicate the intermediate layers.
+
+Left-handed mode is only available on some tablets, some tablets are
+symmetric and thus do not support left-handed mode. libinput requires
+libwacom to determine if a tablet is capable of being switched to
+left-handed mode.
+
 */

commit 3ff302694ee3ee98e370fccb2a4ad1a70a148a7f
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed May 4 19:15:39 2016 +1000

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

diff --git a/configure.ac b/configure.ac
index 8c5b257..df53289 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], [2])
-m4_define([libinput_micro_version], [902])
+m4_define([libinput_micro_version], [903])
 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:1:8
+LIBINPUT_LT_VERSION=18:2:8
 AC_SUBST(LIBINPUT_LT_VERSION)
 
 AM_SILENT_RULES([yes])

commit cbb95cf56ef6250f88371fbd78107b5d9a18f212
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue May 3 14:14:04 2016 +1000

    test: add a missing empty line
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/test/trackpoint.c b/test/trackpoint.c
index 5a68b19..4098f6f 100644
--- a/test/trackpoint.c
+++ b/test/trackpoint.c
@@ -279,6 +279,7 @@ START_TEST(trackpoint_topsoftbuttons_left_handed_both)
 	litest_delete_device(trackpoint);
 }
 END_TEST
+
 void
 litest_setup_tests(void)
 {

commit d8e92b3e45a0b0b222e1ee5ace161b569acebd57
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue May 3 14:10:51 2016 +1000

    evdev: log the applied model flags in debug mode
    
    Makes it a lot easier to figure out if the udev properties are set up
    correctly.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/src/evdev.c b/src/evdev.c
index afc4710..bcd9c5b 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1741,8 +1741,13 @@ evdev_read_model_flags(struct evdev_device *device)
 
 	while (m->property) {
 		if (!!udev_device_get_property_value(device->udev_device,
-						     m->property))
+						     m->property)) {
+			log_debug(device->base.seat->libinput,
+				  "%s: tagged as %s\n",
+				  evdev_device_get_sysname(device),
+				  m->property);
 			model_flags |= m->model;
+		}
 		m++;
 	}
 

commit dc7570f047d5e9be8cbec65672b4a2512c3811b3
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue May 3 13:44:04 2016 +1000

    Constify two matrix multiplication helpers
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/src/libinput-util.h b/src/libinput-util.h
index 8f814cc..82ab2b1 100644
--- a/src/libinput-util.h
+++ b/src/libinput-util.h
@@ -228,7 +228,7 @@ matrix_init_translate(struct matrix *m, float x, float y)
 }
 
 static inline int
-matrix_is_identity(struct matrix *m)
+matrix_is_identity(const struct matrix *m)
 {
 	return (m->val[0][0] == 1 &&
 		m->val[0][1] == 0 &&
@@ -263,7 +263,7 @@ matrix_mult(struct matrix *dest,
 }
 
 static inline void
-matrix_mult_vec(struct matrix *m, int *x, int *y)
+matrix_mult_vec(const struct matrix *m, int *x, int *y)
 {
 	int tx, ty;
 

commit df42e9aebc4ae53fa9306d7fbbc316991c1aa44c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue May 3 09:08:25 2016 +1000

    doc: add an overview of the various configuration options
    
    It's a bit hard to find what can be configured in the wall of text that is the
    doxygen output. Add a TOC of the various options so it's easy to get a quick
    grasp.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/src/libinput.h b/src/libinput.h
index cedcabf..a93676e 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -3309,10 +3309,36 @@ libinput_device_group_get_user_data(struct libinput_device_group *group);
  * configuration. This default can be obtained with the respective
  * get_default call.
  *
+ * Configuration options are device dependent and not all options are
+ * supported on all devices. For all configuration options, libinput
+ * provides a call to check if a configuration option is available on a
+ * device (e.g. libinput_device_config_calibration_has_matrix())
+ *
  * Some configuration option may be dependent on or mutually exclusive with
  * with other options. The behavior in those cases is
  * implementation-dependent, the caller must ensure that the options are set
  * in the right order.
+ *
+ * Below is a general grouping of configuration options according to device
+ * type. Note that this is a guide only and not indicative of any specific
+ * device.
+ * - Touchpad:
+ *    - libinput_device_config_tap_set_enabled()
+ *    - libinput_device_config_tap_set_drag_enabled()
+ *    - libinput_device_config_tap_set_drag_lock_enabled()
+ *    - libinput_device_config_click_set_method()
+ *    - libinput_device_config_scroll_set_method()
+ *    - libinput_device_config_dwt_set_enabled()
+ * - Touchscreens:
+ *    - libinput_device_config_calibration_set_matrix()
+ * - Pointer devices (mice, trackballs, touchpads):
+ *    - libinput_device_config_accel_set_speed()
+ *    - libinput_device_config_accel_set_profile()
+ *    - libinput_device_config_scroll_set_natural_scroll_enabled()
+ *    - libinput_device_config_left_handed_set()
+ *    - libinput_device_config_middle_emulation_set_enabled()
+ * - All devices:
+ *    - libinput_device_config_send_events_set_mode()
  */
 
 /**

commit b94b40206b83d09871c7b2c6877bc7cb812f3c7d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue May 3 08:49:12 2016 +1000

    doc: add missing @ingroup tag to the accel profile enum
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/src/libinput.h b/src/libinput.h
index 97fd570..cedcabf 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -3871,6 +3871,9 @@ libinput_device_config_accel_get_speed(struct libinput_device *device);
 double
 libinput_device_config_accel_get_default_speed(struct libinput_device *device);
 
+/**
+ * @ingroup config
+ */
 enum libinput_config_accel_profile {
 	/**
 	 * Placeholder for devices that don't have a configurable pointer

commit 6a22eed4efa2a18664d62c6d8131c05258f869ab
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Sep 16 15:13:00 2014 +1000

    touchpad: detect and warn about kernel tracking pointer jumps
    
    If a touch moves by more than 20mm within a single frame, reset the motion
    history, effectively discarding the movement. This is a relatively common bug
    and almost always needs a kernel fix, so add an explanatory page to the docs.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/doc/Makefile.am b/doc/Makefile.am
index 7a7c6cf..f56ed6a 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -27,6 +27,7 @@ header_files = \
 	$(srcdir)/tapping.dox \
 	$(srcdir)/test-suite.dox \
 	$(srcdir)/tools.dox \
+	$(srcdir)/touchpad-jumping-cursors.dox \
 	$(srcdir)/touchpads.dox
 
 diagram_files = \
diff --git a/doc/page-hierarchy.dox b/doc/page-hierarchy.dox
index 1351a5e..e47e98e 100644
--- a/doc/page-hierarchy.dox
+++ b/doc/page-hierarchy.dox
@@ -7,6 +7,7 @@
 - @subpage gestures
 - @subpage palm_detection
 - @subpage t440_support
+- @subpage touchpad_jumping_cursor
 
 @page touchscreens Touchscreens
 
diff --git a/doc/touchpad-jumping-cursors.dox b/doc/touchpad-jumping-cursors.dox
new file mode 100644
index 0000000..e581eb1
--- /dev/null
+++ b/doc/touchpad-jumping-cursors.dox
@@ -0,0 +1,54 @@
+/**
+@page touchpad_jumping_cursor Touchpad jumping cursor bugs
+
+A common bug encountered on touchpads is a cursor jump when alternating
+between fingers on a multi-touch-capable touchpad. For example, after moving
+the cursor a user may use a second finger in the software button area to
+physically click the touchpad. Upon setting the finger down, the cursor
+exhibits a jump towards the bottom left or right, depending on the finger
+position.
+
+When libinput detects a cursor jump it prints a bug warning to the log with
+the text <b>"Touch jump detected and discarded."</b> and a link to this page.
+
+In most cases, this is a bug in the kernel driver and to libinput it appears
+that the touch point moves from its previous position. The pointer jump can
+usually be seen in the evemu-record output for the device:
+
+<pre>
+ E: 249.206319 0000 0000 0000    # ------------ SYN_REPORT (0) ----------
+ E: 249.218008 0003 0035 3764    # EV_ABS / ABS_MT_POSITION_X    3764
+ E: 249.218008 0003 0036 2221    # EV_ABS / ABS_MT_POSITION_Y    2221
+ E: 249.218008 0003 003a 0065    # EV_ABS / ABS_MT_PRESSURE      65


Reply to: