| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Fixes the bug that stopped tapped clicks from working when two thumbs
were detected, by initializing the thumb variable for every new state.
Signed-off-by: Dennis Jarosch <dennis.jarosch@gmx.de>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
Fixes the bug that flooded the X server with button events, by
initializing the Gestures struct before handling taps.
Signed-off-by: Dennis Jarosch <dennis.jarosch@gmx.de>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
The Magic Trackpad does not report both touch and width of a finger,
making thumb/palm detection less reliable. Approximate thumb detection
as a large oval object, restoring some of the thumb functionality.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
The current lack of configuration possibilities makes it reasonable to
turn tapping on by default, if nothing else for discoverability
reasons. Turn turn off, just change the value in src/memory.c.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
Grabbing the device has some historic virtues, but to simplify
experimentation with devices and multitouch data, turn the device
grabbing of by default.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
| |
Recently, a set of kernel drivers were updated to align the
reported touch size with actual physical size. Consequently,
the thumb detection, which contains an absolute size component,
needs to be updated. Remedied with this patch.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
The magic trackpad has an integrated button. This patch detects
the integrated button which enables the special logic for those devices.
Signed-off-by: Henrik Rydberg <rydberg@bitmath.org>
|
|
|
|
|
|
| |
The non-blocking example is more interesting in the X applications.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
This patch puts the reading code more in line with the upcoming
mtdev library, and should remove some spurious input behavior.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
The tapping was not properly turned off by the parameter, resulting
in spurious clicks when typing. This patch moves the tapping parameter
logic to memory.c, which fixes the problem.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
This patch adds tap-to-click, tap-and-hold for dragging, two-finger
and three-finger taps. Turned on by default for touch screens only;
switch on in gestures.c.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
The mtdev queue api functions had wrong names. This patch changes
them to the familiar put and get.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
| |
Sliding a thumb along the upper edge of the pad results in
spurious pointer motion. This patch increases the delays before
moving close to the pad edges, and increase the relaxation time
after a thumb detection, reducing the effect somewhat.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Add a parameter to control whether the underlying device
should be grabbed or not. Default to yes.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
This patch makes the switch, from using hwdata and the associated
type A parser, to using mtdev and the associated type B parser.
A command-line gesture test program is included.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Use the bitmask_t for all bitfields, to simplify future expansions
to larger bit fields.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Use the generated abs2mt mapping to simplify the MT device
capabilities.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
| |
Move all headers into include, separate source files into modules
match, mtdev, src and driver, move some common definitions to
common.h, and include define support for the MT slot protocol.
This patch does not introduce any logical changes.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
The current code does not allow ABI_XINPUT versions above 7,
although the relevant parts are still good. This patch makes
all new versions behave as version 7, until proven otherwise.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
Moving two fingers around a center point will trigger the gesture.
This patch computes the rotation gesture and maps it to mouse buttons
14 and 15.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
Moving two fingers apart or closer together will trigger the gesture.
This patch computes the scaling gesture and maps it to mouse buttons
12 and 13.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
In particular for trackpads with integrated button, freezing the mouse
movement while clicking is important for pointer precision. This
patch holds the movement while clicking, obtaining the desired effect.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
Disable motion gestures whenever one of the pointing fingers is a
thumb. Movement is skipped rather than held, minimizing unpredictable
movement after thumb release.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Robust thumb detection is essential for more advanced gestures, thumbs
being responsible for many false positives. One major feature of the
thumb is that its shape is oval, regardless of applied pressure. An
index finger pressed hard against the surface also turns oval, but the
touch/width ratio then increases significantly. This suggests that it
is possible to uniquely identify a resting thumb as a finger with oval
shape and normal touch/with ratio.
This patch adds detection of resting thumbs to the MTFinger structure.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Add the bitmasks "fingers" and "added" to parsor memory, and extend
time handling to use a hold time and a forget time.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
Split the gesture code into a lexical part, which updates the filtered
motion state, and a parsing part, which translates the motion state to
gestures.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
| |
Switch from the FingerData structure to the MTFinger structure, making
room for more computed finger details in MTState.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
| |
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
In preparation of adding several additional finger bit registers,
remove the redundant bit-counting variables and introduce fast
bit-traversal functions instead.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
|
|
|
|
|
|
|
|
| |
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>
|