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.
    
    Since devices can be enabled and disabled independently, the rest of the code
    makes sure that we only ever add the device to libinput when the first shared
    device is enabled, and remove it accordingly.
    
    The server uses pInfo->major/minor to detect if another device is using the
    same path for a logind-controlled fd. If so, it reuses that device's
    pInfo->fd and sets the "fd" option to that value. That pInfo->fd is the
    libinput epollfd though, not the actual device fd.
    
    This doesn't matter for us, since we manage the fds largely ourselves and the
    pInfo->fd we use is the epollfd anyway. On unplug however, the udev code
    triggers a device removal for all devices, including the duplicated ones. When
    we disable device, we restore the pInfo->fd from the "fd" option so that the
    server can request logind to close the fd.
    
    That only works if the "fd" option is correct, otherwise the server asks
    logind to close the epollfd and everyone is unhappy.
    
    [1] https://bugs.freedesktop.org/show_bug.cgi?id=49950
    
    https://bugs.freedesktop.org/show_bug.cgi?id=92896
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 83dfd31ec8ec2596648c33059fffb93b19691fae
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Nov 20 10:51:38 2015 +1000

    Revert "Split mixed pointer/keyboard devices into two separate X devices"
    
    When using logind, this causes the server to hang when a split device is
    unplugged. The reason is mostly in the server, when open the device by
    requesting the logind fd, the server loops through the device list to check if
    any other device has the same major/minor (see systemd_logind_take_fd()) and
    returns the pInfo->fd for that device instead of requesting the fd again from
    logind.
    
    For libinput devices, the pInfo->fd is the epollfd, not the actual device, so
    our second device gets the epollfd assigned. When the devices are removed, we
    keep the device fd open and release the epollfd through logind.
    
    This reverts commit c943739a2bfd4c380db0b21bc35b73deb7496c8a.

commit c943739a2bfd4c380db0b21bc35b73deb7496c8a
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.
    
    Since devices can be enabled and disabled independently, the rest of the code
    makes sure that we only ever add the device to libinput when the first shared
    device is enabled, and remove it accordingly.
    
    [1] https://bugs.freedesktop.org/show_bug.cgi?id=49950
    
    https://bugs.freedesktop.org/show_bug.cgi?id=92896
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit a72e96538af2c4a94ead48f96e8e59a2a4980a64
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Nov 13 09:39:29 2015 +1000

    Add a helper function for the driver context initialization
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit b1a9bea6079550fa8be4fa0b2e18ea810b0ea68c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Nov 11 09:12:33 2015 +1000

    Copy the device capabilities to the X driver struct
    
    And use those copied caps instead of the direct device capability calls.
    
    No functional changes at this point, this is preparation work for selectively
    disabling capabilities on a device.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit a6aad69a97c68fa96e0a836e735b1a7f319b92df
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Nov 11 09:02:22 2015 +1000

    Split type_name detection out into a helper function
    
    No functional changes
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit 6fa5f30129ea770bcc5e50b0785a993a8254a418
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Nov 17 14:59:22 2015 +1000

    Unref the libinput context on pre_init failure
    
    A device that fails pre_init has a ref to the libinput context but may not
    have a pInfo->private. For those devices we never call libinput_unref() and
    the libinput struct never gets freed.
    
    Thus if at least one device didn't pass pre_init, we never cleaned up after
    ourselves.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>

commit c53dde1a503ace84f755a2a8d0022fba48ad89c2
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Nov 13 10:48:02 2015 +1000

    Don't fail DEVICE_CLOSE
    
    We're not doing anything here, so no reason to fail.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit d7331f6e34cedde2a1b8159d58aec0f68796f180
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Nov 13 13:01:45 2015 +1000

    Remove unused server_fds list
    
    Obsolete as of 353c52f2bec03
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit fb56f6d7a5139445a36b3468ef7dc61d1c127335
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Nov 13 10:02:16 2015 +1000

    Set the device to NULL after unref
    
    No real effect in the current code, but it adds a bit of safety.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit c8861d2a2fd9ef875501a05b8c894045ce96ecc6
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Nov 12 10:02:38 2015 +1000

    Plug two memory leaks
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 44f4b2ed7075d424e3621f30815e11875b364c27
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Oct 27 17:08:59 2015 +1000

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

commit 0163482e22ad65ec51e3636cf31f9f39e29ff709
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Sep 3 18:03:00 2015 +1000

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

commit 80c356f58fed47080eb6fa5756a122dbe14e5f6f
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Sep 18 00:27:13 2015 +1000

    conf: install the libinput xorg.conf.d snippet
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 1645a79c343ea3cf8bbd71a36e9106b22e541c71
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Sep 18 00:28:36 2015 +1000

    conf: don't hook onto tablets and joysticks
    
    If we install the config file by default, we shouldn't use libinput for
    devices we know we can't handle.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit b7f8db12a3389affaa16c584e03d452624ea8bf8
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Sep 18 00:24:13 2015 +1000

    conf: rename 99-libinput.conf to 90-libinput.conf
    
    This way it still sorts after the usual subjects, but it's easier to stack
    extra config in afterwards.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 6abd341279ea54e7c0ce56b1a2ad310a496be2b5
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Sep 3 17:42:20 2015 +1000

    Fix invalid pointer passed to the properties
    
    Takes a void*, not a void**
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 19b42f242dddef7d6381b74b13930d6dd2734898
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Sep 3 17:33:40 2015 +1000

    Move the read-only properties into the same condition
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit f48b64c8cd6f280ba8c589842ec2522a4bfe9b5c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Aug 31 13:27:09 2015 +1000

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

commit b55239ef2552c43efd4c4fb7d39e22c255dd4e6d
Author: Yomi0 <abyomi0@gmail.com>
Date:   Sun Aug 30 23:14:25 2015 -0400

    Fix typo in libinput.man
    
    Correct typo. Draging to dragging.

commit 9563334dda3c5563550fb2534b228c47216ec008
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Aug 13 11:03:44 2015 +1000

    Use xf86OpenSerial instead of a direct open() call
    
    This will transparently handle server-side fds for us.
    
