Hello community,

here is the log from the commit of package xf86-input-wacom for 
openSUSE:Factory checked in at 2017-03-22 23:17:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xf86-input-wacom (Old)
 and      /work/SRC/openSUSE:Factory/.xf86-input-wacom.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xf86-input-wacom"

Wed Mar 22 23:17:13 2017 rev:24 rq:481107 version:0.34.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/xf86-input-wacom/xf86-input-wacom.changes        
2017-03-18 20:48:16.789179747 +0100
+++ /work/SRC/openSUSE:Factory/.xf86-input-wacom.new/xf86-input-wacom.changes   
2017-03-22 23:17:14.828558354 +0100
@@ -1,0 +2,14 @@
+Sat Mar 18 20:51:47 UTC 2017 - [email protected]
+
+- Version update to 0.34.2:
+  * Prevent xf86-input-wacom from binding to pure-keyboard devices
+  * refer KeySyms defined by keysymdef.h in man page
+  * Make sibling device name matching slightly more lenient 
+- Remove upstreamed patch:
+  * U_conf-rename-to-70-wacom.conf.patch
+- Update patch to allow make check to pass, we add option:
+  * n_01-Add-option-to-enable-logging.patch
+- Run tests
+- Drop support for older distros as we care about leap+
+
+-------------------------------------------------------------------

Old:
----
  U_conf-rename-to-70-wacom.conf.patch
  xf86-input-wacom-0.32.0.tar.bz2

New:
----
  xf86-input-wacom-0.34.2.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xf86-input-wacom.spec ++++++
--- /var/tmp/diff_new_pack.zFrnfU/_old  2017-03-22 23:17:16.072382163 +0100
+++ /var/tmp/diff_new_pack.zFrnfU/_new  2017-03-22 23:17:16.076381596 +0100
@@ -16,29 +16,22 @@
 #
 
 
-%define install_serial 1
-%if 0%( test -d %{_libexecdir}/udev/rules.d && echo "1" ) > 0
-%define _udevrulesdir %{_libexecdir}/udev/rules.d
-%else
-%define _udevrulesdir /lib/udev/rules.d
-%endif
 Name:           xf86-input-wacom
-Version:        0.32.0
+Version:        0.34.2
 Release:        0
 Summary:        Wacom input driver for the Xorg X server
 License:        GPL-2.0+
 Group:          System/X11/Servers/XF86_4
 Url:            
http://sourceforge.net/apps/mediawiki/linuxwacom/index.php?title=Xf86-input-wacom
 Source0:        
http://downloads.sourceforge.net/project/linuxwacom/xf86-input-wacom/%{name}-%{version}.tar.bz2
-Patch0:         U_conf-rename-to-70-wacom.conf.patch
 Patch7:         n_01-Add-option-to-enable-logging.patch
 Patch8:         n_02-Log-PROXIMITY-LOW-LEVEL-events.patch
 Patch9:         n_03-Log-PRESSURE-low-level-events.patch
 Patch10:        n_04-Log-BUTTON-HIGH-LEVEL-events.patch
 # For directory ownership
 BuildRequires:  libtool
-BuildRequires:  pkg-config
 BuildRequires:  pkgconfig
+BuildRequires:  systemd-rpm-macros
 BuildRequires:  pkgconfig(inputproto)
 BuildRequires:  pkgconfig(kbproto)
 BuildRequires:  pkgconfig(libudev)
@@ -53,7 +46,7 @@
 BuildRequires:  pkgconfig(xproto)
 BuildRequires:  pkgconfig(xrandr)
 Requires:       linuxconsoletools
-Requires:       udev
+Requires:       pkgconfig(udev)
 Supplements:    xorg-x11-server
 # This was part of the xorg-x11-driver-input package up to version 7.6
 Conflicts:      xorg-x11-driver-input <= 7.6
@@ -64,11 +57,6 @@
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 ExcludeArch:    s390 s390x
 %{x11_abi_xinput_req}
-%if 0%{?suse_version} > 1230
-BuildRequires:  systemd-rpm-macros
-%else
-BuildRequires:  systemd
-%endif
 
 %description
 wacom is an X input driver and utilities for Wacom devices.
@@ -85,7 +73,6 @@
 
 %prep
 %setup -q
-%patch0 -p1
 %patch7 -p1
 %patch8 -p1
 %patch9 -p1
@@ -93,24 +80,30 @@
 
 %build
 autoreconf -fi
-%configure --with-xorg-conf-dir=%{_sysconfdir}/X11/xorg.conf.d 
--enable-logging --with-systemd-unit-dir=%{_unitdir} 
--with-udev-rules-dir=%{_udevrulesdir}
+%configure \
+    --with-xorg-conf-dir=%{_sysconfdir}/X11/xorg.conf.d \
+    --enable-logging \
+    --with-systemd-unit-dir=%{_unitdir} \
+    --with-udev-rules-dir=%{_udevrulesdir} \
+    --disable-silent-rules
 make %{?_smp_mflags}
 
 %install
 %make_install
 find %{buildroot} -type f -name "*.la" -delete -print
 mv %{buildroot}%{_udevrulesdir}/wacom.rules  
%{buildroot}%{_udevrulesdir}/65-wacom.rules
-# if we don't package these remove them so no debuginfo files will be generated
-%{!?install_serial: rm %{buildroot}%{_bindir}/isdv4-serial-inputattach 
%{buildroot}%{_bindir}/isdv4-serial-debugger}
+
+%check
+make %{?_smp_mflags} check
+
+%pre
+%service_add_pre [email protected]
 
 %post
+%service_add_post [email protected]
 test -n "$FIRST_ARG" || FIRST_ARG=$1
 if [ $FIRST_ARG -eq 1 ]; then
-%if 0%{?suse_version} > 1230
     %udev_rules_update
-%else
-    udevadm control --reload >/dev/null 2>&1 || : \
-%endif
     %{_bindir}/systemctl daemon-reload >/dev/null 2>&1 || :
 fi
 # re-plug the input devices
@@ -121,13 +114,10 @@
 %service_del_preun [email protected]
 
 %postun
+%service_del_postun [email protected]
 test -n "$FIRST_ARG" || FIRST_ARG=$1
 if [ $FIRST_ARG -le 1 ]; then
-%if 0%{?suse_version} > 1230
     %udev_rules_update
-%else
-    udevadm control --reload >/dev/null 2>&1 || : \
-%endif
     %{_bindir}/systemctl daemon-reload >/dev/null 2>&1 || :
 fi
 # re-plug the input devices
@@ -137,15 +127,15 @@
 %files
 %defattr(-,root,root)
 %doc AUTHORS ChangeLog GPL README
-%{!?install_serial:%exclude} %{_udevrulesdir}/65-wacom.rules
-%{!?install_serial:%exclude} %{_unitdir}/[email protected]
+%{_udevrulesdir}/65-wacom.rules
+%{_unitdir}/[email protected]
 %config %{_sysconfdir}/X11/xorg.conf.d/70-wacom.conf
 %dir %{_libdir}/xorg/modules/input
 %{_libdir}/xorg/modules/input/wacom_drv.so
 %{_bindir}/xsetwacom
 %{_mandir}/man1/xsetwacom.1%{?ext_man}
 %{_mandir}/man4/wacom.4%{?ext_man}
-%{?install_serial:%{_bindir}/isdv4-serial-inputattach}
+%{_bindir}/isdv4-serial-inputattach
 
 %files devel
 %defattr(-,root,root)
@@ -154,7 +144,7 @@
 %{_includedir}/xorg/wacom-properties.h
 %{_includedir}/xorg/wacom-util.h
 # not useful for most people
-%{?install_serial:%{_bindir}/isdv4-serial-debugger}
+%{_bindir}/isdv4-serial-debugger
 %{_libdir}/pkgconfig/xorg-wacom.pc
 
 %changelog

++++++ n_01-Add-option-to-enable-logging.patch ++++++
--- /var/tmp/diff_new_pack.zFrnfU/_old  2017-03-22 23:17:16.104377631 +0100
+++ /var/tmp/diff_new_pack.zFrnfU/_new  2017-03-22 23:17:16.108377064 +0100
@@ -29,10 +29,10 @@
  tools/xsetwacom.c          | 10 ++++++++++
  11 files changed, 177 insertions(+), 3 deletions(-)
 
-Index: xf86-input-wacom-0.30.0/configure.ac
+Index: xf86-input-wacom-0.34.2/configure.ac
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/configure.ac
-+++ xf86-input-wacom-0.30.0/configure.ac
+--- xf86-input-wacom-0.34.2.orig/configure.ac
++++ xf86-input-wacom-0.34.2/configure.ac
 @@ -87,6 +87,17 @@ if test "x$DEBUGGING" = xyes; then
         AC_DEFINE(DEBUG, 1, [Enable debugging code])
  fi
@@ -51,10 +51,10 @@
  # Define a configure option for an alternate input module directory
  AC_ARG_WITH(xorg-module-dir,
              AS_HELP_STRING([--with-xorg-module-dir=DIR],
-Index: xf86-input-wacom-0.30.0/include/wacom-properties.h
+Index: xf86-input-wacom-0.34.2/include/wacom-properties.h
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/include/wacom-properties.h
-+++ xf86-input-wacom-0.30.0/include/wacom-properties.h
+--- xf86-input-wacom-0.34.2.orig/include/wacom-properties.h
++++ xf86-input-wacom-0.34.2/include/wacom-properties.h
 @@ -111,6 +111,15 @@
  */
  #define WACOM_PROP_PRESSURE_RECAL "Wacom Pressure Recalibration"
@@ -71,10 +71,10 @@
  /* The following are tool types used by the driver in WACOM_PROP_TOOL_TYPE
   * or in the 'type' field for XI1 clients. Clients may check for one of
   * these types to identify tool types.
-Index: xf86-input-wacom-0.30.0/man/wacom.man
+Index: xf86-input-wacom-0.34.2/man/wacom.man
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/man/wacom.man
-+++ xf86-input-wacom-0.30.0/man/wacom.man
+--- xf86-input-wacom-0.34.2.orig/man/wacom.man
++++ xf86-input-wacom-0.34.2/man/wacom.man
 @@ -269,6 +269,25 @@ initial pressure reading may be unequal
  good pen. If the consecutive pressure readings are not higher than
  the initial pressure by a threshold no button event will be generated.
@@ -101,11 +101,11 @@
  .RE
  .SH "TOUCH GESTURES"
  .SS Single finger (1FG)
-Index: xf86-input-wacom-0.30.0/man/xsetwacom.man
+Index: xf86-input-wacom-0.34.2/man/xsetwacom.man
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/man/xsetwacom.man
-+++ xf86-input-wacom-0.30.0/man/xsetwacom.man
-@@ -266,7 +266,24 @@ initial pressure reading may be unequal
+--- xf86-input-wacom-0.34.2.orig/man/xsetwacom.man
++++ xf86-input-wacom-0.34.2/man/xsetwacom.man
+@@ -273,7 +273,24 @@ initial pressure reading may be unequal
  good pen. If the consecutive pressure readings are not higher than
  the initial pressure by a threshold no button event will be generated.
  This option allows to disable the recalibration.  Default:  on
@@ -131,10 +131,10 @@
  
  .SH "AUTHORS"
  Peter Hutterer <[email protected]>
-Index: xf86-input-wacom-0.30.0/src/wcmCommon.c
+Index: xf86-input-wacom-0.34.2/src/wcmCommon.c
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/src/wcmCommon.c
-+++ xf86-input-wacom-0.30.0/src/wcmCommon.c
+--- xf86-input-wacom-0.34.2.orig/src/wcmCommon.c
++++ xf86-input-wacom-0.34.2/src/wcmCommon.c
 @@ -27,6 +27,9 @@
  #include "wcmTouchFilter.h"
  #include <xkbsrv.h>
@@ -181,7 +181,7 @@
  /*****************************************************************************
   * wcmSendButtons --
   *   Send button events by comparing the current button mask with the
-@@ -1468,6 +1500,9 @@ WacomCommonPtr wcmNewCommon(void)
+@@ -1469,6 +1501,9 @@ WacomCommonPtr wcmNewCommon(void)
        common->wcmRawSample = DEFAULT_SAMPLES;
                        /* number of raw data to be used to for filtering */
        common->wcmPressureRecalibration = 1;
@@ -191,11 +191,11 @@
        return common;
  }
  
-Index: xf86-input-wacom-0.30.0/src/wcmConfig.c
+Index: xf86-input-wacom-0.34.2/src/wcmConfig.c
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/src/wcmConfig.c
-+++ xf86-input-wacom-0.30.0/src/wcmConfig.c
-@@ -637,6 +637,10 @@ static int wcmPreInit(InputDriverPtr drv
+--- xf86-input-wacom-0.34.2.orig/src/wcmConfig.c
++++ xf86-input-wacom-0.34.2/src/wcmConfig.c
+@@ -646,6 +646,10 @@ static int wcmPreInit(InputDriverPtr drv
  
        common->debugLevel = xf86SetIntOption(pInfo->options,
                                              "CommonDBG", common->debugLevel);
@@ -206,11 +206,11 @@
        oldname = strdup(pInfo->name);
  
        if (wcmIsHotpluggedDevice(pInfo))
-Index: xf86-input-wacom-0.30.0/src/wcmUSB.c
+Index: xf86-input-wacom-0.34.2/src/wcmUSB.c
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/src/wcmUSB.c
-+++ xf86-input-wacom-0.30.0/src/wcmUSB.c
-@@ -1128,6 +1128,31 @@ static int usbIdToType(int id)
+--- xf86-input-wacom-0.34.2.orig/src/wcmUSB.c
++++ xf86-input-wacom-0.34.2/src/wcmUSB.c
+@@ -1138,6 +1138,31 @@ static int usbIdToType(int id)
        return type;
  }
  
@@ -242,10 +242,10 @@
  /**
   * Find the tool type (STYLUS_ID, etc.) based on the device_id.
   *
-Index: xf86-input-wacom-0.30.0/src/wcmXCommand.c
+Index: xf86-input-wacom-0.34.2/src/wcmXCommand.c
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/src/wcmXCommand.c
-+++ xf86-input-wacom-0.30.0/src/wcmXCommand.c
+--- xf86-input-wacom-0.34.2.orig/src/wcmXCommand.c
++++ xf86-input-wacom-0.34.2/src/wcmXCommand.c
 @@ -99,6 +99,9 @@ static Atom prop_tooltype;
  static Atom prop_btnactions;
  static Atom prop_product_id;
@@ -256,7 +256,7 @@
  #ifdef DEBUG
  static Atom prop_debuglevels;
  #endif
-@@ -316,7 +319,10 @@ void InitWcmDeviceProperties(InputInfoPt
+@@ -337,7 +340,10 @@ void InitWcmDeviceProperties(InputInfoPt
        values[0] = common->vendor_id;
        values[1] = common->tablet_id;
        prop_product_id = InitWcmAtom(pInfo->dev, XI_PROP_PRODUCT_ID, 
XA_INTEGER, 32, 2, values);
@@ -268,7 +268,7 @@
  #ifdef DEBUG
        values[0] = priv->debugLevel;
        values[1] = common->debugLevel;
-@@ -918,6 +924,20 @@ int wcmSetProperty(DeviceIntPtr dev, Ato
+@@ -951,6 +957,20 @@ int wcmSetProperty(DeviceIntPtr dev, Ato
                        common->debugLevel = values[1];
                }
  #endif
@@ -289,11 +289,11 @@
        } else if (property == prop_btnactions)
        {
                int nbuttons = priv->nbuttons < 4 ? priv->nbuttons : 
priv->nbuttons + 4;
-Index: xf86-input-wacom-0.30.0/src/xf86Wacom.h
+Index: xf86-input-wacom-0.34.2/src/xf86Wacom.h
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/src/xf86Wacom.h
-+++ xf86-input-wacom-0.30.0/src/xf86Wacom.h
-@@ -65,6 +65,28 @@
+--- xf86-input-wacom-0.34.2.orig/src/xf86Wacom.h
++++ xf86-input-wacom-0.34.2/src/xf86Wacom.h
+@@ -69,6 +69,28 @@
  #define DBG(lvl, priv, ...)
  #endif
  
@@ -322,11 +322,11 @@
  
/******************************************************************************
   * WacomModule - all globals are packed in a single structure to keep the
   *               global namespaces as clean as possible.
-Index: xf86-input-wacom-0.30.0/src/xf86WacomDefs.h
+Index: xf86-input-wacom-0.34.2/src/xf86WacomDefs.h
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/src/xf86WacomDefs.h
-+++ xf86-input-wacom-0.30.0/src/xf86WacomDefs.h
-@@ -462,7 +462,9 @@ struct _WacomCommonRec
+--- xf86-input-wacom-0.34.2.orig/src/xf86WacomDefs.h
++++ xf86-input-wacom-0.34.2/src/xf86WacomDefs.h
+@@ -460,7 +460,9 @@ struct _WacomCommonRec
        int wcmRawSample;            /* Number of raw data used to filter an 
event */
        int wcmPressureRecalibration; /* Determine if pressure recalibration of
                                         worn pens should be performed */
@@ -337,10 +337,10 @@
        int bufpos;                        /* position with buffer */
        unsigned char buffer[BUFFER_SIZE]; /* data read from device */
  
-Index: xf86-input-wacom-0.30.0/tools/xsetwacom.c
+Index: xf86-input-wacom-0.34.2/tools/xsetwacom.c
 ===================================================================
---- xf86-input-wacom-0.30.0.orig/tools/xsetwacom.c
-+++ xf86-input-wacom-0.30.0/tools/xsetwacom.c
+--- xf86-input-wacom-0.34.2.orig/tools/xsetwacom.c
++++ xf86-input-wacom-0.34.2/tools/xsetwacom.c
 @@ -158,6 +158,16 @@ static param_t parameters[] =
                .arg_count = 1,
        },
@@ -358,3 +358,12 @@
                .name = "Suppress",
                .x11name = "Suppress",
                .desc = "Number of points trimmed (default is 2). ",
+@@ -2974,7 +2984,7 @@ static void test_parameter_number(void)
+        * deprecated them.
+        * Numbers include trailing NULL entry.
+        */
+-      assert(ARRAY_SIZE(parameters) == 39);
++      assert(ARRAY_SIZE(parameters) == 40);
+       assert(ARRAY_SIZE(deprecated_parameters) == 17);
+ }
+ 

++++++ xf86-input-wacom-0.32.0.tar.bz2 -> xf86-input-wacom-0.34.2.tar.bz2 ++++++
++++ 1912 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/ChangeLog new/xf86-input-wacom-0.34.2/ChangeLog
--- old/xf86-input-wacom-0.32.0/ChangeLog       2015-11-24 00:48:04.000000000 
+0100
+++ new/xf86-input-wacom-0.34.2/ChangeLog       2017-03-08 23:31:32.000000000 
+0100
@@ -1,3 +1,468 @@
+commit 267e74cd1325f250185ced951914220bc4287ecf
+Author: Peter Hutterer <[email protected]>
+Date:   Thu Mar 9 08:30:39 2017 +1000
+
+    wacom 0.34.2
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit 64991c8b8f8e6fadb8843960d89570d81d470b63
+Author: Peter Hutterer <[email protected]>
+Date:   Thu Mar 9 08:28:36 2017 +1000
+
+    test: add TimerCancel to fake symbols
+    
+    Fixes distcheck
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit da26ba09c91241c432765de3e18ae4f216749029
+Author: Peter Hutterer <[email protected]>
+Date:   Thu Mar 9 07:11:18 2017 +1000
+
+    wacom 0.34.1
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit de650d6224b353ee5596f5ce65de8059db5cd289
+Author: Peter Hutterer <[email protected]>
+Date:   Fri Feb 24 14:11:35 2017 +1000
+
+    Cancel timers on DEVICE_OFF
+    
+    Otherwise we run the risk of having a timer trigger after we removed the
+    device. Since we pass InputInfoPtrs and WacomDevicePtrs to the timers as
+    arguments, these may have been freed by the time a timer triggers.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Acked-by: Jason Gerecke <[email protected]>
+
+commit f65d97362813ea89d18e5049ad87bc468ec30f85
+Author: Peter Hutterer <[email protected]>
+Date:   Thu Feb 23 09:47:27 2017 +1000
+
+    Revert to Update properties with a timer func
+    
+    This was required when we only had the SIGIO handler because sending events
+    allocates memory and things break. Now with the input thread we *can* send
+    events from within the thread but it can mess up other delivery.
+    
+    https://bugs.freedesktop.org/show_bug.cgi?id=99887
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Acked-by: Jason Gerecke <[email protected]>
+
+commit 23f9586779f94cacb899120ef426d8fcd1647dcb
+Author: Ping Cheng <[email protected]>
+Date:   Fri Feb 10 21:53:01 2017 -0800
+
+    Make sibling device name matching slightly more lenient
+    
+    The wcmIsSiblingDevice function uses several tricks to try and determine
+    if two devices should be considered siblings. If its 'logical_only'
+    parameter is false, this includes comparing device names. Device name
+    comparison is complicated by the fact that suffixes are added on by
+    the X and kernel drivers. To deal with this, the wcmSplitName function
+    tries to split a device name into three pieces: its "basename" that
+    describes the model, its "subdevice" name that describes the interface,
+    and its "tool" name which describes the X11 tool.
+    
+    Spliting the name is a somewhat kludgy process which does not properly
+    handle the device names for the MobileStudio Pro or Cintiq Pro. The
+    kernel reads the name of these devices directly from the hardware's
+    descriptors, and the names are slightly different between the pen and
+    touch interfaces (the touch device has an extra "Touch" suffix).
+    
+    This patch tweaks how wcmSplitName breaks apart device names in order
+    to handle the MobileStudio Pro and Cintiq Pro. Specifically, it now
+    allows the "subdevice" to contain an arbitrary number of "Pen", "Finger",
+    :Touch", or "Pad" suffixes. For the MobileStudio Pro and Cintiq Pro,
+    this should allow the "basename" that is considered for sibling device
+    matches to be identical between both the pen and touch interfaces.
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Signed-off-by: Ping Cheng <[email protected]>
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit f0dedf7a610ac97bc45738492b98ce4f1e0514ec
+Author: Jason Gerecke <[email protected]>
+Date:   Wed Jan 18 09:00:10 2017 -0800
+
+    tests: Fix compilation under ABI 25 and greater
+    
+    The X server recently deprecated xf86BlockSIGIO and xf86UnblockSIGIO and
+    simultaneously defined them inline within xf86.h. The new inline definition
+    causes problems both because fake-symbols.c will end up redefining them,
+    and because the function bodies reference a symbol that does not get 
included
+    when building the tests. To fix these errors, update fake-symbols.c with
+    updated include guards and a definition of the undefined symbols.
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit 6ff54b3020268f7baf8f1e748a6e278126472c58
+Author: Jason Gerecke <[email protected]>
+Date:   Mon Dec 5 11:14:08 2016 -0800
+
+    wacom 0.34.0
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+
+commit 3ad7e9e6bfce19f630fc2902dfcceb53b912ae1f
+Author: Jason Gerecke <[email protected]>
+Date:   Fri Nov 18 15:21:58 2016 -0800
+
+    wacom 0.33.99.1
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+
+commit 051a406583a93cad2ec34a3fb03885237cd1a23e
+Author: Jason Gerecke <[email protected]>
+Date:   Tue Nov 1 09:02:21 2016 -0700
+
+    Add missing newline to log message
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit 5bd8f70b9b3d6266e4c8e3c0ffd408d2c2e3c365
+Author: Jason Gerecke <[email protected]>
+Date:   Fri Nov 11 08:43:31 2016 -0800
+
+    Further reduce arbitration priority of cursor devices
+    
+    Cursor (puck) devices are typically left on the sensor and can emit
+    spurious events that can potentially cause the driver to steal "active"
+    status from another tool. In the past we'd only considered the case where
+    the active tool was a touch but it is reasonable to extend this logic to
+    other tool types. If a cursor emits a spurious event in the middle of a
+    pen dragging, for example, the drag will momentarily stop as the pen is
+    temporarily sent out of prox -- with potentially disasterous results.
+    Additionally, when the pen "returns" in prox on the next event, any
+    currently-applied pressure will be taken as the preload and result in
+    incorrect pressure scaling until the pen is removed from contact.
+    
+    This commit removes the "IsTouch" conditions from the handling of
+    spurious cursor events in check_arbitrated_control. The result is that a
+    cursor will not be granted "active" status in preference to any other
+    tool (and will drop "active" status if gained after 100ms and while
+    no buttons are pressed).
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit 9433019e82b6e3ac5c2ca21ae4fabbb8a6756e38
+Author: Jason Gerecke <[email protected]>
+Date:   Tue Nov 1 10:55:58 2016 -0700
+
+    Allow cursor devices to maintain "active" status while buttons are down
+    
+    Cursor (puck) tools tend to be left on the sensor, preventing us from
+    being able to rely solely on proximity information to determine if
+    they are being actively used. In the past we've used the amount of time
+    since the last event as an indicator of activity and allowed other
+    devices to grab control of the pointer if more than 100 milliseconds had
+    elapsed since the cursor's last event. Although this seems to work well,
+    there is another indicator of activity which should not be ignored:
+    button state. If a user is pressing a button on their cursor tool, it
+    should be considered active even if the 100ms timeout has been exceeded.
+    Not doing so could potentially allow another tool to grab "active"
+    status and have our driver send a button-up message and stop an in-
+    progress drag.
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit 5f5479a4f195e11a7bb708019afb299cf7a29741
+Author: Jason Gerecke <[email protected]>
+Date:   Mon Oct 31 18:14:24 2016 -0700
+
+    Lazily allocate pressure curve table
+    
+    Now that the pressure curve contains 65K points it takes up quite a bit
+    of memory, especially considering that the pressure curve may not need
+    to exist for some devices (e.g. pads) and may just be the default linear
+    curve even for those where it should exist. To reduce the amount of
+    memory used, we now lazily allocate space for the pressure curve tables
+    only when they are set to a non-default curve.
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit 3e56ce4429d9053da3b873f8717b830e3bdc5ea4
+Author: Jason Gerecke <[email protected]>
+Date:   Tue Jun 14 10:42:29 2016 -0700
+
+    Increase full-scale pressure range from 0..2047 to 0..65535
+    
+    The driver has historically normalized the pressure range of all kernel
+    devices to 0..2047 rather than using their native range to keep things
+    like the application of the pressure curve simple. Pens that report more
+    than 2048 pressure levels are also normalized down to this range though,
+    reducing their precision. In order to accomodate the new 8K pen (and any
+    future pens with even higher precision), this patch bumps up the full-
+    scale range to be 0..65535. This number was chosen both because it far
+    exceeds anything currently known about, and also because it matches the
+    normalization range used over the wire by the Wayland tablet protocol.
+    
+    Note that the WACOM_PROP_PRESSURE_THRESHOLD value has been tied to the
+    normalized (2048-level) pressure range for some time, meaning that we
+    cannot simply change the range without causing a change in the perceived
+    threshold for users. To ensure compatibility, the value is interpreted
+    as a fraction of 2048 and then scaled to the actual normalization range.
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit 54c125b28479ff88903647c2dce1d49daa3402df
+Author: Jason Gerecke <[email protected]>
+Date:   Fri Oct 7 09:20:34 2016 -0700
+
+    Read TouchRing axis range from kernel instead of hardcoding
+    
+    The TouchRing on the MobileStudio Pro has a range of only 0-35 instead
+    of 0-17 like prior devices. Because we hardcode an assumed range, the
+    driver mistakenly believes the jump from 35 to 0 (or 0 to 35, depending
+    on direction) when the user completes a revolution is actually caused
+    by the user reversing their finger direction. By reading the range from
+    the kernel, we can avoid this situation.
+    
+    Note that the ABS_WHEEL axis is also used by (legacy) combined pen/pad
+    devices with a range corresponding to the puck fingerwheel. We need to
+    be careful to not read the value in these cases since it would lead to
+    erroneous behavior in existing setups. Devices with a range range
+    different from 0-71 will hopefully not be widely used on kernels prior
+    to 3.17 where pen and pad were split into seperate devices since there
+    is no way (short of peeking at the VID:PID or name) to have them work
+    correctly in the combined case.
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit b61d1711e9a2d6c647341e8ea0119521fd200d62
+Author: Peter Hutterer <[email protected]>
+Date:   Thu Aug 11 13:47:35 2016 +1000
+
+    Make DEVICE_CLOSE a noop
+    
+    The server guarantees that DEVICE_OFF is called for any previously enabled
+    device, so we don't really have anything to do here. And since the input
+    thread addition to the server we can't safely call 
xf86RemoveEnabledDevice()
+    twice for the same device.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Tested-by: Ping Cheng <[email protected]>
+
+commit bae283c8c91f6e064e727887da79e91e5c7c5f19
+Author: Peter Hutterer <[email protected]>
+Date:   Tue Aug 9 15:39:46 2016 +1000
+
+    Lock the input thread while creating a new device
+    
+    Don't process events while we're creating a new device so we don't start
+    processing events halfway between the new device being set up.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Tested-by: Ping Cheng <[email protected]>
+
+commit ce912d8bba63faabe5d60a9f467c714511a835f7
+Author: Peter Hutterer <[email protected]>
+Date:   Thu Jun 2 09:23:57 2016 +1000
+
+    Handle the input ABI 23 - removal of xf86BlockSIGIO
+    
+    Input is now handled in a separate thread in the server when a device is 
added
+    through xf86AddEnabledDevice(). Previously that was in a sigio handler and 
we
+    have a bunch of workarounds to avoid calling things from within the signal
+    handler. With the new API these aren't needed, so split those callbacks and
+    call them directly where needed.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Tested-by: Ping Cheng <[email protected]>
+
+commit 97d86e150c23108b4dbc99dbb8338aec60eea39c
+Author: Ping Cheng <[email protected]>
+Date:   Fri Aug 5 18:27:55 2016 -0700
+
+    xsetwacom: refer KeySyms defined by keysymdef.h in man page
+    
+    xsetwacom accepts keys in X11 KeySyms format. To make the interface
+    user friendly, we mapped a set of modifiers to aliases that can be
+    recognized by most users. But, there are a few less recognizable or
+    confusing keys/modifiers left. This patch tells users where to find
+    the X11 KeySyms they are looking for.
+    
+    Signed-off-by: Ping Cheng <[email protected]>
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit d54db63e716317bb336ddf444ab8034353913db7
+Author: Ping Cheng <[email protected]>
+Date:   Thu Aug 4 10:49:52 2016 -0700
+
+    xsetwacom: Add return to special key alias list
+    
+    return is a popular key assignment which was not added to the
+    special key list. Although Return would work since it is the
+    key name, we add return anyway to make users happy.
+    
+    Enter/enter for KP_Enter could have achieved the same purpose.
+    But, it confuses users (and some developers ;).
+    
+    Signed-off-by: Ping Cheng <[email protected]>
+    Tested-by: Kelly Price <[email protected]>
+
+commit b16b68a9302ce19226d78eed0e1fcb530f372506
+Author: Jason Gerecke <[email protected]>
+Date:   Fri May 13 15:32:27 2016 -0700
+
+    wacom 0.33.0
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+
+commit f4763d1985330bb966908113bf3bd0b55d68372c
+Author: Jason Gerecke <[email protected]>
+Date:   Wed May 4 09:26:58 2016 -0700
+
+    wacom 0.32.99.1
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+
+commit 0da5cd545e38079b62656a23835c4943af05dc92
+Author: Jason Gerecke <[email protected]>
+Date:   Wed Apr 27 10:10:27 2016 -0700
+
+    conf: rename to 70-wacom.conf
+    
+    This is part of a two-step solution, the other half is renaming the
+    xf86-input-libinput config snippet to sort lower than ours.
+    
+    Currently libinput picks up devices that are (for now) destined to the 
wacom
+    driver. Since the wacom driver is more of a leaf package than libinput, the
+    best option here is to make the wacom driver sort higher and let users
+    uninstall it when not needed. To avoid crowding the 90-* space where users
+    usually have custom config snippets, libinput will drop down to 60 and
+    wacom will bump up to 70.
+    
+    Fixes: https://sourceforge.net/p/linuxwacom/bugs/315/
+    Fixes: https://github.com/linuxwacom/xf86-input-wacom/issues/4
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit 7a2c6437015d9fec14915ef19dbb2b6894faaba2
+Author: Jason Gerecke <[email protected]>
+Date:   Wed Feb 24 10:43:24 2016 -0800
+
+    conf: Prevent xf86-input-wacom from binding to pure-keyboard devices
+    
+    The Wacom Bluetooth Keyboard matches the "Wacom class" and so is bound to 
the
+    xf86-input-wacom driver. This driver is not designed to work with 
keyboards,
+    so we narrow the set of devices our InputClasses will match. Because we 
need
+    to match tablets, touchpads, and touchscreens (pad devices are a special 
case
+    of tablet) but there is no way to specify an "or" match we duplicate 
existing
+    classes and assign one of the above types to each.
+    
+    Note that simply adding 'MatchIsKeyboard "false"' to our existing snippets
+    would cause devices like the Cintiq 24HDT Pad and Cintiq 27QHDT Pad from
+    binding to our driver since both are recognized as (partial) keyboards due
+    to the presence of KEY_* kernel events.
+    
+    Fixes: https://sourceforge.net/p/linuxwacom/bugs/294/
+    Fixes: https://github.com/linuxwacom/xf86-input-wacom/issues/1
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+
+commit 044e17da543493d65bd01152dcddcadbbfe5b8ee
+Author: Jason Gerecke <[email protected]>
+Date:   Fri Apr 1 11:07:54 2016 -0700
+
+    isdv4: Use last-known event position in touch up events
+    
+    Old serial ISDv4 sensors that (still?!) use the driver-internal parsing
+    routines can inadvertantly send (0,0) coordinates to X on touch up.
+    Even if a sensor sends (0,0) as the touch up coordinate, the code in
+    wcmTouchFilter.c should do the right thing by only sending motion
+    eventions while the touch is down. This isn't the case when in-driver
+    gestures are disabled though, since motion events (specifically 
XI_TouchEnd)
+    will be sent for touch up events as well.
+    
+    To prevent potential (0,0) coordinates from being emitted on touch up
+    while in-driver gestures are disabled, we use the last-known touch
+    position as the current touch position. This mirrors what is done by
+    the standard input kernel driver (which leaves X/Y at its last known
+    position on touch up).
+    
+    Fixes: https://sourceforge.net/p/linuxwacom/bugs/312/
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit 3b0c093f507cb5e99be277606de1671b77572dab
+Author: Jason Gerecke <[email protected]>
+Date:   Tue Jan 12 12:12:03 2016 -0800
+
+    xsetwacom: Use stderr for 'core' and 'displaytogle' deprecation notices
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit bccfc6faa243909538bf18af04e1308c3b9c208f
+Author: Jason Gerecke <[email protected]>
+Date:   Tue Jan 19 08:55:36 2016 -0800
+
+    xsetwacom: Only print action name for "modetoggle" and "displaytoggle"
+    
+    Running "xsetwacom get" on a button which contain a "modetoggle" or
+    "displaytoggle" action will result in output which cannot be parsed
+    by "xsetwacom set". Both of these actions are treated like buttons,
+    printing extra data that is not expected by the "set" command.
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit e1df2c330db940c96030dafcab850fc167531113
+Author: Jason Gerecke <[email protected]>
+Date:   Tue Jan 12 12:15:35 2016 -0800
+
+    xsetwacom: Remove unnecessary static state from 'get_actions'
+    
+    The 'last_type' variable within 'get_actions' stores the type of the last
+    action encountered. When dealing with "key" or "button" actions, we use
+    that information to determine if we need to print out the action prefix
+    or not (if the type hasn't changed, its safe to leave the prefix out).
+    
+    For some reason, this variable was marked as 'static', which causes it
+    to retain its value across invocations. The function is only called once
+    for any given button, meaning that we improperly retain the "last_type"
+    across buttons. If the last action on a button is of e.g. type "key" and
+    the first action of the next button is as well, then the "key" prefix
+    will be missing from the printed output of that second button's actions.
+    Making this variable non-static fixes this issue and ensures each run
+    of the function is independent.
+    
+    Fixes: http://sourceforge.net/p/linuxwacom/bugs/303/
+    Fixes: https://github.com/linuxwacom/xf86-input-wacom/issues/3
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+
+commit d9119a8c412926b97fac364d32e2bade47d2c295
+Author: Peter Hutterer <[email protected]>
+Date:   Mon Dec 7 10:23:52 2015 +1000
+
+    release.sh: use -t flag to create a sf shell
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit 8978e7010f0ee39c43a9902fbbbbbbeb20da8152
+Author: Peter Hutterer <[email protected]>
+Date:   Mon Dec 7 10:18:58 2015 +1000
+
+    release.sh: fix syntax errors
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+
 commit a626adda70bf7e514a6715ba0fe63874808ca5e0
 Author: Jason Gerecke <[email protected]>
 Date:   Mon Nov 23 15:20:02 2015 -0800
@@ -5691,7 +6156,7 @@
     "%zd" in order to avoid the format string warning at compile time:
     
     xsetwacom.c:787:2: warning: format '%d' expects argument of type 'int',
-       but argument 2 has type 'long unsigned int' [-Wformat]
+            but argument 2 has type 'long unsigned int' [-Wformat]
     
     Signed-off-by: Eduard Hasenleithner <[email protected]>
     Signed-off-by: Peter Hutterer <[email protected]>
@@ -6461,7 +6926,7 @@
     
     Conflicts:
     
-       src/wcmXCommand.c
+            src/wcmXCommand.c
     
     Reported-by: Andrzej Giniewicz <[email protected]>
     Signed-off-by: Peter Hutterer <[email protected]>
@@ -7252,7 +7717,7 @@
     
     Conflicts:
     
-       src/wcmXCommand.c
+            src/wcmXCommand.c
     
     Reported-by: Michal Suchanek <[email protected]>
     Signed-off-by: Peter Hutterer <[email protected]>
@@ -10788,10 +11253,10 @@
     The three fields (name, id and type) are separated by tab characters to 
ease
     parsing. Example output is:
     
-    Wacom Intuos4 6x9 eraser           id: 12  type: ERASER
-    Wacom Intuos4 6x9 cursor           id: 13  type: CURSOR
-    Wacom Intuos4 6x9 pad              id: 14  type: PAD
-    Wacom Intuos4 6x9 stylus           id: 15  type: STYLUS
+    Wacom Intuos4 6x9 eraser                id: 12  type: ERASER
+    Wacom Intuos4 6x9 cursor                id: 13  type: CURSOR
+    Wacom Intuos4 6x9 pad                   id: 14  type: PAD
+    Wacom Intuos4 6x9 stylus                id: 15  type: STYLUS
     
     Signed-off-by: Peter Hutterer <[email protected]>
 
@@ -13885,7 +14350,7 @@
     
     Conflicts:
     
-       src/wcmCommon.c
+            src/wcmCommon.c
     
     Signed-off-by: Peter Hutterer <[email protected]>
 
@@ -13950,7 +14415,7 @@
     
     Conflicts:
     
-       src/wcmCommon.c
+            src/wcmCommon.c
     
     Signed-off-by: Peter Hutterer <[email protected]>
     Reviewed-by: Ping Cheng <[email protected]>
@@ -14150,7 +14615,7 @@
     
     Conflicts:
     
-       src/xf86Wacom.c
+            src/xf86Wacom.c
     
     Signed-off-by: Peter Hutterer <[email protected]>
     Reviewed-by: Ping Cheng <[email protected]>
@@ -14358,8 +14823,8 @@
     Merge branch 'master' of 
git://people.freedesktop.org/~gnadon/xf86-input-wacom
     
     Conflicts:
-       configure.ac
-       man/Makefile.am
+            configure.ac
+            man/Makefile.am
 
 commit 370cd8bcce46a091da2479fdb8171b1b58a8616c
 Author: Peter Hutterer <[email protected]>
@@ -17542,7 +18007,7 @@
     Merge branch 'xsetwacom'
     
     Conflicts:
-       src/wcmXCommand.c
+            src/wcmXCommand.c
 
 commit bffe7c23591c0d1ae70e73a27fab669d4a190ade
 Author: Przemo Firszt <[email protected]>
@@ -19046,9 +19511,9 @@
     The default output for the driver loading is:
     
     (II) Module wacom: vendor="X.Org Foundation"
-       compiled for 1.6.99.901, module version = 0.9.1
-       Module class: X.Org XInput Driver
-       ABI class: X.Org XInput driver, version 7.0
+            compiled for 1.6.99.901, module version = 0.9.1
+            Module class: X.Org XInput Driver
+            ABI class: X.Org XInput driver, version 7.0
     
     where the module version is now filled in by the package version set in
     configure. An extra identification string is superfluous.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/conf/50-wacom.conf 
new/xf86-input-wacom-0.34.2/conf/50-wacom.conf
--- old/xf86-input-wacom-0.32.0/conf/50-wacom.conf      2015-10-23 
19:26:33.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/conf/50-wacom.conf      1970-01-01 
01:00:00.000000000 +0100
@@ -1,59 +0,0 @@
-Section "InputClass"
-        Identifier "Wacom USB device class"
-        MatchUSBID "056a:*"
-        MatchDevicePath "/dev/input/event*"
-        Driver "wacom"
-EndSection
-
-Section "InputClass"
-        Identifier "Wacom PnP device class"
-        MatchPnPID "WACf*|WCOM*|WACM*|FUJ02e5|FUJ02e7|FUJ02e9"
-        MatchDevicePath "/dev/input/event*"
-        Driver "wacom"
-EndSection
-
-Section "InputClass"
-       Identifier "Wacom class"
-       MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
-       MatchDevicePath "/dev/input/event*"
-       Driver "wacom"
-EndSection
-
-Section "InputClass"
-       Identifier "Wacom serial class"
-       MatchProduct "Serial Wacom Tablet"
-       Driver "wacom"
-EndSection
-
-Section "InputClass"
-        Identifier "Wacom serial class identifiers"
-        MatchProduct "WACf|FUJ02e5|FUJ02e7|FUJ02e9"
-        Driver "wacom"
-EndSection
-
-# Hanwang tablets
-Section "InputClass"
-       Identifier "Hanwang class"
-       MatchProduct "Hanwang"
-       MatchDevicePath "/dev/input/event*"
-       Driver "wacom"
-EndSection
-
-# Waltop tablets
-Section "InputClass"
-       Identifier "Waltop class"
-       MatchProduct "WALTOP"
-       MatchIsTablet "on"
-       MatchDevicePath "/dev/input/event*"
-       Driver "wacom"
-EndSection
-
-# N-Trig Duosense Electromagnetic Digitizer
-Section "InputClass"
-       Identifier "Wacom N-Trig class"
-       MatchProduct "HID 1b96:0001|N-Trig Pen|N-Trig DuoSense"
-       MatchDevicePath "/dev/input/event*"
-       Driver "wacom"
-       Option "Button2" "3"
-EndSection
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/conf/70-wacom.conf 
new/xf86-input-wacom-0.34.2/conf/70-wacom.conf
--- old/xf86-input-wacom-0.32.0/conf/70-wacom.conf      1970-01-01 
01:00:00.000000000 +0100
+++ new/xf86-input-wacom-0.34.2/conf/70-wacom.conf      2016-05-04 
23:18:43.000000000 +0200
@@ -0,0 +1,103 @@
+# Some of the below input classes appear 3x times, once for each of
+# "tablet", "touchscreen", and "touchpad" to ensure that the Wacom
+# driver is not accidentally bound to other types of hardware that
+# Wacom has made which are not handled by the wacom driver (e.g the
+# Wacom Bluetooth Keyboard)
+#
+# https://sourceforge.net/p/linuxwacom/bugs/294/
+
+Section "InputClass"
+        Identifier "Wacom USB tablet class"
+        MatchUSBID "056a:*"
+        MatchDevicePath "/dev/input/event*"
+        MatchIsTablet "true"
+        Driver "wacom"
+EndSection
+
+Section "InputClass"
+        Identifier "Wacom USB touchscreen class"
+        MatchUSBID "056a:*"
+        MatchDevicePath "/dev/input/event*"
+        MatchIsTouchscreen "true"
+        Driver "wacom"
+EndSection
+
+Section "InputClass"
+        Identifier "Wacom USB touchpad class"
+        MatchUSBID "056a:*"
+        MatchDevicePath "/dev/input/event*"
+        MatchIsTouchpad "true"
+        Driver "wacom"
+EndSection
+
+Section "InputClass"
+       Identifier "Wacom tablet class"
+       MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
+       MatchDevicePath "/dev/input/event*"
+       MatchIsTablet "true"
+       Driver "wacom"
+EndSection
+
+Section "InputClass"
+       Identifier "Wacom touchscreen class"
+       MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
+       MatchDevicePath "/dev/input/event*"
+       MatchIsTouchscreen "true"
+       Driver "wacom"
+EndSection
+
+Section "InputClass"
+       Identifier "Wacom touchpad class"
+       MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
+       MatchDevicePath "/dev/input/event*"
+       MatchIsTouchpad "true"
+       Driver "wacom"
+EndSection
+
+# Serial Wacom devices should always be one of tablet, touchscreen, or
+# touchpad so we can safely get away with just one match section in
+# these cases
+Section "InputClass"
+        Identifier "Wacom PnP device class"
+        MatchPnPID "WACf*|WCOM*|WACM*|FUJ02e5|FUJ02e7|FUJ02e9"
+        MatchDevicePath "/dev/input/event*"
+        Driver "wacom"
+EndSection
+
+Section "InputClass"
+       Identifier "Wacom serial class"
+       MatchProduct "Serial Wacom Tablet"
+       Driver "wacom"
+EndSection
+
+Section "InputClass"
+        Identifier "Wacom serial class identifiers"
+        MatchProduct "WACf|FUJ02e5|FUJ02e7|FUJ02e9"
+        Driver "wacom"
+EndSection
+
+# Hanwang tablets
+Section "InputClass"
+       Identifier "Hanwang class"
+       MatchProduct "Hanwang"
+       MatchDevicePath "/dev/input/event*"
+       Driver "wacom"
+EndSection
+
+# Waltop tablets
+Section "InputClass"
+       Identifier "Waltop class"
+       MatchProduct "WALTOP"
+       MatchIsTablet "on"
+       MatchDevicePath "/dev/input/event*"
+       Driver "wacom"
+EndSection
+
+# N-Trig Duosense Electromagnetic Digitizer
+Section "InputClass"
+       Identifier "Wacom N-Trig class"
+       MatchProduct "HID 1b96:0001|N-Trig Pen|N-Trig DuoSense"
+       MatchDevicePath "/dev/input/event*"
+       Driver "wacom"
+       Option "Button2" "3"
+EndSection
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/conf/Makefile.am 
new/xf86-input-wacom-0.34.2/conf/Makefile.am
--- old/xf86-input-wacom-0.32.0/conf/Makefile.am        2015-10-23 
19:26:33.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/conf/Makefile.am        2016-05-04 
23:18:43.000000000 +0200
@@ -1,7 +1,7 @@
 CLEANFILES=
 
 if HAS_XORG_CONF_DIR
-dist_config_DATA = 50-wacom.conf
+dist_config_DATA = 70-wacom.conf
 else
 fdidir = $(datadir)/hal/fdi/policy/20thirdparty
 dist_fdi_DATA = wacom.fdi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/configure.ac 
new/xf86-input-wacom-0.34.2/configure.ac
--- old/xf86-input-wacom-0.32.0/configure.ac    2015-11-24 00:19:40.000000000 
+0100
+++ new/xf86-input-wacom-0.34.2/configure.ac    2017-03-08 23:29:47.000000000 
+0100
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-input-wacom],
-        [0.32.0],
+        [0.34.2],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-input-wacom])
 AC_CONFIG_MACRO_DIR([m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/m4/libtool.m4 
new/xf86-input-wacom-0.34.2/m4/libtool.m4
--- old/xf86-input-wacom-0.32.0/m4/libtool.m4   2015-08-03 22:51:47.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/m4/libtool.m4   2015-11-25 06:31:45.000000000 
+0100
@@ -2867,6 +2867,9 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
+  # Add ABI-specific directories to the system library path.
+  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
+
   # Ideally, we could use ldconfig to report *all* directores which are
   # searched for libraries, however this is still not possible.  Aside from not
   # being certain /sbin/ldconfig is available, command
@@ -2875,7 +2878,7 @@
   # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 
2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < 
/etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ 
/g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/m4/ltsugar.m4 
new/xf86-input-wacom-0.34.2/m4/ltsugar.m4
--- old/xf86-input-wacom-0.32.0/m4/ltsugar.m4   2015-08-03 22:51:47.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/m4/ltsugar.m4   2015-08-06 02:45:06.000000000 
+0200
@@ -1,7 +1,6 @@
 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
 #
-# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
-# Foundation, Inc.
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
 # Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
@@ -34,7 +33,7 @@
 # ------------
 # Manipulate m4 lists.
 # These macros are necessary as long as will still need to support
-# Autoconf-2.59, which quotes differently.
+# Autoconf-2.59 which quotes differently.
 m4_define([lt_car], [[$1]])
 m4_define([lt_cdr],
 [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
@@ -45,7 +44,7 @@
 
 # lt_append(MACRO-NAME, STRING, [SEPARATOR])
 # ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
 # Note that neither SEPARATOR nor STRING are expanded; they are appended
 # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
 # No SEPARATOR is output if MACRO-NAME was previously undefined (different
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/m4/lt~obsolete.m4 
new/xf86-input-wacom-0.34.2/m4/lt~obsolete.m4
--- old/xf86-input-wacom-0.32.0/m4/lt~obsolete.m4       2015-08-03 
22:51:47.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/m4/lt~obsolete.m4       2015-08-06 
02:45:06.000000000 +0200
@@ -1,7 +1,6 @@
 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
 #
-#   Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
-#   Foundation, Inc.
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
 #   Written by Scott James Remnant, 2004.
 #
 # This file is free software; the Free Software Foundation gives
@@ -12,7 +11,7 @@
 
 # These exist entirely to fool aclocal when bootstrapping libtool.
 #
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
 # which have later been changed to m4_define as they aren't part of the
 # exported API, or moved to Autoconf or Automake where they belong.
 #
@@ -26,7 +25,7 @@
 # included after everything else.  This provides aclocal with the
 # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
 # because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
 #
 # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
 # Yes, that means every name once taken will need to remain here until
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/man/xsetwacom.man 
new/xf86-input-wacom-0.34.2/man/xsetwacom.man
--- old/xf86-input-wacom-0.32.0/man/xsetwacom.man       2015-10-23 
19:26:33.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/man/xsetwacom.man       2016-08-08 
02:06:24.000000000 +0200
@@ -109,7 +109,7 @@
 Action mappings allow button presses to perform many events. They take the form
 of a string of keywords and arguments.
 
-The "key" keyword is following by a list of key names. These can optionally
+The "key" keyword is followed by a list of key names. These can optionally
 be preceded by "+" for press and "-" for release. If +/- is not given,
 press-and-release is assumed, except for modifier keys which are left pressed.
 Key names can be X11 KeySyms or some aliases such as 'shift' or 'f1' (the
@@ -117,9 +117,16 @@
 .B list modifiers
 command).
 
-For example, "key +a +shift b -shift -a" converts the button into a series of
-keystrokes, in this example "press a, press shift, press and release b,
-release shift, release a".
+To assign a key that is not in the modifiers list, use the KeySym in
+/usr/include/X11/keysymdef.h with the XK_ prefix removed or its actual value
+as is. For example, XK_BackSpace should be specified as "BackSpace". "0xff80"
+can also be used to replace "BackSpace" since it's the unique KeySym value of
+Backspace key.
+
+Here is a combined example: "key +a shift b shift -a 0xff0d" converts the
+button into a series of keystrokes. In this example, "press a, press shift,
+press and release b, release shift, release a, then press and release enter".
+"key +a +shift b -shift -a 0xff0d" does the same thing.
 
 The "button" keyword is similar except that its arguments are X11 button
 numbers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/wcmCommon.c 
new/xf86-input-wacom-0.34.2/src/wcmCommon.c
--- old/xf86-input-wacom-0.32.0/src/wcmCommon.c 2015-10-23 19:26:33.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/src/wcmCommon.c 2016-11-18 04:35:11.000000000 
+0100
@@ -361,6 +361,7 @@
                                 int first_val, int num_vals, int *valuators)
 {
        WacomDevicePtr priv = (WacomDevicePtr) pInfo->private;
+       WacomCommonPtr common = priv->common;
        int delta = 0, idx = 0;
 
        DBG(10, priv, "\n");
@@ -396,7 +397,7 @@
        }
 
        /* emulate events for left touch ring */
-       delta = getScrollDelta(ds->abswheel, priv->oldState.abswheel, 
MAX_PAD_RING, AXIS_INVERT);
+       delta = getScrollDelta(ds->abswheel, priv->oldState.abswheel, 
common->wcmMaxRing, AXIS_INVERT);
        idx = getWheelButton(delta, WHEEL_ABS_UP, WHEEL_ABS_DN);
        if (idx >= 0 && IsPad(priv) && priv->oldState.proximity == 
ds->proximity)
        {
@@ -406,7 +407,7 @@
        }
 
        /* emulate events for right touch ring */
-       delta = getScrollDelta(ds->abswheel2, priv->oldState.abswheel2, 
MAX_PAD_RING, AXIS_INVERT);
+       delta = getScrollDelta(ds->abswheel2, priv->oldState.abswheel2, 
common->wcmMaxRing, AXIS_INVERT);
        idx = getWheelButton(delta, WHEEL2_ABS_UP, WHEEL2_ABS_DN);
        if (idx >= 0 && IsPad(priv) && priv->oldState.proximity == 
ds->proximity)
        {
@@ -853,29 +854,38 @@
 
        if (IsPad(priv)) {
                /* Pad may never be the "active" pointer controller */
+               DBG(6, priv, "Event from pad; not yielding pointer control\n.");
                return FALSE;
        }
 
        if (active == NULL || active->oldState.device_id == ds->device_id) {
-               DBG(11, priv, "Same device ID as active; allowing access.\n");
+               DBG(11, priv, "Event from active device; maintaining pointer 
control.\n");
                return TRUE;
        }
-       else if (IsCursor(active) && IsTouch(priv)) {
-               /* Cursor devices are often left idle in range, so allow touch 
to
-                * grab control if the tool has not been used for some time.
+       else if (IsCursor(active)) {
+               /* Cursor devices are often left idle in range, so allow other 
devices
+                * to grab control if the tool has not been used for some time.
                 */
-               return (ds->time - active->oldState.time > 100);
+               Bool yield = (ds->time - active->oldState.time > 100) && 
(active->oldState.buttons == 0);
+               DBG(6, priv, "Currently-active cursor %s idle; %s pointer 
control.\n",
+                   yield ? "is" : "is not", yield ? "yielding" : "not 
yielding");
+               return yield;
        }
-       else if (IsTouch(active) && IsCursor(priv)) {
+       else if (IsCursor(priv)) {
                /* An otherwise idle cursor may still occasionally jitter and 
send
-                * events while the user is making active touches. Do not allow
-                * the cursor to grab control in this particular case.
+                * events while the user is actively using other tools or 
touching
+                * the device. Do not allow the cursor to grab control in this
+                * particular case.
                 */
+               DBG(6, priv, "Event from non-active cursor; not yielding 
pointer control.\n");
                return FALSE;
        }
        else {
                /* Non-touch input has priority over touch in general */
-               return !IsTouch(priv);
+               Bool yield = !IsTouch(priv);
+               DBG(6, priv, "Event from non-active %s device; %s pointer 
control.\n",
+                   yield ? "non-touch" : "touch", yield ? "yielding" : "not 
yielding");
+               return yield;
        }
 }
 
@@ -1186,7 +1196,7 @@
        if (priv->serial && filtered.serial_num != priv->serial)
        {
                DBG(10, priv, "serial number"
-                       " is %u but your system configured %u",
+                       " is %u but your system configured %u\n",
                        filtered.serial_num, priv->serial);
                return;
        }
@@ -1394,7 +1404,10 @@
        p = min(FILTER_PRESSURE_RES, p);
 
        /* apply pressure curve function */
-       return pDev->pPressCurve[p];
+       if (pDev->pPressCurve == NULL)
+               return p;
+       else
+               return pDev->pPressCurve[p];
 }
 
 /*****************************************************************************
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/wcmConfig.c 
new/xf86-input-wacom-0.34.2/src/wcmConfig.c
--- old/xf86-input-wacom-0.32.0/src/wcmConfig.c 2015-10-23 19:26:33.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/src/wcmConfig.c 2017-02-12 22:26:06.000000000 
+0100
@@ -320,10 +320,19 @@
        {
                *a = '\0';
                b = strrchr(name, ' ');
-               if (b && (!strcmp(b, " Pen") || !strcmp(b, " Finger") || 
!strcmp(b, " Pad")))
+
+               while (b)
                {
-                       *b = '\0';
-                       strncat(subdevice, b+1, len-1);
+                       if (!strcmp(b, " Pen") || !strcmp(b, " Finger") ||
+                           !strcmp(b, " Pad") || !strcmp(b, " Touch"))
+                       {
+                               *b = '\0';
+                               strncpy(subdevice, b+1, len-1);
+                               subdevice[len-1] = '\0';
+                               b = strrchr(name, ' ');
+                       }
+                       else
+                               b = NULL;
                }
                strncat(tool, a+1, len-1);
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/wcmFilter.c 
new/xf86-input-wacom-0.34.2/src/wcmFilter.c
--- old/xf86-input-wacom-0.32.0/src/wcmFilter.c 2015-04-24 17:12:03.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/src/wcmFilter.c 2017-03-08 03:31:05.000000000 
+0100
@@ -54,23 +54,35 @@
 void wcmSetPressureCurve(WacomDevicePtr pDev, int x0, int y0,
        int x1, int y1)
 {
-       int i;
-
        /* sanity check values */
        if (!wcmCheckPressureCurveValues(x0, y0, x1, y1))
                return;
 
-       /* linear by default */
-       for (i=0; i<=FILTER_PRESSURE_RES; ++i)
-               pDev->pPressCurve[i] = i;
+       /* A NULL pPressCurve indicates the (default) linear curve */
+       if (x0 == 0 && y0 == 0 && x1 == 100 && y1 == 100) {
+               free(pDev->pPressCurve);
+               pDev->pPressCurve = NULL;
+       }
+       else if (!pDev->pPressCurve) {
+               pDev->pPressCurve = calloc(FILTER_PRESSURE_RES+1, 
sizeof(*pDev->pPressCurve));
+
+               if (!pDev->pPressCurve) {
+                       LogMessageVerbSigSafe(X_WARNING, 0,
+                                             "Unable to allocate memory for 
pressure curve; using default.\n");
+                       x0 = 0;
+                       y0 = 0;
+                       x1 = 100;
+                       y1 = 100;
+               }
+       }
 
-       /* draw bezier line from bottom-left to top-right using ctrl points */
-       filterCurveToLine(pDev->pPressCurve,
-               FILTER_PRESSURE_RES,
-               0.0, 0.0,               /* bottom left  */
-               x0/100.0, y0/100.0,     /* control point 1 */
-               x1/100.0, y1/100.0,     /* control point 2 */
-               1.0, 1.0);              /* top right */
+       if (pDev->pPressCurve)
+               filterCurveToLine(pDev->pPressCurve,
+                               FILTER_PRESSURE_RES,
+                               0.0, 0.0,               /* bottom left  */
+                               x0/100.0, y0/100.0,     /* control point 1 */
+                               x1/100.0, y1/100.0,     /* control point 2 */
+                               1.0, 1.0);              /* top right */
 
        pDev->nPressCtrl[0] = x0;
        pDev->nPressCtrl[1] = y0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/wcmISDV4.c 
new/xf86-input-wacom-0.34.2/src/wcmISDV4.c
--- old/xf86-input-wacom-0.32.0/src/wcmISDV4.c  2015-10-23 19:26:33.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/src/wcmISDV4.c  2016-04-26 02:18:52.000000000 
+0200
@@ -625,8 +625,8 @@
                return -1;
        }
 
-       ds->x = touchdata.x;
-       ds->y = touchdata.y;
+       ds->x = touchdata.status ? touchdata.x : last->x;
+       ds->y = touchdata.status ? touchdata.y : last->y;
        ds->proximity = touchdata.status;
        ds->device_type = TOUCH_ID;
        ds->device_id = TOUCH_DEVICE_ID;
@@ -651,8 +651,8 @@
                        channel = 1;
                        ds = &common->wcmChannel[channel].work;
                        RESET_RELATIVE(*ds);
-                       ds->x = touchdata.finger2.x;
-                       ds->y = touchdata.finger2.y;
+                       ds->x = touchdata.finger2.status ? touchdata.finger2.x 
: lastTemp->x;
+                       ds->y = touchdata.finger2.status ? touchdata.finger2.y 
: lastTemp->y;
                        ds->device_type = TOUCH_ID;
                        ds->device_id = TOUCH_DEVICE_ID;
                        ds->serial_num = 2;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/wcmUSB.c 
new/xf86-input-wacom-0.34.2/src/wcmUSB.c
--- old/xf86-input-wacom-0.32.0/src/wcmUSB.c    2015-10-23 19:26:33.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/src/wcmUSB.c    2016-11-18 04:35:11.000000000 
+0100
@@ -652,6 +652,16 @@
                        common->wcmMaxStripX = absinfo.maximum;
        }
 
+       /* max touchring value for standalone pad tools */
+       common->wcmMinRing = 0;
+       common->wcmMaxRing = 71;
+       if (!ISBITSET(ev,EV_MSC) && ISBITSET(abs, ABS_WHEEL) &&
+                       !ioctl(pInfo->fd, EVIOCGABS(ABS_WHEEL), &absinfo))
+       {
+               common->wcmMinRing = absinfo.minimum;
+               common->wcmMaxRing = absinfo.maximum;
+       }
+
        /* X tilt range */
        if (ISBITSET(abs, ABS_TILT_X) &&
                        !ioctl(pInfo->fd, EVIOCGABS(ABS_TILT_X), &absinfo))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/wcmValidateDevice.c 
new/xf86-input-wacom-0.34.2/src/wcmValidateDevice.c
--- old/xf86-input-wacom-0.32.0/src/wcmValidateDevice.c 2015-10-23 
19:26:33.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/src/wcmValidateDevice.c 2016-08-11 
06:10:17.000000000 +0200
@@ -498,11 +498,19 @@
        WacomHotplugInfo *hotplug_info = closure;
        DeviceIntPtr dev; /* dummy */
 
+#if HAVE_THREADED_INPUT
+       input_lock();
+#endif
+
        NewInputDeviceRequest(hotplug_info->input_options,
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 9
                              hotplug_info->attrs,
 #endif
                              &dev);
+#if HAVE_THREADED_INPUT
+       input_unlock();
+#endif
+
        input_option_free_list(&hotplug_info->input_options);
 
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/wcmXCommand.c 
new/xf86-input-wacom-0.34.2/src/wcmXCommand.c
--- old/xf86-input-wacom-0.32.0/src/wcmXCommand.c       2015-10-23 
19:26:33.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/src/wcmXCommand.c       2017-03-01 
05:35:13.000000000 +0100
@@ -104,6 +104,26 @@
 #endif
 
 /**
+ * Calculate a user-visible pressure level from a driver-internal pressure
+ * level. Pressure settings exposed to the user assume a range of 0-2047
+ * while the driver scales everything to a range of 0-FILTER_PRESSURE_RES.
+ */
+static inline int wcmInternalToUserPressure(int pressure)
+{
+       return pressure / (FILTER_PRESSURE_RES / 2048);
+}
+
+/**
+ * Calculate a driver-internal pressure level from a user-visible pressure
+ * level. Pressure settings exposed to the user assume a range of 0-2047
+ * while the driver scales everything to a range of 0-FILTER_PRESSURE_RES.
+ */
+static inline int wcmUserToInternalPressure(int pressure)
+{
+       return pressure * (FILTER_PRESSURE_RES / 2048);
+}
+
+/**
  * Resets an arbitrary Action property, given a pointer to the old
  * handler and information about the new Action.
  */
@@ -256,6 +276,7 @@
        }
 
        values[0] = (!common->wcmMaxZ) ? 0 : common->wcmThreshold;
+       values[0] = wcmInternalToUserPressure(values[0]);
        prop_threshold = InitWcmAtom(pInfo->dev, WACOM_PROP_PRESSURE_THRESHOLD, 
XA_INTEGER, 32, 1, values);
 
        values[0] = common->wcmSuppress;
@@ -612,33 +633,42 @@
        }
 }
 
-static CARD32
-touchTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg)
+static void
+wcmSetHWTouchProperty(InputInfoPtr pInfo)
 {
-       InputInfoPtr pInfo = arg;
        WacomDevicePtr priv = pInfo->private;
        WacomCommonPtr common = priv->common;
        XIPropertyValuePtr prop;
        CARD8 prop_value;
-       int sigstate;
        int rc;
 
-       sigstate = xf86BlockSIGIO();
-
        rc = XIGetDeviceProperty(pInfo->dev, prop_hardware_touch, &prop);
        if (rc != Success || prop->format != 8 || prop->size != 1)
        {
                xf86Msg(X_ERROR, "%s: Failed to update hardware touch state.\n",
                        pInfo->name);
-               return 0;
+               return;
        }
 
        prop_value = common->wcmHWTouchSwitchState;
        XIChangeDeviceProperty(pInfo->dev, prop_hardware_touch, XA_INTEGER,
                               prop->format, PropModeReplace,
                               prop->size, &prop_value, TRUE);
+}
+
+static CARD32
+touchTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg)
+{
+       InputInfoPtr pInfo = arg;
+#if !HAVE_THREADED_INPUT
+       int sigstate = xf86BlockSIGIO();
+#endif
+
+       wcmSetHWTouchProperty(pInfo);
 
+#if !HAVE_THREADED_INPUT
        xf86UnblockSIGIO(sigstate);
+#endif
 
        return 0;
 }
@@ -656,8 +686,8 @@
 
        common->wcmHWTouchSwitchState = hw_touch;
 
-       /* This function is called during SIGIO. Schedule timer for property
-        * event delivery outside of signal handler. */
+       /* This function is called during SIGIO/InputThread. Schedule timer
+        * for property event delivery by the main thread. */
        priv->touch_timer = TimerSet(priv->touch_timer, 0 /* reltime */,
                                      1, touchTimerFunc, priv->pInfo);
 }
@@ -816,6 +846,7 @@
                        common->wcmCursorProxoutDist = value;
        } else if (property == prop_threshold)
        {
+               const INT32 MAXIMUM = 
wcmInternalToUserPressure(FILTER_PRESSURE_RES);
                INT32 value;
 
                if (prop->size != 1 || prop->format != 32)
@@ -825,8 +856,10 @@
 
                if (value == -1)
                        value = DEFAULT_THRESHOLD;
-               else if ((value < 1) || (value > FILTER_PRESSURE_RES))
+               else if ((value < 1) || (value > MAXIMUM))
                        return BadValue;
+               else
+                       value = wcmUserToInternalPressure(value);
 
                if (!checkonly)
                        common->wcmThreshold = value;
@@ -1014,24 +1047,20 @@
        return Success;
 }
 
-static CARD32
-serialTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg)
+static void
+wcmSetSerialProperty(InputInfoPtr pInfo)
 {
-       InputInfoPtr pInfo = arg;
        WacomDevicePtr priv = pInfo->private;
        XIPropertyValuePtr prop;
        CARD32 prop_value[5];
-       int sigstate;
        int rc;
 
-       sigstate = xf86BlockSIGIO();
-
        rc = XIGetDeviceProperty(pInfo->dev, prop_serials, &prop);
        if (rc != Success || prop->format != 32 || prop->size != 5)
        {
                xf86Msg(X_ERROR, "%s: Failed to update serial number.\n",
                        pInfo->name);
-               return 0;
+               return;
        }
 
        memcpy(prop_value, prop->data, sizeof(prop_value));
@@ -1041,8 +1070,22 @@
        XIChangeDeviceProperty(pInfo->dev, prop_serials, XA_INTEGER,
                               prop->format, PropModeReplace,
                               prop->size, prop_value, TRUE);
+}
+
+static CARD32
+serialTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg)
+{
+       InputInfoPtr pInfo = arg;
+
+#if !HAVE_THREADED_INPUT
+       int sigstate = xf86BlockSIGIO();
+#endif
 
+       wcmSetSerialProperty(pInfo);
+
+#if !HAVE_THREADED_INPUT
        xf86UnblockSIGIO(sigstate);
+#endif
 
        return 0;
 }
@@ -1058,8 +1101,8 @@
        priv->cur_serial = serial;
        priv->cur_device_id = id;
 
-       /* This function is called during SIGIO. Schedule timer for property
-        * event delivery outside of signal handler. */
+       /* This function is called during SIGIO/InputThread. Schedule timer
+        * for property event delivery by the main thread. */
        priv->serial_timer = TimerSet(priv->serial_timer, 0 /* reltime */,
                                      1, serialTimerFunc, pInfo);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/xf86Wacom.c 
new/xf86-input-wacom-0.34.2/src/xf86Wacom.c
--- old/xf86-input-wacom-0.32.0/src/xf86Wacom.c 2015-10-23 19:26:33.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/src/xf86Wacom.c 2017-02-24 05:04:55.000000000 
+0100
@@ -282,8 +282,8 @@
        {
                /* Touch ring */
                label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_WHEEL);
-               min = MIN_PAD_RING;
-               max = MAX_PAD_RING;
+               min = common->wcmMinRing;
+               max = common->wcmMaxRing;
        }
 
        wcmInitAxis(pInfo->dev, index, label, min, max, res, min_res, max_res, 
mode);
@@ -298,8 +298,8 @@
                mode = Absolute;
                min_res = max_res = res = 1;
 
-               min = MIN_PAD_RING;
-               max = MAX_PAD_RING;
+               min = common->wcmMinRing;
+               max = common->wcmMaxRing;
 
                wcmInitAxis(pInfo->dev, index, label, min, max, res, min_res, 
max_res, mode);
        }
@@ -854,7 +854,9 @@
                        break;
 
                case DEVICE_OFF:
-               case DEVICE_CLOSE:
+                       TimerCancel(priv->tap_timer);
+                       TimerCancel(priv->serial_timer);
+                       TimerCancel(priv->touch_timer);
                        wcmDisableTool(pWcm);
                        wcmUnlinkTouchAndPen(pInfo);
                        if (pInfo->fd >= 0)
@@ -864,6 +866,8 @@
                        }
                        pWcm->public.on = FALSE;
                        break;
+               case DEVICE_CLOSE:
+                       break;
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) * 100 + 
GET_ABI_MINOR(ABI_XINPUT_VERSION) >= 1901
                case DEVICE_ABORT:
                        break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/xf86Wacom.h 
new/xf86-input-wacom-0.34.2/src/xf86Wacom.h
--- old/xf86-input-wacom-0.32.0/src/xf86Wacom.h 2015-10-23 19:26:33.000000000 
+0200
+++ new/xf86-input-wacom-0.34.2/src/xf86Wacom.h 2016-08-11 06:09:45.000000000 
+0200
@@ -40,6 +40,10 @@
 #define LogMessageVerbSigSafe xf86MsgVerb
 #endif
 
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 23
+#define HAVE_THREADED_INPUT 1
+#endif
+
 #ifndef SW_MUTE_DEVICE
 #define SW_MUTE_DEVICE 0x0e
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/src/xf86WacomDefs.h 
new/xf86-input-wacom-0.34.2/src/xf86WacomDefs.h
--- old/xf86-input-wacom-0.32.0/src/xf86WacomDefs.h     2015-10-23 
19:26:33.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/src/xf86WacomDefs.h     2016-11-18 
04:35:11.000000000 +0100
@@ -48,9 +48,6 @@
 #define TILT_MIN -64           /* Minimum reported tilt value */
 #define TILT_MAX 63            /* Maximum reported tilt value */
 
-#define MIN_PAD_RING 0         /* I4 absolute scroll ring min value */
-#define MAX_PAD_RING 71                /* I4 absolute scroll ring max value */
-
 /* I4 cursor tool has a rotation offset of 175 degrees */
 #define INTUOS4_CURSOR_ROTATION_OFFSET 175
 
@@ -183,7 +180,7 @@
 
 #define IsUSBDevice(common) ((common)->wcmDevCls == &gWacomUSBDevice)
 
-#define FILTER_PRESSURE_RES    2048    /* maximum points in pressure curve */
+#define FILTER_PRESSURE_RES    65536   /* maximum points in pressure curve */
 /* Tested result for setting the pressure threshold to a reasonable value */
 #define THRESHOLD_TOLERANCE (FILTER_PRESSURE_RES / 125)
 #define DEFAULT_THRESHOLD (FILTER_PRESSURE_RES / 75)
@@ -235,8 +232,8 @@
 };
 
 static const struct _WacomDeviceState OUTPROX_STATE = {
-  .abswheel = MAX_PAD_RING + 1,
-  .abswheel2 = MAX_PAD_RING + 1
+  .abswheel = INT_MAX,
+  .abswheel2 = INT_MAX
 };
 
 struct _WacomDeviceRec
@@ -288,8 +285,7 @@
        struct _WacomDeviceState oldState; /* previous state information */
        int oldCursorHwProx;    /* previous cursor hardware proximity */
 
-       /* JEJ - filters */
-       int pPressCurve[FILTER_PRESSURE_RES + 1]; /* pressure curve */
+       int *pPressCurve;       /* pressure curve */
        int nPressCtrl[4];      /* control points for curve */
        int minPressure;        /* the minimum pressure a pen may hold */
        int oldMinPressure;     /* to record the last minPressure before going 
out of proximity */
@@ -436,6 +432,8 @@
 
        int wcmMaxStripX;            /* Maximum fingerstrip X */
        int wcmMaxStripY;            /* Maximum fingerstrip Y */
+       int wcmMinRing;              /* Minimum touchring value */
+       int wcmMaxRing;              /* Maximum touchring value */
 
        WacomDevicePtr wcmDevices;   /* list of devices sharing same port */
        int wcmPktLength;            /* length of a packet */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/test/fake-symbols.c 
new/xf86-input-wacom-0.34.2/test/fake-symbols.c
--- old/xf86-input-wacom-0.32.0/test/fake-symbols.c     2015-10-23 
19:26:33.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/test/fake-symbols.c     2017-03-08 
23:29:35.000000000 +0100
@@ -493,6 +493,11 @@
 {
 }
 
+void TimerCancel(OsTimerPtr timer)
+{
+}
+
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 24
 int
 xf86BlockSIGIO (void)
 {
@@ -503,6 +508,15 @@
 xf86UnblockSIGIO (int wasset)
 {
 }
+#else
+void input_lock (void)
+{
+}
+
+void input_unlock (void)
+{
+}
+#endif
 
 /* This is not the same as the X server one, but it'll do for the tests */
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 14
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.32.0/tools/xsetwacom.c 
new/xf86-input-wacom-0.34.2/tools/xsetwacom.c
--- old/xf86-input-wacom-0.32.0/tools/xsetwacom.c       2015-10-23 
19:26:33.000000000 +0200
+++ new/xf86-input-wacom-0.34.2/tools/xsetwacom.c       2016-08-08 
02:06:24.000000000 +0200
@@ -605,6 +605,8 @@
 
        {"backspace", "BackSpace"}, {"Backspace", "BackSpace"},
 
+       {"return", "Return"},
+
        {"tab", "Tab"},
 
        {"PgUp", "Prior"}, {"PgDn", "Next"},
@@ -937,6 +939,9 @@
        m = specialkeys;
        while(m->name)
                printf("        %s\n", m++->name);
+
+       printf("Keys not listed above can be specified via their KeySyms."
+               " See the man page for details.\n");
 }
 
 static void list(Display *dpy, int argc, char **argv)
@@ -1026,7 +1031,7 @@
        static int once_only = 1;
        if (once_only)
        {
-               printf ("Note: The \"core\" keyword is not supported anymore 
and "
+               fprintf(stderr, "Note: The \"core\" keyword is not supported 
anymore and "
                        "will be ignored.\n");
                once_only = 0;
        }
@@ -1053,7 +1058,7 @@
        static int once_only = 1;
        if (once_only)
        {
-               printf ("Note: The \"displaytoggle\" keyword is not supported "
+               fprintf(stderr, "Note: The \"displaytoggle\" keyword is not 
supported "
                        "anymore and will be ignored.\n");
                once_only = 0;
        }
@@ -1951,6 +1956,7 @@
        unsigned long nitems, bytes_after, *data;
        int i;
        char buff[1024] = {0};
+       int last_type;
 
        prop = XInternAtom(dpy, param->prop_name, True);
 
@@ -1979,9 +1985,9 @@
                   AnyPropertyType, &type, &format, &nitems,
                   &bytes_after, (unsigned char**)&data);
 
+       last_type = 0;
        for (i = 0; i < nitems; i++)
        {
-               static int last_type;
                unsigned long action = data[i];
                int current_type;
                int detail;
@@ -2021,7 +2027,7 @@
                if (current_type == AC_KEY)
                        sprintf(str, "%c%s ", press_str,
                                XKeysymToString(detail));
-               else
+               else if (current_type == AC_BUTTON)
                        sprintf(str, "%c%d ", press_str, detail);
                strcat(buff, str);
                last_type = current_type;


Reply via email to