1. 21 May, 2020 1 commit
    • Peter Hutterer's avatar
      Deprecate wheel tilt as separate axis source · 4ff6d6e3
      Peter Hutterer authored
      This has never been supported through the stack. No device ever had the
      required MOUSE_WHEEL_TILT_VERTICAL/HORIZONTAL udev property set, so
      libinput never set the right axis source. Neither weston nor mutter
      added the code for it. Even if we added wheel tilt for devices now, it
      would break those devices. And the benefit we get from having those
      separate is miniscule at best.
      
      So let's do the long-term thing and just deprecate this axis source.
      
      The wheel tilt mouse test device remains in the test suite, with the
      udev properties set just to verify that we do indeed ignore those now.
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      4ff6d6e3
  2. 13 May, 2020 1 commit
    • Peter Hutterer's avatar
      evdev: warn if our event processing lags by 10ms or more · bd7b9106
      Peter Hutterer authored
      Take a snapshot of the time every 10 libinput_dispatch() calls. During event
      processing, check if the event timestamp is more than 10ms in the past and
      warn if it is. This should provide a warning to users when the compositor is
      too slow to processes events but events aren't coming in fast enough to
      trigger SYN_DROPPED.
      
      Because we check the device event time against the dispatch time we may get
      warnings for multiple devices on delayed processing. This is intended, it's
      good to know which devices were affected.
      
      In the test suite we need to ignore the warning though, since we compose the
      events in very specific ways it's common to exceed that threshold
      (particularly when calling litest_touch_move_to).
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      bd7b9106
  3. 22 Mar, 2020 1 commit
  4. 05 Mar, 2020 1 commit
  5. 04 Dec, 2019 1 commit
    • Peter Hutterer's avatar
      pad: add LIBINPUT_EVENT_TABLET_PAD_KEY for pad keys · 2d1bcf98
      Peter Hutterer authored
      The Wacom Cintiq 24HD and later tablets send specific key events for
      hardware/soft buttons. KEY_PROG1..KEY_PROG3 on earlier tablets,
      KEY_CONTROLPANEL, KEY_ONSCREEN_DISPLAY, and KEY_BUTTONCONFIG on later tablets.
      We ignore KEY_PROG1-3 because starting with kernel 5.4 older tablets will too
      use the better-named #defines.
      
      These differ from pad buttons as the key code in itself carries semantic
      information, so we should pass them on as-is instead of mapping them to
      meaningless 0-indexed buttons like we do on the other buttons.
      
      So let's add a new event, LIBINPUT_EVENT_TABLET_PAD_KEY and the associated
      functions to handle that case.
      
      Pad keys have a fixed hw-defined semantic meaning and are thus not part of
      a tablet mode group.
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      2d1bcf98
  6. 17 Oct, 2019 1 commit
    • Peter Hutterer's avatar
      Add a scroll button lock feature · 63f99230
      Peter Hutterer authored
      Scroll button locking is an accessibility feature. When enabled, the scroll
      button does not need to be held down, the first click holds it logically down,
      to be released on the second click of that same button.
      
      This is implemented as simple event filter, so we still get the same behavior
      from the emulated logical button, i.e. a physical double click results in a
      single logical click of that button provided no scrolling was triggered.
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      63f99230
  7. 30 Sep, 2019 1 commit
  8. 07 Jun, 2019 1 commit
    • Peter Hutterer's avatar
      Add a new dispatch interface for the Dell Canvas Totem · bf427762
      Peter Hutterer authored
      This device looks similar to a MT device on the kernel side, but it's not a
      MT device and it's not quite a tablet either. It uses slots to track up to 4
      totems off the same device and the only hint that it's not a MT device is that
      it sends ABS_MT_TOOL_TYPE / MT_TOOL_DIAL.
      
      udev thinks it's a touchscreen and a tablet but we currently init those
      devices as touchscreen (because all wacom tablet touch devices are udev
      tablets+tochscreens). So we need a quirk to hook onto this device.
      
      And we use a completely separate dispatch implementation, because adding the
      behavior to the tablet interface requires so many exceptions that it's easier
      to just add a separate dispatch interface.
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      bf427762
  9. 27 May, 2019 1 commit
    • Peter Hutterer's avatar
      tablet: lock the tablet rotation to the touchpad rotation · 7f4eb8ad
      Peter Hutterer authored
      Follow-up to 6229df18
      We must not rely on the caller to toggle the left-handed bits correctly since
      they may not know which devices belong together (despite device groups). Let's
      do the right thing here, if the touchpad is set to left-handed, rotate the
      tablet accordingly.
      
      Note that the left-handed setting of the touchpad is left as-is
      (right-handed). Until we have notifications about configuration changes, this
      is the best we can do.
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      7f4eb8ad
  10. 11 Feb, 2019 1 commit
  11. 31 Jan, 2019 2 commits
  12. 17 Jan, 2019 2 commits
  13. 20 Sep, 2018 2 commits
  14. 30 Aug, 2018 1 commit
    • Peter Hutterer's avatar
      touchpad: make tp_detect_jumps() time-independent · 7d0e1875
      Peter Hutterer authored
      This function expected distances per-frame, not per-time which gives us
      different behaviors depending on the hardware scanout rate. Fix this by
      normalizing to a 12ms frame rate which reflects the touchpad I measured all
      the existing thresholds on.
      
      This is a bit of a problem for the test suite which doesn't use proper
      intervals and the change to do so is rather invasive. So for now we set the
      interval for test devices to whatever the time delta is so we can test the
      jumps without having to worry about intervals.
      
      Fixes #121
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      7d0e1875
  15. 22 Aug, 2018 1 commit
    • Kim Lindberger's avatar
      Add quirk to control velocity averaging, disable it by default · 99334e11
      Kim Lindberger authored
      libinput applies averaging to the velocity of most pointer devices. Averaging
      the velocity makes the motion look smooth and may be of benefit to bad input
      devices. For good devices, however, it comes at the unfortunate price of
      decreased accuaracy.
      
      This change turns velocity averaging off by default (sets ntrackers to 2 instead
      of 16) and allows for it to be turned back on via a quirk, for bad devices which
      require it.
      99334e11
  16. 03 Aug, 2018 1 commit
  17. 16 Jul, 2018 1 commit
  18. 11 Jul, 2018 1 commit
  19. 31 May, 2018 1 commit
  20. 29 May, 2018 1 commit
  21. 17 May, 2018 1 commit
  22. 30 Apr, 2018 1 commit
  23. 26 Apr, 2018 1 commit
  24. 25 Apr, 2018 1 commit
  25. 20 Apr, 2018 1 commit
  26. 18 Apr, 2018 1 commit
  27. 12 Apr, 2018 1 commit
  28. 11 Apr, 2018 1 commit
  29. 09 Apr, 2018 1 commit
  30. 08 Mar, 2018 1 commit
    • Peter Hutterer's avatar
      Extract and reset the abs fuzz value for the x/y axes · 1523d8bb
      Peter Hutterer authored
      The kernel fuzz handling is buggy, especially when we want to rely on the fuzz
      value for our hysteresis. But since this is a hw property and (at least
      sometimes) set by the driver, we can't make this a pure libinput hwdb set
      either.
      
      So our workaround is:
      * extract the (non-zero) fuzz into a udev property so we don't lose it
      * set the fuzz to 0 to disable the in-kernel hysteresis
      * overwrite our internal absinfo with the property fuzz
      
      This way we get to use the hw-specified fuzz without having the kernel muck
      around with it. We also get to use the EVDEV_ABS_ values in 60-evdev.hwdb to
      override a driver-set fuzz.
      
      Two drawbacks:
      - we're resetting the kernel fuzz to 0, this affects any other users of the
        device node. That's probably a minor impact only.
      - we can only save this in a udev property there's a risk of this information
        getting lost when playing around with udev rules. That too should be a minor
        issue.
      
      https://bugs.freedesktop.org/show_bug.cgi?id=105303Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      1523d8bb
  31. 05 Mar, 2018 2 commits
  32. 21 Feb, 2018 1 commit
  33. 13 Feb, 2018 2 commits
  34. 06 Feb, 2018 1 commit
  35. 30 Nov, 2017 1 commit