linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] appletouch: Improved finger detection
@ 2009-05-05 19:10 Jeremy Huddleston
  2009-05-08  2:59 ` Dmitry Torokhov
  0 siblings, 1 reply; 5+ messages in thread
From: Jeremy Huddleston @ 2009-05-05 19:10 UTC (permalink / raw)
  To: linux-input

[-- Attachment #1: Type: text/plain, Size: 1077 bytes --]

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: Jeremy Huddleston <jeremyhu@freedesktop.org>

diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/ 
appletouch.c
index 454b961..9bb42f6 100644
--- a/drivers/input/mouse/appletouch.c
+++ b/drivers/input/mouse/appletouch.c
@@ -349,7 +349,7 @@ static int atp_calculate_abs(int *xy_sensors, int  
nb_sensors, int fact,
  		    (!is_increasing && xy_sensors[i - 1] < xy_sensors[i])) {
  			(*fingers)++;
  			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;
  		}



[-- Attachment #2: appletouch.patch --]
[-- Type: application/octet-stream, Size: 1058 bytes --]

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: Jeremy Huddleston <jeremyhu@freedesktop.org>

diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/appletouch.c
index 454b961..9bb42f6 100644
--- a/drivers/input/mouse/appletouch.c
+++ b/drivers/input/mouse/appletouch.c
@@ -349,7 +349,7 @@ static int atp_calculate_abs(int *xy_sensors, int nb_sensors, int fact,
 		    (!is_increasing && xy_sensors[i - 1] < xy_sensors[i])) {
 			(*fingers)++;
 			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;
 		}
 

[-- Attachment #3: Type: text/plain, Size: 1 bytes --]



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-06-02 13:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-05 19:10 [PATCH] appletouch: Improved finger detection Jeremy Huddleston
2009-05-08  2:59 ` Dmitry Torokhov
2009-05-08  6:13   ` Jeremy Huddleston
2009-06-01  7:35   ` Jeremy Huddleston
2009-06-02 11:29     ` Dmitry Torokhov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).