aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Four finger swipes in multitouchDaniel Landau2011-03-251-0/+4
| | | | | | | | I think four finger swipes are useful, attached is a very simple patch enabling that. Signed-off-by: Daniel Landau <daniel.landau@helsinki.fi> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Add missing thumb reset at state extractionDennis Jarosch2011-02-131-0/+1
| | | | | | | | 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>
* Fix event flood in tap handlingDennis Jarosch2011-02-131-0/+1
| | | | | | | | 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>
* Support palm detection for trackpads without width supportHenrik Rydberg2010-10-161-3/+7
| | | | | | | | 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>
* Turn tapping on by defaultHenrik Rydberg2010-10-161-1/+1
| | | | | | | | 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>
* Do not grab by defaultHenrik Rydberg2010-10-161-1/+1
| | | | | | | | 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>
* Adjust thumb detection based on kernel touch width alignmentHenrik Rydberg2010-10-161-2/+2
| | | | | | | | | 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>
* Enable integrated button support for the Magic TrackpadHenrik Rydberg2010-10-161-0/+4
| | | | | | | 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>
* Use a non-blocking example instead of blockingHenrik Rydberg2010-10-121-2/+2
| | | | | | The non-blocking example is more interesting in the X applications. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Improve error handling in mtouch open and closeHenrik Rydberg2010-10-121-6/+17
| | | | Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Only check delayed gestures when queue is emptyHenrik Rydberg2010-10-121-1/+3
| | | | Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Same version, but using the mtdev library.Henrik Rydberg2010-10-126-46/+203
| | | | Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Simplify event readingHenrik Rydberg2010-06-213-27/+33
| | | | | | | 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>
* Move tapping parameter to memory.cHenrik Rydberg2010-06-172-5/+4
| | | | | | | | 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>
* Add tapping logicHenrik Rydberg2010-06-164-0/+139
| | | | | | | | 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>
* Correct mtdev API namesHenrik Rydberg2010-06-162-2/+2
| | | | | | | 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>
* Increase stability against thumb and edge touchesHenrik Rydberg2010-06-162-2/+2
| | | | | | | | | 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>
* Control grabbing by parameterHenrik Rydberg2010-06-161-6/+14
| | | | | | | 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>
* refactor: Replace hwdata by mtdevHenrik Rydberg2010-06-166-143/+182
| | | | | | | | 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>
* refactor: Use the bitmask_t typeHenrik Rydberg2010-06-162-2/+2
| | | | | | | Use the bitmask_t for all bitfields, to simplify future expansions to larger bit fields. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* refactor: Simplify capabilitiesHenrik Rydberg2010-06-163-17/+23
| | | | | | | Use the generated abs2mt mapping to simplify the MT device capabilities. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* refactor: Move filesHenrik Rydberg2010-06-1615-1309/+2
| | | | | | | | | | 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>
* Allow ABI_XINPUT versions greater than 7Henrik Rydberg2010-05-171-1/+1
| | | | | | | | 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>
* Add rotation gestureHenrik Rydberg2010-05-144-6/+28
| | | | | | | | 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>
* Add scale gestureHenrik Rydberg2010-05-144-5/+49
| | | | | | | | 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>
* Hold movement while clickingHenrik Rydberg2010-05-141-1/+5
| | | | | | | | 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 with resting thumbsHenrik Rydberg2010-05-143-5/+20
| | | | | | | | 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>
* Add resting thumb detection to MTFingerHenrik Rydberg2010-05-142-1/+27
| | | | | | | | | | | | | | 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>
* Refactor parsor memory usageHenrik Rydberg2010-05-144-70/+112
| | | | | | | 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>
* janitor: Split gesture code into memory refresh and parseHenrik Rydberg2010-05-144-135/+226
| | | | | | | | 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>
* Add convenience methods for distance to capability center pointHenrik Rydberg2010-05-143-0/+27
| | | | Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Introduce MTFinger structureHenrik Rydberg2010-05-143-11/+27
| | | | | | | 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>
* janitor: Move min/max and dist functions up to common.hHenrik Rydberg2010-05-144-19/+24
| | | | Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Simplify bit bookkeepingHenrik Rydberg2010-05-145-21/+43
| | | | | | | | 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>
* Increase touch/width signal-to-noise ratioHenrik Rydberg2010-04-191-1/+1
| | | | | | | | 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>
* Only emit multi-finger button events for real button eventsHenrik Rydberg2010-04-181-3/+7
| | | | | | | | | 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>
* Hold MT data during pure button eventsHenrik Rydberg2010-04-182-2/+8
| | | | | | | | | | | 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>
* Filter non-zero finger width eventsHenrik Rydberg2010-04-183-4/+24
| | | | | | | 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>
* Make all movement computations work on pointing subsetHenrik Rydberg2010-04-181-0/+2
| | | | | | | | 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>
* Do not reuse tracking ids after a no-touch eventHenrik Rydberg2010-04-181-2/+11
| | | | | | | | | | | | | 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>
* Correctly report zero fingersHenrik Rydberg2010-04-181-1/+2
| | | | | | | | | | | | 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>
* Reset scroll state on finger configuration changeHenrik Rydberg2010-04-151-0/+6
| | | | | | | | | | | 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>
* Unify detection of finger configuration changesHenrik Rydberg2010-04-152-14/+18
| | | | | | | | | | 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>
* Reset accumulated movement at finger configuration changeHenrik Rydberg2010-04-151-0/+2
| | | | | | | | | 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>
* janitor: Use more common row/column namesHenrik Rydberg2010-04-151-10/+10
| | | | Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Add memory debug convenience routinesHenrik Rydberg2010-04-153-0/+16
| | | | | | Output parsing memory values, switched off by default. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
* Extract moving fingersHenrik Rydberg2010-04-152-19/+57
| | | | | | | | | | | | 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>
* Extract pointing fingersArturo Castro2010-04-152-3/+44
| | | | | | | | | | | | | | | 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>
* Add constant clicking area to capabilitiesHenrik Rydberg2010-04-152-0/+5
| | | | | | | | 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>
* Add integrated button property to capabilitiesHenrik Rydberg2010-04-152-1/+11
| | | | | | | | | 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>