[PATCH synaptics] Reanimate dead trackpad area while gesturing

Daniel Colascione dancol at dancol.org
Mon Oct 28 02:08:01 CET 2013


This patch changes the interpretation of the "dead area" described by 
the AreaXXXEdge parameters. Now, instead of ignoring all events from 
these areas, we ignore only gesture initiations. That is, tapping on a 
dead area does nothing, but tapping somewhere else and moving the 
pressed finger into the dead area makes the dead area temporarily live. 
This change makes it more practical to mark some areas of my clickpad as 
dead for spurious-motion-avoidance purpose.

So far, it works fine for me when I try movement, scrolling, and dragging.

Index: src/synaptics.c
===================================================================
--- src/synaptics.c	2013-10-27 17:29:59.700615305 -0700
+++ src/synaptics.c	2013-10-27 17:44:59.608587105 -0700
@@ -2829,6 +2829,11 @@

      inside_active_area = is_inside_active_area(priv, hw->x, hw->y);

+    /* if we're gesticulating, consider the whole trackpad to be the
+     * active area */
+    if (priv->tap_state != TS_START)
+        inside_active_area = TRUE;
+
      /* these two just update hw->left, right, etc. */
      update_hw_button_state(pInfo, hw, priv->old_hw_state, now, &delay);

@@ -2836,13 +2841,9 @@
         invalid are: x, y, z, numFingers, fingerWidth
         valid are: millis, left/right/middle/up/down/etc.
       */
-    if (!inside_active_area) {
+    if (!inside_active_area)
          reset_hw_state(hw);

-        /* FIXME: if finger accidentally moves into the area and doesn't
-         * really release, the finger should remain down. */
-    }
-
      /* no edge or finger detection outside of area */
      if (inside_active_area) {
          edge = edge_detection(priv, hw->x, hw->y);


More information about the xorg-devel mailing list