提交 05e882f8 编写于 作者: J Jeremy Huddleston 提交者: Dmitry Torokhov

Input: appletouch - improve finger detection

The appletouch driver is prone to reporting multiple fingers when only
one is pressing.  The appletouch driver queries an array of pressure
sensors and counts local maxima in pressure to determine the number of
fingers.  It just does this on the raw values, so a data stream like:

0 100 250 300 299 300 250 100 0

actually registers as 2 fingers.

This patch updates the logic to ignore small dips in pressure that are
less than the threshold.
Signed-off-by: NJeremy Huddleston <jeremyhu@freedesktop.org>
Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
上级 a8629528
...@@ -361,7 +361,7 @@ static int atp_calculate_abs(int *xy_sensors, int nb_sensors, int fact, ...@@ -361,7 +361,7 @@ static int atp_calculate_abs(int *xy_sensors, int nb_sensors, int fact,
(!is_increasing && xy_sensors[i - 1] < xy_sensors[i])) { (!is_increasing && xy_sensors[i - 1] < xy_sensors[i])) {
(*fingers)++; (*fingers)++;
is_increasing = 1; is_increasing = 1;
} else if (i > 0 && xy_sensors[i - 1] >= xy_sensors[i]) { } else if (i > 0 && (xy_sensors[i - 1] - xy_sensors[i] > threshold)) {
is_increasing = 0; is_increasing = 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册