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