| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
The current signal-to-noise ratio for the touch size is much too low,
making the pointer feel too insensitive. This patch increases the
ratio from 15 to 100.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
| |
The current implementation will emit additional multi-finger click
events if, for instance, one finger is removed before releasing the
button. This patch makes sure logical buttons events are only emitted
as a result of a real button event.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
| |
Some devices send button events through a separate device, causing the
driver to temporarily lose the MT state. As a result, spurious button
events are emitted in conjunction with multi-finger clicks.
This patch makes sure that the MT state is updated only after
receiving MT data, restoring click normality.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Add filtering also to touch/width events, but be careful to treat a zero
touch exactly as zero.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
In the current implementation this patch has no effect, but with
any change to the logic, it will. Add the lines missing in order
to loop over pointing fingers.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The fingers going away are important in the matching algorithm,
to correctly detect new fingers when placed close to a finger
in the process of leaving the surface. However, once a no-touch
has been confirmed, the tracking id should not be reused, should
a new finger appear close to the removal point.
This patch clears the tracking id of all removed or no-touch state
fingers, thereby reducing accidental jumps on touch to a minimum.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This bug has been around since before alpha1, and yet the topic
of commit c7ed4c, prior to alpha1, was about precisely this; With
the bug, the last tracking id will sometimes be continued with a
new touch, resulting in a cursor jump.
This patch correctly sets zero fingers in HWData after receiving
a zero-finger event.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
| |
When scrolling, the current code remembers how close the movement is
to emitting a scroll button, in order to produce a continuous stepping
motion. However, when the finger configuration on the trackpad
changes, this state should start over again, or the next scolling
gesture may scroll prematurely. This patch resets the scrolling state
when a change is detected, which fixes the problem.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
| |
This patch simplifies and unifies the means by which finger
configuration changes are detected. The logic is almost the same,
except for the unlikely case of very quickly switching the clicking
finger, after first having moved it above the clicking area. This case
should now properly be detected as a pointing finger.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
| |
This bug crept in during the transition of the movement code from
position differencing to delta accumulation. If briefly touching the
trackpad in motion, then placing the finger calmly at another point, a
jittery motion would occur. Fixed with this patch.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
| |
|
|
|
|
|
|
| |
Output parsing memory values, switched off by default.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current code determines the moving, scrolling and swiping gestures
based on the number of fingers on the trackpad, including the resting
fingers at the bottom of the pad. With information about all fingers
at hand, it is possible to determine which fingers on the trackpad are
participating in a moving gesture. This patch computes the movement
based on the pointing fingers only, and uses that number to determine
the type of moving gesture.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Multi-finger clicks and taps are goverened by the number of pointing
fingers on the trackpad. This number can be different from the actual
number of fingers on the trackpad. For instance, a finger resting at
the bottom of an integrated button, or a finger that accidentally
touches the pad during a press, are not pointing fingers. This patch
introduces extract_pointers(), which computes the number of pointing
fingers on the trackpad, and uses that number to determine the logical
button state.
[rydberg@euromail.se: various cleanups]
Signed-off-by: Arturo Castro <arturo@openframeworks.cc>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
The trackpads with integrated button have a dedicated clicking area
at the bottom of the pad. This patch adds the position of the onset
of the clicking area to capabilities.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
| |
The new Apple unibody macbooks have a trackpad with an integrated
button, which needs special treatment. This patch tests the device
for an integrated button and keeps the result in the capabilities
struture.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Add information about the device name and device identifier from the
EVIO protocol.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Define three-finger vertical and horizontal scroll as vertical and
horizontal swipe gestures.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
| |
Define four additional buttons to be used for swiping gestures.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
| |
Move the duplicated scrolling code to a function.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
| |
With this patch, finger motion is divided into two phases; one attack
phase where fingers are added to the trackpad, and one decay phase, where
fingers leave the trackpad. The decay delay is set considerably larger
than the attack delay. The prime effect is to ignore accidental pointer
movement right after a two-finger scroll.
Signed-off-by: Arturo Castro <arturo@openframeworks.cc>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
| |
The current code responds to finger movement immediately after
a finger has been placed on the trackpad, even if the touch is
accidental. This patch delays the effect of the finger by 70 ms,
resulting in fewer accidental movements.
Signed-off-by: Arturo Castro <arturo@openframeworks.cc>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
| |
The kernel filtering is bypassed for MT events. This patch reintroduces
filtering at the earliest possible point, right after the fingers have
been identified. For drivers that do not set proper fuzz parameters,
sensible values are derived based on a generic signal-to-noise ratio.
The defuzz code is borrowed from the Linux kernel, thanks GPL.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
| |
The button extraction currently modifies the MTState buttons,
upsetting the semantics in a bad way. This patch adds the logical
button state to the Memory structure, and uses it to compute the
logical button change.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
| |
The current code would extract movement from a rapid change
from one finger to the next, resulting in unwanted jumps. This
patch first checks that the finger configuration is the same
before attempting to extract movement.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Break out extraction of movement, buttons and type. Only code
traversal, no logical changes.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
| |
Add the Memory structure to hold the multitouch parsing state.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
The fingers are currently sorted in tracking id order, for no
good reason. This patch removes the sorting.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The HWState keeps, for good reason, both touching fingers and fingers
going away. However, this implies that additional logic is needed to
keep track of the number of actual touching fingers. In particular
the test for touching fingers is somewhat misplaced in hwstate.c.
Moreover, HWState should only exist in one instance, since it contains
data which does not need to be referred to during gesture extraction.
This patch introduces the MTState structure, which keeps more digested
data for gesture extraction. In particular, it only keeps the actual
touches.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Rename the hardware state struct State to HWState, to make
room for additional state structures.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
| |
The horizontal three-finger swipe is currently defined
in the opposite direction to what is considered normal.
This patch reverses the order of the emitted buttons,
restoring normality.
Signed-off-by: Arturo Castro <arturo@openframeworks.cc>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
The SYN_REPORT event time is equal to the time when the collective
event was produced in the kernel driver, and thus better represents
the actual device timings than the current arrival time.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is (obviously, from the recent commit flaws) a need to keep
a volatile branch for collaboration, to allow for digested commits
in master. The next branch will rebase occasionally, so one cannot
rely on commit ids from that branch.
This patch corrects the commit mistake for the third time, to never
change that line again.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
| |
|
|
|
|
|
|
|
|
|
| |
The recent patch sequence got slightly contaminated with versions
of abs15() by mistake. On top of it all, the one committed did the
wrong thing. This patch corrects abs15() to do simple clamping of
values outside the allowed range.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
Expand the (x, y) notion of the current hardware events to
the more useful (x, y, t) notion. This patch was inspired
by a gesture patch from Arturo Castro <arturo@openframeworks.cc>.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
| |
The latest semantic clarifications in the kernel MT protocol allow
SYN_MT_REPORT to be sent without actually sending any finger data. Add
a mask to the hardware data so that the data actually read can be
tracked.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
The kernel MT api was recently updated to include the ABS_MT_PRESSURE event.
This patch adds it to the hardware structure.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
In order to reduce the requirements on the cpu environment running
the matcher, the floating-point operations are converted to integer.
Care is taken as to not overflow the distance matrix.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
| |
Make the matcher support up to 32 fingers instead of the current 16.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
The capability names are rather lengthy; this patch adds convenience
functions for the dimension capabilities.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
| |
|
|
|
|
|
|
| |
With this commit, the whole code base complies with the
kernel format style, and patches can be checked against
the kernel-provided ./scripts/checkpatch.pl
|
| |
|
|
|
|
| |
Janitory changes only.
|
|
|
|
|
| |
Make better use of the bit representation, reducing one
layer of conversion.
|