[PATCH 0/2] Synaptics absolute coordinate motion event support

Joe Shaw joe at joeshaw.org
Tue Oct 12 07:19:21 PDT 2010


Hi Peter,

On Mon, Oct 11, 2010 at 9:11 PM, Joe Shaw <joe at joeshaw.org> wrote:
>> yes, I get x 0 and y <max> values in the same event that sets BTN_TOUCH
>> to 0. which indicates a bug in the synaptics driver, we should just ignore
>> that packet then.
>
> Ok, I will take a look at fixing that as well.  I think there is some
> similar code to deal with that in the evdev driver.

Attached a patch which discards motion events if the finger state is
FS_UNTOUCHED.

It would be the third patch in the series.

Thanks!
Joe
-------------- next part --------------
From 776a2c9773012e770080f65c32c6079de86cf974 Mon Sep 17 00:00:00 2001
From: Joe Shaw <joe at joeshaw.org>
Date: Tue, 12 Oct 2010 10:00:48 -0400
Subject: [PATCH] don't post motion events if the finger state is FS_UNTOUCHED

Works around some buggy touchpads that report their position as things
like 0,0; 0,ymax; etc. at the same time as they turn off the finger
tool and/or touch indication.  This is particularly a problem when
using the touchpad in absolute mode.

Signed-off-by: Joe Shaw <joe at joeshaw.org>
---
 src/synaptics.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index a4445e9..b490009 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -2453,10 +2453,12 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw)
     }
 
     /* Post events */
-    if (priv->absolute_events && inside_active_area) {
-        xf86PostMotionEvent(pInfo->dev, 1, 0, 2, hw->x, hw->y);
-    } else if (dx || dy) {
-        xf86PostMotionEvent(pInfo->dev, 0, 0, 2, dx, dy);
+    if (finger > FS_UNTOUCHED) {
+        if (priv->absolute_events && inside_active_area) {
+            xf86PostMotionEvent(pInfo->dev, 1, 0, 2, hw->x, hw->y);
+        } else if (dx || dy) {
+            xf86PostMotionEvent(pInfo->dev, 0, 0, 2, dx, dy);
+        }
     }
 
     if (priv->mid_emu_state == MBE_LEFT_CLICK)
-- 
1.7.3.1


More information about the xorg-devel mailing list