aboutsummaryrefslogtreecommitdiffstats
path: root/src/capabilities.c
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-04-18 09:10:36 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-04-18 09:58:49 +0200
commit182d9419ded03262166514e3c76033a8daa14141 (patch)
tree3265ebe907591793ee73c0186be3e0d810716722 /src/capabilities.c
parent923754e3b864c33e23725435ae5049354a8ac5aa (diff)
downloadxorg-input-kobomultitouch-182d9419ded03262166514e3c76033a8daa14141.tar.gz
xorg-input-kobomultitouch-182d9419ded03262166514e3c76033a8daa14141.tar.bz2
xorg-input-kobomultitouch-182d9419ded03262166514e3c76033a8daa14141.zip
Filter non-zero finger width events
Add filtering also to touch/width events, but be careful to treat a zero touch exactly as zero. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/capabilities.c')
-rw-r--r--src/capabilities.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/capabilities.c b/src/capabilities.c
index 1f555f9..7f3b34d 100644
--- a/src/capabilities.c
+++ b/src/capabilities.c
@@ -29,6 +29,7 @@
#define CLICK_AREA(c) ((c->has_ibt ? 0.20 : 0.00) * get_cap_ysize(c))
static const int SN_COORD = 250; /* coordinate signal-to-noise ratio */
+static const int SN_WIDTH = 15; /* width signal-to-noise ratio */
static const int bits_per_long = 8 * sizeof(long);
@@ -103,6 +104,9 @@ int read_capabilities(struct Capabilities *cap, int fd)
cap->xfuzz = get_cap_xsize(cap) / SN_COORD;
cap->yfuzz = get_cap_ysize(cap) / SN_COORD;
}
+ cap->wfuzz = cap->abs_touch_major.fuzz;
+ if (cap->wfuzz <= 0)
+ cap->wfuzz = get_cap_wsize(cap) / SN_WIDTH;
cap->yclick = cap->abs_position_y.maximum - CLICK_AREA(cap);
@@ -119,6 +123,11 @@ int get_cap_ysize(const struct Capabilities *cap)
return cap->abs_position_y.maximum - cap->abs_position_y.minimum;
}
+int get_cap_wsize(const struct Capabilities *cap)
+{
+ return cap->abs_touch_major.maximum - cap->abs_touch_major.minimum;
+}
+
void output_capabilities(const struct Capabilities *cap)
{
char line[1024];