Hi all,

This is updated description of 1 and 2 finger gestures for both
touchscreens and touchpads that I emailed out a while ago.  Its to
serve multiple purposes.  1) get agreement on gestures to support and
how they should work. 2) proposal of permanent gesture names to
document in man pages. 3) It happens to be pseudo-code-ish for the
gesture patch I emailed out before this one to aid understanding it.

Chris

1) Single Finger Touch (left click):

Defined as user touching screen/pad with single finger and leaving
more then 200ms.

In Relative mode (touchpad), moves cursor using normal relative
behaviour (i.e. it doesn't support this mode).  No button press
occurs.

In Absolute mode (touchscreen), if finger stays down for longer then
200ms then a left button press occurs.  The 200ms is a debounce to
allow time to detect a two finger gesture on touch screens.

TODO: The 200ms is a place holder I'm using. It feels to long in my tests.

2) Single Finger Tap (left click):

Defined as user touching screen/pad with single finger for at least
200ms (to debounce 2 finger gestures) and removing again within 500ms.

In Absolute mode, the button press is initiated at 200ms boundary and
button release occurs when finger is removed.

In Relative mode, the button press and button release both occur when
finger is removed.  TODO: Synaptics driver supports a user
configurable delay value between press and release for this case to
allow visual feedback to occur on buttons.  Maybe we should support
this as well.

TODO: 500ms is also a place holder and is user provisionable but must
be greater then 200ms debounce timer.

3) Single Finger Double Tap (left double click):

Nothing special here.  We use Single Finger Tap logic and you'll get
double clicks as long as user taps fast.

TODO: When we support Tap-and-Lock gesture then we may need to do
something here.

4) Two Finger Touch (right click)

Defined as user touching screen/pad with two fingers and keeping them
there for at least 200ms.  We wait full 200ms to help not send button
presses for 2 finger motion based gestures cases (an additional
debounce).

In Relative mode, acts same as Single Finger Touch mode (it doesn't
support this mode).

In Absolute mode, at 200ms timer expire we see if user is moving
fingers to much.  If so send no button press and move to motion based
gesture logic.  If no motion detected then send right button press.

5) Two Finger Tap (right click)

Defined as user touching screen/pad with two fingers and removing
again within 500ms.  We decide 1 vs. 2 Finger Tap at end of 200ms
timer expire.

In Absolute mode, the right button press is initiated at 200ms
boundary and button release occurs when finger is removed.

In Relative mode, the right button press and button release both occur
when finger is removed.

After 500ms window, we stay in motion based gesture logic until user
removes fingers.  TODO: Absolute mode can do this at 200ms window.

6) Two Finger Double Tap (double right click)

Same logic as Single Finger Double Tap but with right button.

7) Two Finger Pinch Zoom

Zoom in is defined as placing 2 fingers on screen/pad far apart and
bringing together before lifting.  Zoom out is defined as placing
fingers on screen/pad close together and moving apart before lifting.

Detected by seeing 2 fingers down and moving (non-parallel motion)
more then fixed length in first 200ms.  If length is increasing, then
zooming out and will send Ctrl-Up.  If length is decreasing, then
zooming in and will send Ctrl-Down.  Need to support user changing
directions without lifting fingers.

TODO: Its best to support entering Zoom mode even if not moving
fingers at 200ms timer expire because initial pause is pretty normal
user behaviour.  But that means on touchscreens we need to release
button press when we enter mode.

8) Two Finger Scroll

Horizontal Scroll is defined as placing 2 fingers (parallel to each
other) on screen/pad and moving together horizontally.  Vertical
scroll is defined as placing 2 fingers on screen/pad and moving
together vertically.

Detected by seeing 2 fingers down and moving within a line of fixed
width together within first 200ms.  Sends scroll events as seen.

TODO: Its best to support entering Scroll mode even if not moving
fingers at 200ms timer expire because initial pause is pretty normal
user behaviour.  But that means on touchscreens we need to release
button press when we enter mode.

Chris

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to