commit b16b68a9302ce19226d78eed0e1fcb530f372506
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri May 13 15:32:27 2016 -0700

    wacom 0.33.0
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit f4763d1985330bb966908113bf3bd0b55d68372c
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Wed May 4 09:26:58 2016 -0700

    wacom 0.32.99.1
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 0da5cd545e38079b62656a23835c4943af05dc92
Author: Jason Gerecke <killertofu@gmail.com>
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 <jason.gerecke@wacom.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 7a2c6437015d9fec14915ef19dbb2b6894faaba2
Author: Jason Gerecke <killertofu@gmail.com>
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 <jason.gerecke@wacom.com>

commit 044e17da543493d65bd01152dcddcadbbfe5b8ee
Author: Jason Gerecke <killertofu@gmail.com>
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 <jason.gerecke@wacom.com>
    Reviewed-by: Ping Cheng <pinglinux@gmail.com>

commit 3b0c093f507cb5e99be277606de1671b77572dab
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Jan 12 12:12:03 2016 -0800

    xsetwacom: Use stderr for 'core' and 'displaytogle' deprecation notices
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit bccfc6faa243909538bf18af04e1308c3b9c208f
Author: Jason Gerecke <killertofu@gmail.com>
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 <jason.gerecke@wacom.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit e1df2c330db940c96030dafcab850fc167531113
Author: Jason Gerecke <killertofu@gmail.com>
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 <jason.gerecke@wacom.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit d9119a8c412926b97fac364d32e2bade47d2c295
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Dec 7 10:23:52 2015 +1000

    release.sh: use -t flag to create a sf shell
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 8978e7010f0ee39c43a9902fbbbbbbeb20da8152
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Dec 7 10:18:58 2015 +1000

    release.sh: fix syntax errors
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit a626adda70bf7e514a6715ba0fe63874808ca5e0
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Nov 23 15:20:02 2015 -0800

    wacom 0.32.0
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 380a443fb7ee96e6a7fe13405a3c8d9682b729c6
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Sep 1 13:56:29 2015 -0700

    Streamline Sourceforge login for release.sh
    
    There's no particular reason that I see for us needing to enact a 30
    second sleep anymore, nor do we have to allocate a pseudo-TTY that
    the user then has to manually exit from. Creating a non-interactive
    session without sleep seems to work fine now.
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 9e216247b549f95c0511b5b3243e1527cabcb161
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Aug 13 10:32:05 2015 -0700

    Don't rely on IsPad() when trying to undo kernel event filtering
    
    Commit e9f95de fixed an issue where the pointer would jump around if the
    kernel's duplicate event filtering had removed the X or Y position from
    the initial "entering proximity" packet. The fix involved requesting the
    current axis value from the kernel, but only if we weren't dealing with
    the pad (since the pad never sends position data, and may not even have
    those axes). Unfortunately, the check used 'IsPad(priv)', which may
    return incorrect results at this point in the program flow.* This can
    cause the pointer jumps to occur anyway if the driver (incorrectly)
    believes the events to be coming from the pad as described in bug #286.
    
    To fix this, the check is changed to rely on 'ds->device_type' which
    provides accurate information.
    
    *It appears that the 'pInfo' passed into 'usbDispatchEvents' may be of
    any X device that shares the same underlying kernel device. It is not
    until later in 'wcmEvent' that we use 'findTool' to find the appropriate
    device based on the 'ds->device_type'.
    
    http://sourceforge.net/p/linuxwacom/bugs/286/
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 4c17c6a0dd224b66379c52ea8b24ab961b908aa0
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Aug 6 11:59:39 2015 -0700

    Update release.sh script from Xorg
    
    The latest-and-greatest copy of release.sh from Xorg now replaces our
    current version of the script which largely dates back to 2010. This
    script brings several new features along with it, with stronger checks
    and PGP signing probably being the two worth noting.
    
    A very small number of modifications to the upstream version of this
    script (commit 65cb27b) have been made to support this project. The only
    one of note is a change to 'generate_announce' which changes it to
    use the 'Reply-To' header instead of 'Cc' (since the announce list will
    bounce unauthorized messages back).
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Acked-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 31d779debc5b624278c7dc1768168c54e790b4ec
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Aug 17 17:47:06 2015 -0700

    wacom 0.31.0
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit e566a1909329955c44de3e65449cb6485362bb73
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Aug 10 12:34:20 2015 -0700

    wacom 0.30.99.1
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 4893844f3f4b417ae38af4dfc49f35d7fbac41b2
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Jul 28 17:40:00 2015 -0700

    Modify wcmMaxCursorDist calculation to support non-inverted protocol 4
    
    Distance values reported by the puck tool on protocol 4 tablets (e.g.
    the Graphire4) have an inverted scale compared to other devices and
    tools. That is to say, the values are at their maximum while the puck
    is resting on the tablet and minimum just prior to going out of prox.
    The way that xf86-input-wacom handles this is with explicit protocol
    version checks, which limits our ability to fix this issue going
    forward (when libinput/Wayland begin to rule the desktop).
    
    This patch changes how the driver calculates wcmMaxCursorDist so that
    it is able to gracefully handle the day we fix this kernel bug.
    Instead of storing the minimum/maximum value ever seen on the tablet
    (switching between codepaths based on protocol 5/4) we store the value
    that is seen whenever the user clicks a button. It is reasonably safe
    to assume that this occurs with the puck on the tablet and thus will
    be the correct value. Even if the user happens to click with the puck
    raised above the surface, a subsuqent click *on* the surface will
    reset the value.
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 0173f52dadc7f60019a594ff9d5503605f9a4134
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Jun 29 10:23:31 2015 -0700

    xsetwacom: Fix regression in simple button mapping
    
    Commit 273ecfe introduces a bug where simple button mappings (e.g.
    "set <id> button 2 3") ignore the final argument and always use '1'
    instead. This us because the variable that we sscanf the button
    number into is subsuquently reused as a loop control variable before
    being sprintf'd out.
    
    http://sourceforge.net/p/linuxwacom/mailman/message/34246572/
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 69ddccf81c67191026612bad45a0a4192a55e1d2
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Jun 9 18:06:04 2015 -0700

    wacom 0.30.0
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 8b76a75a0475d0dada34acb86d0c91b4bc12e4b5
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri May 29 16:59:30 2015 -0700

    wacom 0.29.99.1
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit c14e9b485d2690245ba347879d2dd9fec9e7030f
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri Apr 24 09:16:59 2015 -0700

    xsetwacom: Fix 'get_mapped_area' ("maptooutput next") on 64-bit
    
    Using the "maptooutput next" command fails on 64-bit systems,
    with results ranging from always mapping the pointer to the
    first head to displaying errors about the transformation matrix
    being non-rectangular.
    
    This is a result of the 'get_mapped_area' function expecting
    32-bit properties returned by the server to take up only 4
    bytes of memory. This is the case on 32-bit systems, but not
    on 64-bit ones. This was partially addressed in bc5fd9e, but
    not here.
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 273ecfeccfceb2c2a92cfb4e26078c11a3454396
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Apr 27 11:21:32 2015 -0700

    asan: xsetwacom: Cleanup xsetwacom memory leaks
    
    Address several leaks present in the code, as well as two uses of 'free' where
    'XFree' should have been used instead.
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit af3869e5bda2e2f0a8f0203d11096406cf8cea6b
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Apr 27 10:01:36 2015 -0700

    ubsan: Use 'unsigned int' for button mask in 'wcmSendButtons'
    
    ../src/wcmCommon.c:137:12: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
    SUMMARY: AddressSanitizer: undefined-behavior ../src/wcmCommon.c:137
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit d9ed47b1b200e1d6a89d11be75ee6346eb2229be
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Apr 27 09:28:31 2015 -0700

    ubsan: Prevent out-of-bounds array write
    
    ../src/wcmCommon.c:709:2: runtime error: index 6 out of bounds for type 'int [priv->naxes]'
    SUMMARY: AddressSanitizer: undefined-behavior ../src/wcmCommon.c:709
    
    The 'valuators' array is dynamically sized based on how many axes the
    device has (typically 6, but possibly 7 if the WCM_DUALRING feature is
    set). Unfortunately, we don't pay attention to how many axes actually
    exist when filling the array and end up writing one 'int' worth of
    data past the end in most circumstances.
    
    This appears to have not triggered any issues in the past simply because
    with a typical stack layout, the code as written (valuators[6] = v6)
    won't do anything (since &valuators[6] == &v6). Even stil...
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 423735fc0eee0206d65ee974b019fa0ea2090572
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Apr 27 09:15:09 2015 -0700

    ubsan: Fix alignment issues
    
    Memcpy the data from wherever it is in memory to a 'struct input_event'
    that is living on the stack with proper alignment. Fixes the following
    complaints from Clang's undefined sanitizer:
    
    ../src/wcmUSB.c:966:13: runtime error: member access within misaligned address 0x62e00008e494 for type 'const struct input_event', which requires 8 byte alignment
    0x62e00008e494: note: pointer points here
      78 00 00 00 db 5b 3e 55  00 00 00 00 d9 d7 03 00  00 00 00 00 03 00 00 00  e9 09 00 00 db 5b 3e 55
                  ^
    SUMMARY: AddressSanitizer: undefined-behavior ../src/wcmUSB.c:966
    ../src/wcmUSB.c:966:38: runtime error: member access within misaligned address 0x62e00008e494 for type 'const struct input_event', which requires 8 byte alignment
    0x62e00008e494: note: pointer points here
      78 00 00 00 db 5b 3e 55  00 00 00 00 d9 d7 03 00  00 00 00 00 03 00 00 00  e9 09 00 00 db 5b 3e 55
                  ^
    SUMMARY: AddressSanitizer: undefined-behavior ../src/wcmUSB.c:966
    ../src/wcmUSB.c:983:14: runtime error: member access within misaligned address 0x62e00008e4f4 for type 'const struct input_event', which requires 8 byte alignment
    0x62e00008e4f4: note: pointer points here
      01 00 00 00 db 5b 3e 55  00 00 00 00 d9 d7 03 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
                  ^
    SUMMARY: AddressSanitizer: undefined-behavior ../src/wcmUSB.c:983
    ../src/wcmUSB.c:1000:21: runtime error: member access within misaligned address 0x62e00008e4f4 for type 'const struct input_event', which requires 8 byte alignment
    0x62e00008e4f4: note: pointer points here
      01 00 00 00 db 5b 3e 55  00 00 00 00 d9 d7 03 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
                  ^
    SUMMARY: AddressSanitizer: undefined-behavior ../src/wcmUSB.c:1000
    ../src/wcmUSB.c:1000:48: runtime error: member access within misaligned address 0x62e00008e4f4 for type 'const struct input_event', which requires 8 byte alignment
    0x62e00008e4f4: note: pointer points here
      01 00 00 00 db 5b 3e 55  00 00 00 00 d9 d7 03 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
                  ^
    SUMMARY: AddressSanitizer: undefined-behavior ../src/wcmUSB.c:1000
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit d95dfe6ecd9e90f81bc133a561fa6336ac58170d
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Apr 9 16:31:57 2015 -0700

    afl: xsetwacom: Check that argc is in range before dereferencing argv
    
    These functions access argv[0] before checking that argc is at least
    1. In the interest of correctness, swap it around so that the check
    occurs before the dereference.
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit c7db2dab7bc803ee84bfec1d8a90e1e608b6cb09
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Apr 9 16:30:01 2015 -0700

    afl: xsetwacom: Do not allow negative button numbers
    
    Currently its possible to provide a negative (or zero) button number
    on the commandline, which will be dutifully translated into a negative
    offset. Detect this and throw an error if encountered.
    
    Signed-off-by: Jason Gerecke <jason.jgerecke@wacom.com>

commit 162cf8d54e8858b8c1cbc96c49f4ffa73716b7e8
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Apr 9 16:35:36 2015 -0700

    xsetwacom: Add ability to read args from stdin for fuzzing
    
    Add a new "--enable-fuzz-interface" configuration option which will
    cause xsetwacom to read NUL-separated arguments from stdin (for
    example: `echo -en 'list\0devices' | xsetwacom`). This makes it
    easier to plug into fuzzing software for debugging.
    
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 4416168933e058cee6a5e0df803c9c822f8fa63d
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Fri Mar 13 11:24:27 2015 -0400

    Allow PAD only interfaces without EV_ABS and/or EV_X/Y to report events
    
    commit 0cfe113 (Allow PAD only interface without setting up EV_ABS
    and/or EV_X/Y) allows xf86-input-wacom to handle Pad only interface but
    such interface do not report any events.
    
    We need to call usbWcmInitPadState() to be able to forward events.
    
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Ping Cheng <pingc@wacom.com>

commit 50fcf5eb5062a552959861453ece65a097bfe9f4
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Mar 12 10:26:28 2015 +1000

    Coverity: remove dead code
    
    Two lines above we assign nbbuttons = min(7, MAXBUTTONS), the latter of which
    is 32.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jason Gerecke <killertofu@gmail.com>

commit d4a12274138829e79003d8bae597d6feec0b3680
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Mar 12 10:11:49 2015 +1000

    tools: make baudrate unsigned int to shut up compiler
    
    Supplying a negative baudrate will now be implicitly converted to the unsigned
    int equivalent. So don't do that.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jason Gerecke <killertofu@gmail.com>

commit 19c116f6e410c42f68fd67841f3c73276045cde6
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Mar 12 10:00:20 2015 +1000

    Coverity: silence "ioctl return value not checked" warnings
    
    Move two ioctls up so that if they fail we don't have to clean up an alloc.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jason Gerecke <killertofu@gmail.com>

commit 13edd12f9c28b6be9c0cda3874081da1dd78132a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Mar 11 12:14:00 2015 +1000

    Coverity: fix potential negative array subscript
    
    isdv4ParseTouchPacket and usbChooseChannel return -1 on error
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jason Gerecke <killertofu@gmail.com>

commit 1c068af8ebe42461095367ce5c6a03cbc8b33e6c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Mar 11 12:08:22 2015 +1000

    Coverity: fix coverity complaints about unchecked return values
    
    The fread() result is now always terminated with \0. Don't think that's ever
    hit but it gives us a good reason to use the return value so we don't get more
    complaints.
    
    Interestingly, a (void) cast doesn't silence gcc but it does silence coverity.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 63705716a44030e5d4e3bea6bd19bd28fa132635
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Mar 11 12:04:08 2015 +1000

    Coverity: fix potential NULL-pointer dereferences
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jason Gerecke <killertofu@gmail.com>

commit a6cdf28476062f70c1481b255e7d22d814f73440
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Mar 16 16:53:03 2015 -0700

    wacom 0.29.0
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit a8d43fceb38cad8386b87dd4069e4022e05f5d7c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Mar 11 11:48:59 2015 +1000

    Fix release script
    
    Apparently the path has changed
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Jason Gerecke <killertofu@gmail.com>

commit 5ce9a72fb8249af500e88bde3e6ec0239cd0b8ac
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Mar 9 14:06:56 2015 +1000

    tools: Add missing includes for fstat(2)
    
    http://build.gnome.org/continuous/buildmaster/builds/2015/03/09/8/build/log-xf86-input-wacom.txt
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 8317dc44c142a2d38e85e6d2955236d7dd900450
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Mar 9 13:53:48 2015 +1000

    Add missing includes for fstat(2)
    
    http://build.gnome.org/continuous/buildmaster/builds/2015/03/09/3/build/log-xf86-input-wacom.txt
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit e97d82e253635ec2e7c592ed24b772b231eb8b38
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Mar 5 17:50:35 2015 -0800

    wacom 0.28.99.1
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 0af1fcfa3212e099267921410aedd4d75b6c2deb
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 29 11:52:27 2015 -0800

    doc: Fix doxygen.conf warnings
    
    Remove the obsolete XML_SCHEMA and XML_DTD definitions, as well
    as clear the definition of DOT_FONTNAME.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 122d70031ddd2d414f2e739e57903b676c159baa
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 29 10:27:40 2015 -0800

    xsetwacom: Ease static analysis of get_mapped_area
    
    Fixes warnings about the "width", "height", "x_org", and "y_org"
    variables in "set_output_next" potentially being undefined. Although
    careful consideration of the code shows that they must be defined,
    GCC's static analyzer apparently isn't quite up to the task. This
    commit rewrites the loop/switch construct to be more straightforward
    and analyzable.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 3e89ef073e3327826c33241f555f59d3e3dea3f7
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 29 10:10:50 2015 -0800

    tools: Fix up const warnings
    
    Resolve numerous "initialization discards ‘const’ qualifier from pointer
    target type" warnings that were present.
    
    Note that in the process of fixing the warning in 'parse_actions', a
    small buffer overflow was also corrected (the statement
    'sprintf(new_words[0], "+%d", i)' writes one character more than
    originally existed in new_words[0]).
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit fc28497c0415ecd3487769303eee32f6c8315886
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 29 14:42:00 2015 -0800

    xsetwacom: Use 'fabs' instead of 'abs' where necessary
    
    Fixes multiple clang warnings about the use of 'abs' with a floating-
    point argument.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 820e6826e9e9cf9672a6e343a0b9134036e50ab8
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 29 10:32:58 2015 -0800

    xsetwacom: Remove unused variable from 'strjoinsplit'
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit bfb53ce07ce3cde26ab3e46805a251e79c9eb78d
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 29 10:42:50 2015 -0800

    xsetwacom: Fix format string provided used by 'get_button'
    
    xsetwacom.c: In function ‘get_button’:
    xsetwacom.c:2080:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘Atom’ [-Wformat=]
      print_button_value(param, offset, "%d", prop);
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 4e7fe9882407cb58b0150b7d2d1d7ca1c7f89418
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 29 10:40:14 2015 -0800

    xsetwacom: Declare printf attribute on print_{,button_}value
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit cdbada765adac161ef4f0e36c16301a7f9b3980e
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Jan 29 10:10:12 2015 -0800

    tools: Build with CWARNFLAGS
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 86dd3e22ab1b07dd2777959a5a2d2ea7da38f74f
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri Jan 16 18:33:39 2015 -0800

    xsetwacom: Allow "get <id> all" to iterate over all available buttons
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 9ee5383553ac32e98c7f0e25a1c950f35ffeff62
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri Jan 16 17:29:40 2015 -0800

    xsetwacom: Add print_button_value function
    
    Setting a button value requires a slightly different format than most
    other properties. In particular, they require the presence of a button
    number either concatenated onto the prefix 'Button' (for xorg.conf format)
    or as a seperate parameter (for shell format).
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 2f5af03ac1b7ac9748b2ee1d5493aca1de87a8d0
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri Jan 16 18:11:20 2015 -0800

    xsetwacom: Don't try to print "set" commands for readonly properties
    
    Both FORMAT_XORG_CONF and FORMAT_SHELL are formatted for setting in xorg.conf
    or xsetwacom. It makes no sense to bother printing out the value of readonly
    values for these two cases though since it is impossible to set them.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 902b174cbde602f00b08d40ae1b949ea0f154a7f
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri Jan 16 18:00:41 2015 -0800

    xsetwacom: Print proper names of xorg.conf options
    
    Some properties have different names between xorg.conf and xsetwacom.
    This adds an 'x11name' member to each parmeter which stores the name
    of the associated xorg.conf property if it exists. If this member has
    not been set for any particular parameter while the xorg.conf format
    is selected than an error will be printed.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 162d83cf2c6cf809debdb2beb96a45313f4e8a36
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri Jan 16 17:02:40 2015 -0800

    xsetwacom: Print error/warning messages on stderr
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 27b713eebf606b9f21df26d9ac5cc6a489b90a01
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Jan 12 09:30:18 2015 -0800

    xsetwacom: Use effective XKB group number in keysym_to_keycode
    
    XKB allows a user to define multiple groups (layouts) for their
    keyboard, switching between them on the fly. When converting keycodes to
    KeySyms one has to be careful about which group they look at. Not every
    keycode has to define KeySyms for every available group, and XKB
    calculates an "effective" group number in such cases. At the moment
    xsetwacom only uses the "current" group number which won't always work.
    
    The following commands exhibit one example of how the bug may be
    reproduced:
    
        $ setxkbmap us,dvorak -option grp:caps_toggle
        $ xsetwacom set <id> button 1 key ctrl
        [ button 1 should work as expected ]
        [ now press CAPSLOCK to switch to Dvorak ]
        $ xsetwacom set <id> button 1 key ctrl
        [ a warning is printed if the bug exists ]
    
    To reset the keyboard back e.g. to the 'us' layout after running the
    above commands:
    
        $ setxkbmap us -option
    
    Fixes: http://sourceforge.net/p/linuxwacom/bugs/269/
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 335f885bcc15d7ba85bcd2b6000434c39f1beb13
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Jan 5 13:38:53 2015 -0800

    wacom 0.28.0
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 47539b4e4005cda70405bd8f2a29214cabba2d64
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Dec 22 15:49:52 2014 -0800

    wacom 0.27.99.1
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 8d138bf21a54f73249f443af747f01f4a0069fc0
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Dec 22 14:54:08 2014 -0800

    xsetwacom: Warn if keycode could not be found
    
    As described at SF #267, xsetwacom provides no indication if a valid
    keysym has no keycode in the current keyboard layout. This provides
    such a warning and updates language of a preceeding warning to be
    more accurate.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit fd5371dc28dfd1bdabd9b50bdac00047aadc39ab
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri Dec 5 10:38:21 2014 -0800

    Allow xsetwacom to recognize 'insert' as a key
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit debc83723927f0fb3d16098f8b7388bdb6db855b
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Fri Dec 5 13:39:26 2014 -0800

    Ensure input device fd gets closed after use
    
    Fixes a minor error in commit 52fe01c which results in the driver
    invalidating an fd prior to (potentially) closing it. This reversed
    order causes us to leak the fd and can result in eventual exhasution.
    
    Fixes SF #263
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 5aec962eb930aa7758eb0e3a7c32f951b4b3d935
Author: Ping Cheng <pingc@wacom.com>
Date:   Mon Nov 24 13:46:56 2014 -0800

    Remove hardcoded function name - usbProbeKeys
    
    "in the future we should use __func__ instead of harcoding
    function names." -- Peter Hutterer
    
    Signed-off-by: Ping Cheng <pingc@wacom.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 0cfe1139f39fd322a4360b282fee6297c8ac00d6
Author: Ping Cheng <pingc@wacom.com>
Date:   Mon Nov 24 13:42:18 2014 -0800

    Allow PAD only interface without setting up EV_ABS and/or EV_X/Y
    
    Wacom kernel driver has been merged to HID subsystem. As a bonus,
    we also allow PAD to report its data on its own interface. To declare
    the exact event types, we should not set EV_ABS or EV_X/Y for PADs
    on most tablets.
    
    However, xf86-input-wacom is not designed to handle this case. This
    patch makes future PAD-only, or even expresskey-only, tablets work
    properly.
    
    Signed-off-by: Ping Cheng <pingc@wacom.com>

commit cea8074a0b987efb064cfbebe1de4c684592b928
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Nov 3 17:00:26 2014 -0800

    wacom 0.27.0
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit bac8243d680d9cde531aaa00c048299017d32962
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Oct 27 15:35:18 2014 -0700

    wacom 0.26.99.1
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 8f85692a19bd34dae77071a296a14c01a491cf4a
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Wed Sep 17 16:05:10 2014 -0700

    Reset wcmGestureState to current device state upon gesture start
    
    The scroll and zoom gestures use of how far the fingers have travelled
    as a way to determine how many times to send the scroll/zoom event.
    When a gesture first starts, however, the fingers have already moved a
    large distance simply to have the gesture be recognized. This may cause
    a rapid and undesired "catch up" effect due to the large built-up delta.
    
    To work around this, when a gesture starts, we reset the wcmGestureState
    so that the functions are working with a clean slate and do not see the
    large delta.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit f6ae56b0cf1cbf298ebbc5380f51010cea430154
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Sep 11 16:13:05 2014 -0700

    Set the active driver to NULL before uninitalizing the device
    
    If a device being used is disconnected, it may be possible to find
    yourself in a situation where a second device performs an "active"
    check and dereferences a null (freed in 'wcmFree') 'priv' pointer.
    To prevent this from occuring, always check if the device being
    uninitialized is considered 'active' and unset it if so.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit e9f95de119875e06b9ec775f5938506dcc1b2d6e
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Tue Sep 9 17:02:48 2014 -0700

    Fix pointer jump when tool enters prox with filtered coordinate
    
    When a tool enters proximity, the usbChooseChannel function zeros
    out one of the WacomDeviceState structures in the common->wcmChannel
    array and returns its index. That state is then initalized using
    the input events recieved from the kernel, and is assumed to be
    a complete description by the time it is handed off to the wcmEvent
    function.
    
    The kernel's duplicate event filtering can cause problems for this,
    however. If the value of the axis as it enters prox is identical to
    its value when it left prox, the kernel will not send an event for
    it (leaving the associated WacomDeviceState field zero). If this
    occurs with the X and/or Y axis, the pointer will jump to the wrong
    screen location.
    
    To prevent the pointer from jumping around, we check if the X or Y
    value of the WacomDeviceState are still zero after reading through
    an enter-prox packet. If either is, we request its current value
    from the kernel just in case it was filtered out. Other axes may be
    affected by this bug, but should not cause as many problems.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 0ed6d892e045de4e9674fa81318ee8ee7b3fc384
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Sep 18 12:08:25 2014 -0700

    Strengthen condition that pad may never be arbitrated pointer control
    
    The pad should never be arbitrated pointer control since it is not a
    pointer controlling device. The `check_arbitrated_control` function
    performs its checks in the wrong order, however, and will grant control
    if no other device is currently active.
    
    This can cause touch to be disabled for "generic protocol" devices (e.g.
    Intuos, Bamboo, etc.) until a pen is used because touch is the lowest-
    priority device to be arbitrated access. For protocol 4/5 devices (e.g.
    Intuos 5/4/3 and Cintiq) this can also lock out touch, but only if the
    ExpressKey was pressed prior to the beginning of the touch, and only
    while it remains held.
    
    This patch strengthens the condition that the pad may never be granted
    control by making it the first thing checked.
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>

commit 018c632ada56d8e07a11ce89ec589e3a2dc36293
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Wed Sep 17 19:05:44 2014 -0700

    gcc-warning: -Wunused-variable
    
    ../src/wcmXCommand.c:90:13: warning: 'prop_tv_resolutions' defined but not used [-Wunused-variable]
     static Atom prop_tv_resolutions;
                 ^
    
    Signed-off-by: Jason Gerecke <killertofu@gmail.com>
    Acked-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 885e04b36054da9072a6add5307ef0d9d538ee62
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Sep 15 10:40:50 2014 -0700

    clang-warning: -Wmissing-variable-declarations
    
    ../src/wcmConfig.c:701:16: warning: no previous extern declaration for non-static variable 'WACOM' [-Wmissing-variable-declarations]
    InputDriverRec WACOM =
                   ^
    ../src/wcmXCommand.c:82:6: warning: no previous extern declaration for non-static variable 'prop_devnode' [-Wmissing-variable-declarations]
    Atom prop_devnode;
         ^
    ../src/wcmXCommand.c:83:6: warning: no previous extern declaration for non-static variable 'prop_rotation' [-Wmissing-variable-declarations]
    Atom prop_rotation;
         ^
    ../src/wcmXCommand.c:84:6: warning: no previous extern declaration for non-static variable 'prop_tablet_area' [-Wmissing-variable-declarati$
    Atom prop_tablet_area;
         ^
    ../src/wcmXCommand.c:85:6: warning: no previous extern declaration for non-static variable 'prop_pressurecurve' [-Wmissing-variable-declara$
    Atom prop_pressurecurve;
         ^
    ../src/wcmXCommand.c:86:6: warning: no previous extern declaration for non-static variable 'prop_serials' [-Wmissing-variable-declarations]
    Atom prop_serials;
         ^
    ../src/wcmXCommand.c:87:6: warning: no previous extern declaration for non-static variable 'prop_serial_binding' [-Wmissing-variable-declar$
    Atom prop_serial_binding;
         ^
    ../src/wcmXCommand.c:88:6: warning: no previous extern declaration for non-static variable 'prop_strip_buttons' [-Wmissing-variable-declara$
    Atom prop_strip_buttons;
         ^
    ../src/wcmXCommand.c:89:6: warning: no previous extern declaration for non-static variable 'prop_wheel_buttons' [-Wmissing-variable-declara$
    Atom prop_wheel_buttons;
         ^
    ../src/wcmXCommand.c:90:6: warning: no previous extern declaration for non-static variable 'prop_tv_resolutions' [-Wmissing-variable-declar$
    Atom prop_tv_resolutions;
         ^
    ../src/wcmXCommand.c:91:6: warning: no previous extern declaration for non-static variable 'prop_cursorprox' [-Wmissing-variable-declaratio$
    Atom prop_cursorprox;
         ^
    ../src/wcmXCommand.c:92:6: warning: no previous extern declaration for non-static variable 'prop_threshold' [-Wmissing-variable-declaration$
    Atom prop_threshold;
         ^
    ../src/wcmXCommand.c:93:6: warning: no previous extern declaration for non-static variable 'prop_suppress' [-Wmissing-variable-declarations]
    Atom prop_suppress;
         ^
    ../src/wcmXCommand.c:94:6: warning: no previous extern declaration for non-static variable 'prop_touch' [-Wmissing-variable-declarations]
    Atom prop_touch;
         ^
    ../src/wcmXCommand.c:98:6: warning: no previous extern declaration for non-static variable 'prop_hover' [-Wmissing-variable-declarations]
    Atom prop_hover;
         ^
    ../src/wcmXCommand.c:99:6: warning: no previous extern declaration for non-static variable 'prop_tooltype' [-Wmissing-variable-declarations]
    Atom prop_tooltype;
         ^
    ../src/wcmXCommand.c:100:6: warning: no previous extern declaration for non-static variable 'prop_btnactions' [-Wmissing-variable-declarati$
