diff --git a/doc/gestures.dox b/doc/gestures.dox index 8632b8e6..325c795b 100644 --- a/doc/gestures.dox +++ b/doc/gestures.dox @@ -104,4 +104,26 @@ software button area. libinput ignores fingers within the software button areas, the movement of the remaining fingers is thus interpreted as a two-finger scroll motion. +@section gestures_twofinger_touchpads Gestures on two-finger touchpads + +As of kernel 4.2, many @ref touchpads_touch_partial_mt provide only two +slots. This affects how gestures can be interpreted. Touchpads with only two +slots can identify two touches by position but can usually tell that there +is a third (or fourth) finger down on the touchpad - without providing +positional information for that finger. + +Touchpoints are assigned in sequential order and only the first two touch +points are trackable. For libinput this produces an ambiguity where it is +impossible to detect whether a gesture is a pinch gesture or a swipe gesture +whenever a user puts the index and middle finger down first. Since the third +finger does not have positional information, it's location cannot be +determined. + +@image html gesture-2fg-ambiguity.svg "Ambiguity of three-finger gestures on two-finger touchpads" + +The image above illustrates this ambiguity. The index and middle finger are +set down first, the data stream from both finger positions looks identical. +In this case, libinput assumes the fingers are in a horizontal arrangement +(the right image above) and use a swipe gesture. + */ diff --git a/doc/svg/gesture-2fg-ambiguity.svg b/doc/svg/gesture-2fg-ambiguity.svg new file mode 100644 index 00000000..e4996ca9 --- /dev/null +++ b/doc/svg/gesture-2fg-ambiguity.svg @@ -0,0 +1,496 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Touch 1 + + + Touch 2 + +