Find a file
Peter Hutterer 41de1b0e1a Terminate all stopped/changed touches during SYN_DROPPED in the first frame
The previous event processing had subtle issues with touches stopping during
SYN_DROPPED. All of the device state was processed in the same frame, but if
any touch changed tracking ID during SYN_DROPPED, an inserted SYN_REPORT
resulted in a weird split of events:
- the first frame had all key/sw/abs updates including those slots that
  changed tracking ID, but not the ones that were fully terminated.
- the second frame had only the slots states for newly started touches **and**
  the slot state for touches terminated during SYN_DROPPED but not restarted.

In other words, where three fingers were on the touchpad and slot 0 was lifted
and put down again and slot 1 was lifted but *not* put down again, our frames
contained:
- frame 1: terminate slot 0, BTN_TOOL_TRIPLETAP 0, BTN_TOOL_DOUBLETAP 1
- frame 2: start slot 0, terminate slot 1

Where there was no touch changing tracking ID, only one frame was generated.
The BTN_TOOL updates were buggy, they may not match the number of fingers down
as seen on a frame-by-frame basis. This triggered libinput bug
https://gitlab.freedesktop.org/libinput/libinput/issues/422

This patch changes the above example to
- frame 1: terminate slot 0, terminate slot 1
- frame 2: start slot 0, BTN_TOOL_TRIPLETAP 0, BTN_TOOL_DOUBLETAP 1

Notably, the first frame no longer contains the BTN_TOOL bits. This patch is
one of two, the BTN_TOOL sync bits are part of a follow-up patch.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2020-02-19 11:06:28 +10:00
.gitlab-ci gitlab CI: hook up qemu 2020-02-19 08:49:02 +10:00
doc doc: fix distcheck 2019-06-05 11:15:15 +10:00
include/linux include: sync event codes with kernel 5.2 2019-08-26 14:33:19 +10:00
libevdev Terminate all stopped/changed touches during SYN_DROPPED in the first frame 2020-02-19 11:06:28 +10:00
m4 m4: fix CC_CHECK_WERROR and CC_FLAG_VISIBILITY macros 2014-06-05 15:16:06 +10:00
test meson.build: hook up the static symbols leak test 2020-02-19 08:34:55 +10:00
tools tools: fix the include path for local includes 2020-02-17 17:42:32 +10:00
.gitignore Add some more files to gitignore 2015-11-10 13:07:10 +10:00
.gitlab-ci.yml gitlab CI: hook up qemu 2020-02-19 08:49:02 +10:00
autogen.sh autogen: add default patch prefix 2017-01-26 14:25:02 +10:00
configure.ac meson.build: fix some whitespace, put reminder comment in 2020-02-18 19:21:35 +10:00
COPYING Update COPYING file. 2013-11-15 09:30:10 +10:00
libevdev.pc.in Fix name and version in pkgconfig file 2013-07-24 07:27:17 +10:00
Makefile.am Add support for the meson build system 2020-02-17 17:42:32 +10:00
meson.build meson.build: hook up the static symbols leak test 2020-02-19 08:34:55 +10:00
meson_options.txt Add support for the meson build system 2020-02-17 17:42:32 +10:00
README.md Change all URLs to gitlab.fdo 2018-06-06 18:20:11 +10:00

libevdev - wrapper library for evdev input devices

libevdev is a wrapper library for evdev devices. it moves the common tasks when dealing with evdev devices into a library and provides a library interface to the callers, thus avoiding erroneous ioctls, etc.

git@gitlab.freedesktop.org:libevdev/libevdev.git https://gitlab.freedesktop.org/libevdev/libevdev.git

The eventual goal is that libevdev wraps all ioctls available to evdev devices, thus making direct access unnecessary.

Go here for the API documentation: http://www.freedesktop.org/software/libevdev/doc/latest/

File bugs in the freedesktop.org GitLab instance: https://gitlab.freedesktop.org/libevdev/libevdev/issues/

Patches, questions and general comments should be submitted to the input-tools@lists.freedesktop.org mailing list: http://lists.freedesktop.org/mailman/listinfo/input-tools