commit a80773a488da3f3dfe5a5dc0fd658dc8a6a3b331
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri May 5 13:43:23 2017 +1000

    xf86-input-libinput 0.25.1
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 8bc694595d26c2ae7dd98b27c9eed0ec0366b7a5
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Mar 21 13:13:43 2017 +1000

    Post a motion event after proximity events
    
    This patch splits the meat of xf86libinput_handle_tablet_axis into a helper
    function xf86libinput_post_tablet_motion(), to be called right after we send
    the proximity in event.
    
    Clients that don't handle proximity (e.g. all XI2 clients) don't see the
    coordinates we send along with the proximity events. And, for historical
    reasons, they may not look at the coordinates in button events. So a device
    that comes into proximity and immediately sends a tip down button event
    doesn't send a motion event, causing the client to think the tip down was at
    whatever the last known position was (before previous prox-out).
    
    The practical effect is that when a user tries to draw a few dots, they end up
    being connected to each other.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1433755
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 153a7fc62fa87a2cc2516826b3eae16fa8cc861d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Mar 9 15:58:39 2017 +1000

    xf86-input-libinput 0.25.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 72fb6d304eec6eeeac6b42963c2729134d56de57
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Feb 28 14:45:29 2017 +1000

    test: fix a test failure on ppc64(le) and aarch64
    
    Caused by different results in -O0 vs -O2. The resulting array differs only
    slightly but the initial sequence has one extra zero. That triggers our
    assert, no other compiler flag seem to be affecting this.
    
    Compiled with -O0:
    Breakpoint 1, test_nonzero_x_linear () at test-bezier.c:157
    157                     assert(bezier[x] > bezier[x-1]);
    (gdb) p bezier
    $6 = {0 <repeats 409 times>, 1, 2, 4, 5, 7, 9, 10, 12, 14, 15, 17, 19, 21, 22,
    
    Compiled with -O2:
    (gdb) p bezier
    $1 = {0 <repeats 410 times>, 1, 3, 5, 7, 9, 10, 12, 14, 15, 17, 19, 20, 22,
    
    Printing of the temporary numbers in the decasteljau function shows that a few
    of them are off by one, e.g.
        408.530612/0.836735 with O0, but
        409.510204/0.836735 with O2
    Note: these are not rounding errors caused by the code, the cast to int
    happens afterwards.
    
    Hack around this by allowing for one extra zero before we check that the rest
    of the curve is ascending again.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=99992
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit aae2c8ad9a9f1712149c93d50284ddb5f37e4cbd
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Feb 24 12:56:41 2017 +1000

    Open sysfs files directly instead of going through the server
    
    Only use-case here are pad mode LEDs that now live in /sys/class/leds. Asking
    the server to open them is pointless, the server only knows how to open Option
    "Device". And since the LEDs are in sysfs we should have access to them
    anyway, so no need for jumping through or hula-ing hoops.
    
    xf86CloseSerial() works as intended as it's a slim wrapper around close(), so
    we only have to worry about the open() path here.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit dafc296f2df587a1bb5feb37697c50608db4f246
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Feb 24 12:34:10 2017 +1000

    Add streq() macro, replace strcmp instances with it
    
    And why isn't this a thing in glibc yet
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>

commit 7c90f06d569b1b14d84075e7cea22bce06b925e6
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Feb 24 12:27:37 2017 +1000

    Update pad modes in a workproc, not during the input thread
    
    Updating the property directly causes us to send events from the input thread
    which has some "interesting" side effects like messing up the reply order or
    just crashing the server.
    
    Schedule a work proc instead and update it whenever the server is back in the
    main thread.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 2eb5a2f0c08747df44eba6faff95cc9ce24b78ed
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Feb 9 16:16:34 2017 +1000

    xf86-input-libinput 0.24.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 19ceef972e76bc491438198659748786d9457668
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jan 27 10:24:08 2017 +1000

    Drop unnecessary function declaration
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 07f30ea049303739bf6006d23ac924971a19d778
Author: Mihail Konev <k.mvc@ya.ru>
Date:   Thu Jan 26 14:00:21 2017 +1000

    autogen: add default patch prefix
    
    Signed-off-by: Mihail Konev <k.mvc@ya.ru>

commit 6187ed0450e68aaf727779ad61b50b0b70a1122e
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Mon Mar 9 12:00:52 2015 +0000

    autogen.sh: use quoted string variables
    
    Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
    fall-outs, when they contain space.
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 974ab6b62bd2af97e1556314df28fe9f3b816e54
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Oct 28 11:20:22 2016 +1000

    Add tablet tool area ratio property
    
    By default, the X server maps the tablet axes to the available screen area.
    When a tablet is mapped to the screen but has a different aspect ratio than
    the screen, input data is skewed. Expose an area ratio property to map the
    a subsection of the available tablet area into the desired ratio.
    
    Differences to the wacom driver: there the x/y min/max values must be
    specified manually and in device coordinates. For this driver we merely
    provide the area ratio (e.g. 4:3) and let the driver work out the rest.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 5d0470738125243c98f7a8cc40d62f53604a8051
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Oct 24 14:41:51 2016 +1000

    Implement stylus pressure curve support
    
    Takes a 4-point cubic bezier curve as input and maps the pressure coordinates
    to the values outlined by this curve. This is an extension of the current
    implementation in the xf86-input-wacom driver which only allows the two center
    control points to be modified.
    
    Over the years a few users have noted that the wacom driver's pressure curve
    makes it impossible to cap the pressure at a given value. Given our bezier
    implementation here, it's effectively a freebie to add configurability of the
    first and last control points. We do require all control points' x coordinates
    to be in ascending order.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit f65a5c50224efc34414f44c86700e15392b7039b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Oct 26 11:57:49 2016 +1000

    Add a bezier curve implementation
    
    Needed for the wacom stylus pressure curve
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 0dad7408fac3b69c4b6ab7705f39f790d7ba20c2
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 28 14:09:06 2016 +1000

    Calculate the required scroll distance based on the angle
    
    For a mouse with a click angle of 15 degrees things are unchanged. For devices
    with angles less than 10, the current code scrolled way too fast. Because the
    angle wasn't used anywhere, each tick would count as full scroll wheel event,
    a slight movement of the wheel would thus scroll as much as a large movement
    on a normal mouse.
    
    Fix this by taking the actual click angle of the device into account. We
    calculate some multiple of the angle that's close enough to the default 15
    degrees of the wheel and then require that many click events to hit the full
    scroll distance. For example, a mouse with a click angle of 3 degrees now
    requires 5 clicks to trigger a full legacy scroll button event.
    
    XI2.1 clients get the intermediate events (i.e. in this case five times
    one-fifth of the scroll distance) and can thus scroll smoothly, or more
    specifically in smaller events than usual.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=92772
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit ea02578a4e888d9908eb6bed6dcb858f78acb8bb
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Nov 29 08:31:32 2016 +1000

    Move axis value calculation into a helper function
    
    The only difference here is the axis number.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 2ceb2e1b18b6f971706230d16a2a5665d87aabd4
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Nov 29 09:21:24 2016 +1000

    Add a comment regarding scroll dist default values
    
    Changed this during development because I forgot that the value actually
    matters (for touchpads anyway).
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit f47f78eb0bd9fba455f01c8c6dead3bd75242b2b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Dec 20 15:36:55 2016 +1000

    Ignore LED updates for disabled devices
    
    If an XKB AccessX timeout is set and a VT switch is triggered, the
    AccessXTimeoutExpire function may be called after the device has already been
    disabled. This can cause a null-pointer dereference as our shared libinput
    device may have been released by then.
    
    In the legacy drivers this would've simply caused a write to an invalid fd
    (-1), not a crash. Here we need to be more careful.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=98464
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 1c3ce3ce3c315213511735db1b0fdd74ca8442d0
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Dec 12 14:54:00 2016 +1000

    xf86-input-libinput 0.23.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 4d481ea7c80dad9f53b47c026959c25ad9da5211
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Dec 5 14:25:31 2016 +1000

    Fix default scroll button number
    
    Was exposing the evdev code rather than the xorg code.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 72bac84df9ce72f2baf730655ecc23f1692d1e64
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Nov 15 11:23:08 2016 +1000

    If the parent libinput_device is unavailable, create a new one
    
    The parent device ref's the libinput device during pre_init and unref's it
    during DEVICE_INIT, so the copy is lost. During DEVICE_ON, the libinput device
    is re-added and ref'd, this one stays around now. But the takeaway is: unless
    the device is enabled, no libinput device reference is available.
    
    If a device is a mixed pointer + keyboard device, a subdevice is created
    during a WorkProc. The subdevice relied on the parent's libinput_device being
    available and didn't even check for it. This WorkProc usually runs after
    the parent's DEVICE_ON, so in most cases all is well.
    
    But when running without logind and the server is vt-switched away, the parent
    device only runs PreInit and DEVICE_INIT but never DEVICE_ON, causing the
    subdevice to burn, crash, and generally fail horribly when it dereferences the
    parent's libinput device.
    
    Fix this because we have global warming already and don't need to burn more
    things and also because it's considered bad user experience to have the
    server crash. The simple fix is to check the parent device first and if it is
    unavailable, create a new one because it will end up disabled as well anyway,
    so the ref goes away as well. The use-case where the parent somehow gets
    disabled but the subdevice doesn't is a bit too niche to worry about.
    
    This doesn't happen with logind because in that case we don't get a usable fd
    while VT-switched away, so we can't even run PreInit and never get this far
    (see the paused fd handling in the xfree86 code for that). It can be
    reproduced by setting AutoEnableDevices off, but why would you do that,
    seriously.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=97117
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 0b073d90e63d644401769c61611638d65a4eaf44
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Nov 11 12:36:01 2016 +1000

    Link the left-handed property between the tools
    
    The property is tablet-wide, not just per tool. So when one tool is updated,
    run through all other devices that share the same underlying device.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 669fbb098516e0bdf6c62c52c1bcb12580de069b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Nov 1 10:42:19 2016 +1000

    Drop indentation for matrix handling
    
    Exit early if the string is NULL to reduce indentation. No functional changes.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit c4f0a9bcb846f70b85a285e8acea8fe086abdccb
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Nov 1 10:06:03 2016 +1000

    conf: match against tablets too
    
    Now that we sort below the xf86-input-wacom driver anyway, there's no good
    reason to ignore tablets anymore.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit a61e156326197dbbf1c1294693946c504af9daee
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Oct 24 14:23:16 2016 +1000

    man: sort the options and properties alphabetically
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 552cbaf466a0aede8f789aa2013795f3b9ac253d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Oct 26 15:03:48 2016 +1000

    Don't init the AccelSpeed/LeftHanded properties on the base tablet device
    
    This device never sends events, no point in exposing these options
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>

commit bc91d337d7cf765fd23e47783a498e4b3b334f39
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Oct 20 08:42:53 2016 +1000

    Fix potential NULL pointer dereferencing
    
    Found by coverity.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit c8d2293873d3f86e5cefffa5c51cfe423d09c948
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Oct 20 08:38:24 2016 +1000

    Remove superfluous check for next being NULL
    
    is_libinput_device(next) causes a dereference of next anyway, so this cannot
    ever be NULL.
    
    Besides, if next ends up as NULL that means we have lost count of how many
    remaining devices use libinput, so we have other issues.
    
    Found by coverity.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit a7014aa8c619ed9bc1cd5c0b38428fd88f1bc8d4
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Oct 20 08:27:01 2016 +1000

    Remove two unused variables
    
    They were never used anyway
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit bf7fffde520277e13b350950de9dc5bf89858951
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Oct 19 11:42:57 2016 +1000

    Don't init the horiz scroll property on non-pointer devices
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 728217775626e2086d7c3acd0d242562390f145b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Oct 19 10:55:12 2016 +1000

    xf86-input-libinput 0.22.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 1dd61abf7e6af9cdd12d8f5a35fe90954aa03e64
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Oct 19 10:37:32 2016 +1000

    Wrap the input_lock calls into ifdefs
    
    Missing from a790ff35f9
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit c80954386d536b83f2c9290e1a88515c04505818
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Oct 19 09:24:37 2016 +1000

    xf86-input-libinput 0.21.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit a790ff35f90e459fe03e0c78ab6f4e9dd5045dd0
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Oct 14 17:00:41 2016 +1000

    Swap the registered input device on DEVICE_OFF when needed
    
    If we don't swap out the pInfo previously passed to xf86AddEnabledDevice(),
    the thread eventually calls read_input on a struct that has been deleted.
    Avoid this by swapping out the to-be-destroyed pInfo with the first one we
    find.
    
    Reproducer: sudo udevadm trigger --type=devices --action=add
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 6318ac420b644c7f7a6f2c8e47a64238a4afebeb
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Oct 14 13:34:56 2016 +1000

    Fix tap button map option handling
    
    Copy/paste error
    
    https://bugs.freedesktop.org/show_bug.cgi?id=97989
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit cd02040a5d4a8f120d225a4c09f5d1dfc751c0a8
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Sep 30 17:01:21 2016 +1000

    xf86-input-libinput 0.20.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 0cfe9ec6c23e73507fd0797bae24c5ed6fcce033
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Fri Sep 16 17:26:06 2016 +0900

    Fix --with-xorg-conf-dir default value
    
    If --prefix isn't specified on the command line, $prefix contains "NONE"
    at this point, not the default prefix value. So make install would
    attempt to install the xorg.conf.d snippet to
    ${DESTDIR}NONE/share/X11/xorg.conf.d/.
    
    Avoid this by leaving ${prefix} verbatim in the default value, to be
    resolved by make.
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit b87d2530db46a08de15376722873295e01bef16f
Author: Keith Packard <keithp@keithp.com>
Date:   Fri Sep 16 10:18:31 2016 -0700

    Initializing strip association with wrong index
    
    This looks like a cut&paste coding error to me, and it generated a
    compiler warning about possibly uninitialized value.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 2f1df46ba9ef91c079f6485c04ac7c5515d6057a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Sep 13 14:37:07 2016 +1000

    Correct the horizontal scroll property name
    
    Clear typo. Not bothering to be backwards compatible here, anything that uses
    the #define will update on rebuild, anyone using the string directly should've
    told me about the typo...
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit fa69bb1bc244f378507e1ef2fbcb3ea343a59a32
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Aug 18 15:13:09 2016 +1000

    Always delay hotplugging subdevices
    
    Avoid creating new devices from within the input thread which was the case for
    tablet tools. It requires a lot more care about locking and has a potential to
    mess up things.
    
    Instead, schedule a WorkProc and buffer all events until we have the device
    created. Once that's done, replay the event sequence so far. If the device
    comes into proximity and out again before we manage to create the new device
    we just ditch the whole sequence and wait for the next proximity in.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit af4fa36884b1945a231b2f7ebe011726b5a604c1
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Aug 16 09:06:27 2016 +1000

    Add support for configurable tap button mapping
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit a5b3c209fc8619dea6ac57420fb7837cf6e0e8bf
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon May 30 15:27:52 2016 +1000

    Add support for the rotation configuration
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 0f7c5ed02d4f2de34c6fb1fc3f4debceef08d0d7
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Aug 30 12:42:58 2016 +1000

    conf: drop libinput to below the other drivers
    
    This is the continuation of 3f569ec493e, dropping libinput below the remaining
    drivers. Wacom and synaptics already sort higher anyway (see wacom commit
    0da5cd54 and synaptics commit 59e5db025). evdev remains the catchall
    basic fallback driver and is overwritten by libinput. The two drivers affected
    by this patch are joystick and vmmouse.
    
    joystick is a niche driver and drives devices libinput doesn't handle anyway
    so there is no need to override. If a user installs it, presumably it is to
    use it.
    
    vmmouse is a niche driver and does not assign itself anymore for newer kernel
    drivers (see vmmouse commit 576e8123 from Oct 2014). So if vmmouse is
    installed it can safely sort higher than libinput.
    
    Note: this is upstream behavior, distributions have to work out the wanted
    behavior themselves by renaming the config snippets accordingly.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 0168716fa18cc72a8e6198b0d87b1798429d7096
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Aug 19 11:35:02 2016 +1000

    Whitespace fix
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit b508c54fa0d569beb00ccba3d5b27ca993aae94d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Aug 16 09:34:36 2016 +1000

    Comment two read-only properties as such
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit d43e514430ef5878cd64387169952435d2f83007
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jul 8 12:03:19 2016 +1000

    Expose tablet pad modes as properties
    
    There is not good wire protocol for pad modes so instead we just export the
    information via properties. One property to tell us how many groups and how
    many modes each group has. One property for the current mode of each group.
    And three properties to tell us which group each button, ring and strip is in.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 5f2fff3c2455ad3580c4c130cf85cb5076838c18
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Aug 15 10:40:20 2016 +1000

    Ensure parent devices are actual parent devices
    
    The list returned by xf86FirstLocalDevice() includes our own device. If the
    parent device is removed before the hotplug callback is invoked, the first
    match with the same shared-device ID is our own device (or potentially another
    subdevice on the same already-removed parent). Avoid this by making sure the
    matched device is actually a parent device.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Tested-by: Keith Packard <keithp@keithp.com>

commit 116cddba69b37246db564c1ddf772c0144c589f0
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Aug 3 16:17:03 2016 +1000

    Bail out of PreInit if the parent driver data is NULL
    
    If the parent device is removed before the WorkProc is called, the private
    data is NULL.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit fb4847d243321cb400b9abbb1f04eb8566c8cf8e
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Aug 3 15:48:58 2016 +1000

    Block input events while creating the virtual subdevices
    
    If an event comes in halfway through the new device creation we read it from
    libinput's epollfd but depending on the setup stage the new device may not be
    ready yet.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=97117
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit ce85b11e4c211da3b3fe1b6803498c96065c2598
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jul 8 13:01:54 2016 +1000

    Fix button offset for tablet pad buttons
    
    4-7 is reserved for scroll buttons, as usual
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 77a47a795c04f86260ecfa7a96281f8b5a3f4e0f
Author: Eric Engestrom <eric@engestrom.ch>
Date:   Sat Jul 2 12:39:12 2016 +0100

    man: fix a couple typos
    
    Signed-off-by: Eric Engestrom <eric@engestrom.ch>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit ae4f0a8d72e396528e1108161a3bcc0132df43a2
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jun 10 08:27:30 2016 +1000

    Init touch x/y axis labels as MT axis labels
    
    https://bugs.freedesktop.org/show_bug.cgi?id=96481
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 289de5be15967983154c7cd9fbb344aab80b6679
Author: Keith Packard <keithp@keithp.com>
Date:   Mon May 30 01:13:41 2016 -0700

    Use xf86AddEnabledDevice instead of AddEnabledDevice when threaded [v3]
    
    libinput can't run at SIGIO time, so it has been using
    AddEnabledDevice to run in non-signal context.
    
    Threaded input runs all input in non-signal context, so we want to use
    xf86AddEnabledDevice at last.
    
    v2: use XINPUT ABI version check instead of testing for presence of
        AddEnabledDevice, which can't get removed from the server until
        a few more patches past the threaded input change are merged.
    
    v3: remove reference to XI86_SIGNAL_IO, which was presumably
        a planned change to the xf86AddEnabledDevice path to make that
        not use SIGIO.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Tested-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit ceea2bb8ba5d5be8601c7e79b68d7805af4ce5e4
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon May 30 14:31:15 2016 +1000

    Change some fixed floats to decimal notation
    
    Just to make it more obvious we're using floats/doubles here.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit d8aef838347bc64fa635eeac436c2d1154d846ce
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon May 23 14:12:14 2016 +1000

    Fix proximity events
    
    Two bugs caused proximity events to be discarded. First, on proximity out
    posting through pDev would be discarded because pDev is the parent device that
    we use as a base for hotplugging the real devices for each tool from. That
    device never sends events though, doing so will see the event discarded in the
    server.
    
    Second, if the tool already exists don't just exit, send the proximity event
    first. To unify the three paths where we do send the events simply move them
    down to the exit phase of the function.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=95484
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 34b6ed980f8fd01e2246a94b87d32458a131974b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Apr 18 11:54:04 2016 +1000

    Add tablet pad support
    
    Modelled to be mostly compatible to the xf86-input-wacom driver behavior. The
    pad gets 7 axes, the first three of which are mute and the others are always
    available but obviously only send events when the axis is there.
    
    The strip axes are incompatible, the wacom driver merely forwards the device
    events (which are a bitshifted value), libinput normalizes it and we just
    expand this back into an integer range. Let's see how we go with this.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit ce85432f41549cd6f3c6e0c5e2e39d0c1aee8dfd
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon May 9 07:58:51 2016 +1000

    Discard buttons >= 256
    
    https://bugs.freedesktop.org/show_bug.cgi?id=95295
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 181ea654dd737783553289a77b72706783b40c17
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Apr 28 14:10:50 2016 +1000

    Fix potential use of uninitialized values
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit f9b6fa21df735e9a68c5f527afc422f519d6002c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Apr 28 13:43:49 2016 +1000

    xf86-input-libinput 0.19.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 3f569ec493e738242da97afe30f7dd2a3b2b834d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Apr 26 15:45:18 2016 +1000

    conf: rename to 60-libinput.conf
    
    60 sorts higher than the other drivers (evdev has 10, synaptics, wacom and
    others have 50) so we keep the same order.
    
    This is part of a two-step solution, the other half is renaming the
    xf86-input-wacom's config snippet to sort higher than libinput's.
    
    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, drop libinput down to 60 and bump wacom
    up.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Jason Gerecke <jason.gerecke@wacom.com>

commit 602bb8eefac929501b2cd5e5bd4a9838d1903774
Author: Stanislav Ochotnicky <sochotnicky@redhat.com>
Date:   Wed Oct 14 10:43:34 2015 +1000

    Fix implicit declaration of function 'xf86Msg' in xf86libinput.c
    
    Addition of xf86.h header fixes compilation issues in some cases.
    
    See: https://bugs.gentoo.org/show_bug.cgi?id=560970
    
    Signed-off-by: Stanislav Ochotnicky <sochotnicky@redhat.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 13726f404f872b8baee507e6b3d4931f1bda2254
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Apr 7 13:31:28 2016 +1000

    xf86-input-libinput 0.18.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 5e7ee73fe24d53cba6a915223be53e0abcdaa70d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Dec 3 15:58:49 2015 +1000

    Support art pen rotation
    
    The art pen is a normal pen, but it does provide a rotation axis.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 4564a92d59be39378170a2254ae1affb151a4757
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Dec 3 15:41:30 2015 +1000

    Support the mouse/lens tool
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 0c2bcd0358d1107bf61ac8ff6dcb156742eb1bc6
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Dec 3 15:24:24 2015 +1000

    Add support for the airbrush tool axes
    
    Same axes as the pen, but axis number 6 is the wheel (which really is a
    slider)
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit b4541e4dff7248f1ce8894d8f950122785353d5b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Nov 12 11:50:47 2015 +1000

    Add support for tablet tools
    
    Use two new internal capabilities, CAP_TABLET and CAP_TABLET_TOOL. If a
    libinput tablet device is added, add an X device without any classes. This
    device will not send events, but once we have pad support in libinput we
    may be able to this the pad device.
    
    When a tool comes into proximity, create a new X device for that serial number
    and start sending events through it. Since the X device only represents a
    single serial number/type combination, some of the wacom-specific
    configuration options fall away. This only matters in the case of multiple
    tools, in which case a per-tool configuration is preferable anyway, so we
    don't lose anything here.
    
    Gesture support only applied to the touch parts on the device, we don't
    deal with this here specifically - that event node is handled by libinput as
    touchscreen or touchpad.
    
    This already works with GIMP and clients that don't rely on any
    wacom-driver-specific properties. Configuration clients like
    gnome-settings-daemon will need to change to handle new properties, to be
    added as we go along.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 8136113139dd2a27fcfa4552da89aa110bc8fbe3
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Feb 26 15:57:48 2016 +1000

    xf86-input-libinput 0.17.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 202eb68dc061510d57900d29b3a76fe2ed811998
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Jan 28 15:02:54 2016 +1000

    Fix compiler warnings about missing tablet event cases
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit e8f5394b0734db41abd15ab72457aea99c25d9ab
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Jan 27 11:04:40 2016 +1000

    Add property/option for enabling/disabling tap-n-drag
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 20f5269a29b6f3697984872d689fbe8589e53b08
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Jan 27 11:12:48 2016 +1000

    Fix default tapping drack lock property value
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 3dacb28b206098f261d731195ed7556fc83837ed
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Nov 24 13:00:52 2015 +1000

    Allow hotplugging a device immediately
    
    This splits the hotplugging code up so we can use it through a callback but
    also as an immediate call that gives us back the device just hotplugged. Also
    added is the ability to add extra options to the device.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit db8e73141c3ebb09c19e95aab5dee46d331835df
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 23 15:31:59 2015 +1000

    Change creating subdevices to something more generic
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 0d1851a000c5a80ba9b5787f516d2d72c62ce35e
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Dec 23 13:53:38 2015 +1000

    xf86-input-libinput 0.16.0
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit ad8483b91387e99282a9b5a8360e8de7eed70257
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Dec 15 13:20:55 2015 +1000

    Drain the fd after opening
    
    Make sure we don't send any events that may have been enqueued before we
    initialized ourselves. Specifically, if we're using systemd-logind the fd
    remains open when we disable/enable the device, allowing events to queue up on
    the fd. These events are then replayed once the device is re-opened.
    
    This is not the case when VT-switching, in that case logind closes the fd for
    us.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Keith Packard <keithp@keithp.com>

commit 1f43f3921f6ceebd9a0cb92ef998a930d5fc3a3e
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Nov 11 10:10:58 2015 +1000

    Split mixed pointer/keyboard devices into two separate X devices
    
    The server struggles with devices that are both, the protocol (especially XI2)
    requires a fairly strict separation of pointer vs keyboard devices. Though the
    server has a couple of hacks to route events correctly, mixed
    devices still experience bugs like [1].
    
    Instead of advertising the device as a single mixed device, split the device
    into two X devices, one with only a pointer/touch component, one with only a
    keyboard component. This ensures that the device is effectively attached to
    both the VCP and the VCK, something the XI2 protocol doesn't really allow.
    
    This patch drops the keyboard capability on a mixed device, duplicates the
    input options and attributes and queues a NewInputDeviceRequest call. The new
    device only has the keyboard capability but is otherwise unchanged. The
    wacom driver has used this approach for years.
    
    The WorkProc is necessary to avoid inconsistent state, the server doesn't
    handle a NewInputDeviceRequest during PreInit well.
    
    The approach:
    During pre-init we create a struct xf86libinput_device with the
    libinput_device and a unique ID. The child device has that ID added to the
    options and will look for the other device during its pre-init. The two
    devices then share the xf86libinput_device struct.
    
    We only have a single epollfd for all devices  and the server calls read_input
    on the first device in the list with the epollfd as pInfo->fd. That shared
    struct is used as the userdata on the libinput_device we get back from the
    event, and each device is in the xorg_list device_list of that shared struct.
    We loop through those to find the ones with the right capabilities and
    post the event through that device.
