[PATCH libinput 0/4] Per device button/key counting

Jonas Ådahl jadahl at gmail.com
Sun Jul 27 14:28:27 PDT 2014


These 4 patch patches replaces 7 and 8 from the previous series.

This series brings in, as suggested in the review, the bit mask
operations for long's from libevdev, but uses them only for ignoring
initial release events. For auto release a byte array for counting button
presses is used. By counting presses even per device, we can, as in 4/4
easily decouple the tap FSM from physical separate key presses without
queueing multiple pressed events. This enables a tap-drag to continue
without interruption by pressing the equivalent physical button and then
by motion events continue dragging.

It could probably be made so that clickpads also have this behavior when
having enabled tapping as well, more or less by removing the
TAP_EVENT_BUTTON event from the tap FSM, but I'm not sure what is
expected on such a device.


Jonas Ådahl (4):
  evdev: Ignore key/button release events if key was never pressed
  evdev: Keep track of button/key press count per device
  evdev: Release still pressed keys/buttons when removing device
  touchpad: Only break out of tap FSM for clickpad button presses

 doc/touchpad-tap-state-machine.svg | 1134 ++++++++++++++++++------------------
 src/evdev-mt-touchpad-buttons.c    |   30 +-
 src/evdev-mt-touchpad-tap.c        |   13 +-
 src/evdev.c                        |  129 +++-
 src/evdev.h                        |   15 +
 src/libinput-util.h                |   29 +
 test/keyboard.c                    |  168 ++++++
 test/pointer.c                     |   90 +++
 test/touchpad.c                    |   40 +-
 9 files changed, 1054 insertions(+), 594 deletions(-)


More information about the wayland-devel mailing list