commit e26fc3c66c04eb3d3164e6a9e7c983154fb00856
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Oct 15 09:36:36 2018 +1000

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

commit a759610292a53067fc811e70703bffff8dc0cb16
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Oct 4 11:45:46 2018 +1000

    Use the seat slot, not the device slot for touch events
    
    The device slot is per-device, so if we have more than one device we may get a
    touch down event for a slot already in use.
    
    Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/153
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 21ff2ca7d1a771f6dcecb5b73dc1031f77c9dd69
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Jul 19 15:58:06 2018 +1000

    Remove unused assignment
    
    dev is our list iterator below, this is a dead assignment
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit c67f191d5bc1a4a130f89743a3ce35ee06c90f85
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Jul 11 11:06:59 2018 +1000

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

commit 1978a2555b338e5177523046e6338f58a4253951
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Jul 11 10:59:20 2018 +1000

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

commit 0909a1a76546284f27fb1b17a6f545a04537cc36
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Jul 10 11:17:50 2018 +1000

    draglock: fix memory overwrite during draglock parsing
    
    Passing in the size of the array but using it as "number of elements" inside
    the function. Rename a bunch of arguments to avoid this.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=107166
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 20bb8d6b9f4375557472dad67b5f8dcf31be27d3
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed May 23 08:14:23 2018 +1000

    Revert "Implement the custom acceleration curve options"
    
    Custom pointer acceleration curves were reverted in libinput, so no point
    having this code here.
    
    This reverts commit d84e0035d12a9655c09a6e8c619b1144be42c90c.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 1e88664d958a000ac610ae9000459c461ba45bd8
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed May 2 13:59:00 2018 +1000

    Use the libinput touch count to init the right number of touches
    
    Initial version by Johannes Pointner <h4nn35.work@gmail.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit d84e0035d12a9655c09a6e8c619b1144be42c90c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Apr 17 13:51:53 2018 +1000

    Implement the custom acceleration curve options
    
    One new property, and the existing accel profile gets extended to keep one
    extra value. The new property libinput Accel Curve Points is a list of pairs
    of points to be added to the acceleration curve.
    
    libinput only supports adding points to the curve so we simply declare the
    behavior as undefined when the curve is set multiple times. Also helps to
    identify those that bother to read the man page before playing with random
    driver values.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 6c75acfcdf6539713c3b62bc2227a4b215d05fdb
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Apr 20 13:33:45 2018 +1000

    Use xf86SetStrOption to check for string options
    
    This one shows up in the log and marks it as used.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit eaf847be16de1399aa271b94e4421a3794447462
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Apr 17 15:10:42 2018 +1000

    man: whitespace fixes in man page
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit d319092d557ec0280602879b19ef1b0a825e1e75
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Apr 17 13:52:11 2018 +1000

    man: fix formatting issue caused by invalid tag
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 18cc042e6822f5f24d06291ead07ea70723f9434
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Apr 10 09:19:52 2018 +1000

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

commit 0db82219bb2ad10dcdf3ea8fe8e226858190c83b
Author: Evangelos Foutras <evangelos@foutrelis.com>
Date:   Thu Mar 22 01:47:07 2018 +0200

    Fix "left handed" property not set on all pointers
    
    Remove conditional that prevents the LIBINPUT_PROP_LEFT_HANDED{,DEFAULT}
    properties from being set on all pointer devices (only the first got it).
    This appears to be a debugging left-over accidentally merged in
    6d3bd4544a6a2f194fa.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=105667
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit f93bc148d4e6702d50ce320f6d519753c0af7c42
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Mar 20 11:23:57 2018 +1000

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

commit 0d4b50fd6e200cb8b720ee0b917b882d2d03542b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Mar 19 10:00:59 2018 +1000

    man: note that we don't do /dev/input/by-id or /dev/input/by-path
    
    For logind-setups we need to match the path libinput wants to open with the
    Option Device path that the device has so we know when to return the
    server-fd. This doesn't work for by-id or by-path because libinput resolves
    those (through udev) to the actual eventX node so our paths look different
    when they are the same device.
    
    This could be fixed but since this is easy enough to work around with a
    InputClass section and rather a niche case, it's not really worth the effort.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=105562
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Adam Jackson <ajax@redhat.com>

commit 9d9f59fd4c5a57e4663b19c3cace6f78202c4689
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Feb 2 13:54:32 2018 +1000

    Apply the capabilities checks on subdevices when applying the config
    
    Properties are initialized on the correct devices only but on resume we'd just
    blindly apply the config from our device. Depending on the resume order, this
    would mean we'd apply a previously set config with a default config.
    
    Example:
    * pointer device with keyboard subdevice
    * pointer device exports natural scrolling, keyboard device does not and
      remains at default (off)
    * client enables natural scrolling on the pointer device
    * VT switch away, VT switch back
    * pointer device gets enabled first, enables natural scrolling on the
      libinput device
    * keyboard device gets enabled second, resets to the default value
    
    Reported-by: Yuxuan Shui <yshuiv7@gmail.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Tested-by: Yuxuan Shui <yshuiv7@gmail.com>

commit 73534814909b8b6f4fce8f44b412b2903397bdb0
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Feb 2 13:24:43 2018 +1000

    Split LibinputDeviceApplyConfig into helper functions
    
    No functional changes

commit 6d3bd4544a6a2f194fa2ca7e08dca9cc44211e99
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Feb 2 13:27:11 2018 +1000

    Move the subdevice capabilities check into the properties
    
    87f9fe3a6fafe60134c6's intention was to not create properties that a subdevice
    doesn't have configuration options for (i.e. if you have a pointer+keyboard
    device, don't expose tapping configuration on the keyboard subdevice).
    
    The result was messy, the checker function had a confusing triple-negation and
    some properties weren't checked - e.g. left-handed was allowed for touch/tablet
    but not for pointer, dwt was allowed for any device.
    
    Fix this by moving the check into the property init function directly and
    inverting the helper function to be easier to read.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 2be6487de417473aac85ebd800392cdd8604c4a6
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Sep 15 11:26:54 2017 +1000

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

commit 6ce3d0249d426e6b3c83e7f86d76bb3145c00a74
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Jun 26 18:27:10 2017 +1000

    Post a motion event before a tablet button down
    
    Not all clients update the pointer position correctly from the button events
    (for historical reasons) so we need to send a motion event before the button
    event that represents a tip state change.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=101588
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 87f9fe3a6fafe60134c69419c0e551b9dbc112b7
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed May 24 08:42:02 2017 +1000

    Only initialize properties that match capabilities on a subdevice
    
    If a device is split into multiple subdevices, usually pointer+keyboard, we
    initialized properties matching the libinput device on both devices. This
    results in the keyboard having e.g. a Accel Speed or Left Handed settings even
    though it cannot send any events of that type.
    
    Filter by capabilities on the subdevice so we only get those properties that
    match the subdevice's capabilities.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=100900
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 0c657e0dcff4cff06a0d4cbea7dfac2a1d505cc3
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu May 18 14:02:52 2017 +1000

    Update copyright years
    
    because why not
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit ac3574958f90bdcac946d26519123d809998c33b
Author: Niklas Haas <git@haasn.xyz>
Date:   Mon May 15 03:13:43 2017 +0200

    man: add missing documentation for Accel Profile
    
    This seems to have been simply missing from 0163482e.
    
    cf. https://bugs.freedesktop.org/show_bug.cgi?id=101017
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

Notes (test-jelly):
    SUCCESS: jelly: make check Mon May 15 11:42:39 AEST 2017

commit 8772a593b45740f4429218648c9e3a305b3fe896
Author: Martin Kepplinger <martin.kepplinger@ginzinger.com>
Date:   Thu May 4 08:49:34 2017 +0200

    Fix config comment description to match the config
    
    Since the config matches on tablets too, update the describing comment
    accordingly.
    
    Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

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
