summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChase Douglas <chase.douglas@canonical.com>2012-02-09 10:57:00 -0800
committerChase Douglas <chase.douglas@canonical.com>2012-02-11 18:53:28 +0100
commit92a46012d59b425d9b28e53e6e6faa7856ab4b08 (patch)
tree3a922f647a0201e58cc06144762e99d73ae2117a
parent01d6f4603ef41a12b53b7ba352dec3404664f0f9 (diff)
Enable clickpad click and drag with two fingers
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r--src/synaptics.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/synaptics.c b/src/synaptics.c
index 45c5289..d840aa4 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -1898,10 +1898,13 @@ HandleTapProcessing(SynapticsPrivate *priv, struct SynapticsHwState *hw,
hw->left = 0;
break;
case TS_CLICKPAD_MOVE:
+ if (hw->numFingers > 1)
+ hw->numFingers--;
SetMovingState(priv, MS_TOUCHPAD_RELATIVE, now);
if (!hw->left && !hw->right && !hw->middle) {
SetMovingState(priv, MS_FALSE, now);
SetTapState(priv, TS_MOVE, now);
+ priv->count_packet_finger = 0;
}
break;
}
@@ -2786,6 +2789,14 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
if (para->touchpad_off == 1)
return delay;
+ /* If a physical button is pressed on a clickpad, use cumulative touch
+ * movements for motion */
+ if (para->clickpad && (hw->left || hw->right || hw->middle))
+ {
+ hw->x = hw->cumulative_dx;
+ hw->y = hw->cumulative_dy;
+ }
+
/* apply hysteresis before doing anything serious. This cancels
* out a lot of noise which might surface in strange phenomena
* like flicker in scrolling or noise motion. */