[PATCH synaptics 2/2] Add a delay between the second button down-up event of double taps

Gabriele Mazzotta gabriele.mzt at gmail.com
Thu Jan 15 13:04:17 PST 2015


Some applications ignore the second tap of double taps because of the
lack of a delay between the button down and button up events.

Prevent this by replacing the transition from TS_2B to TS_START with a
transition from TS_2B to TS_SINGLETAP that emits only a button down
event. The button up event will be emitted when transitioning from
TS_SINGLETAP to TS_START.

In addition, decrease the default value of MaxDoubleTapTime from 180 ms
to 100 ms in order to make double taps faster.

Signed-off-by: Gabriele Mazzotta <gabriele.mzt at gmail.com>
---
 docs/tapndrag.dia  | 171 ++++++++++++++++++++++++++---------------------------
 src/synaptics.c    |  27 ++-------
 src/synapticsstr.h |   1 -
 3 files changed, 90 insertions(+), 109 deletions(-)

diff --git a/docs/tapndrag.dia b/docs/tapndrag.dia
index 27b2239..0e91873 100644
--- a/docs/tapndrag.dia
+++ b/docs/tapndrag.dia
@@ -458,7 +458,7 @@
       </dia:attribute>
       <dia:connections>
         <dia:connection handle="0" to="O1" connection="6"/>
-        <dia:connection handle="1" to="O35" connection="1"/>
+        <dia:connection handle="1" to="O34" connection="1"/>
       </dia:connections>
     </dia:object>
     <dia:object type="Standard - Line" version="0" id="O8">
@@ -578,37 +578,6 @@
     </dia:object>
     <dia:object type="Standard - BezierLine" version="0" id="O12">
       <dia:attribute name="obj_pos">
-        <dia:point val="4.29223,19.8814"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="0.617308,7.22332;10.3763,19.9508"/>
-      </dia:attribute>
-      <dia:attribute name="bez_points">
-        <dia:point val="4.29223,19.8814"/>
-        <dia:point val="-3.17884,14.883"/>
-        <dia:point val="1.95138,8.18572"/>
-        <dia:point val="10.3763,7.64119"/>
-      </dia:attribute>
-      <dia:attribute name="corner_types">
-        <dia:enum val="0"/>
-        <dia:enum val="0"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow">
-        <dia:enum val="1"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow_length">
-        <dia:real val="0.80000000000000004"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow_width">
-        <dia:real val="0.80000000000000004"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O2" connection="0"/>
-        <dia:connection handle="3" to="O0" connection="3"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - BezierLine" version="0" id="O13">
-      <dia:attribute name="obj_pos">
         <dia:point val="10.3763,27.743"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
@@ -638,7 +607,7 @@
         <dia:connection handle="3" to="O2" connection="5"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="UML - Note" version="0" id="O14">
+    <dia:object type="UML - Note" version="0" id="O13">
       <dia:attribute name="obj_pos">
         <dia:point val="1.84118,30.7912"/>
       </dia:attribute>
@@ -701,7 +670,7 @@ TDG: Tap-and-drag gesture enabled#</dia:string>
         </dia:composite>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O15">
+    <dia:object type="Standard - Text" version="1" id="O14">
       <dia:attribute name="obj_pos">
         <dia:point val="11.23,10.8357"/>
       </dia:attribute>
@@ -734,7 +703,7 @@ TDG: Tap-and-drag gesture enabled#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O16">
+    <dia:object type="Standard - Text" version="1" id="O15">
       <dia:attribute name="obj_pos">
         <dia:point val="8.4912,23.1912"/>
       </dia:attribute>
@@ -768,7 +737,7 @@ TDG: Tap-and-drag gesture enabled#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O17">
+    <dia:object type="Standard - Text" version="1" id="O16">
       <dia:attribute name="obj_pos">
         <dia:point val="17.0662,11.0357"/>
       </dia:attribute>
@@ -801,7 +770,7 @@ TDG: Tap-and-drag gesture enabled#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O18">
+    <dia:object type="Standard - Line" version="0" id="O17">
       <dia:attribute name="obj_pos">
         <dia:point val="13.6263,27.743"/>
       </dia:attribute>
@@ -829,7 +798,7 @@ TDG: Tap-and-drag gesture enabled#</dia:string>
         <dia:connection handle="1" to="O5" connection="3"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O19">
+    <dia:object type="Standard - Text" version="1" id="O18">
       <dia:attribute name="obj_pos">
         <dia:point val="12.9069,17.2258"/>
       </dia:attribute>
@@ -862,7 +831,7 @@ TDG: Tap-and-drag gesture enabled#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O20">
+    <dia:object type="Standard - Text" version="1" id="O19">
       <dia:attribute name="obj_pos">
         <dia:point val="5.32686,26.1857"/>
       </dia:attribute>
@@ -896,7 +865,7 @@ TDG: Tap-and-drag gesture enabled#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O21">
+    <dia:object type="Standard - Text" version="1" id="O20">
       <dia:attribute name="obj_pos">
         <dia:point val="16.3912,13.6912"/>
       </dia:attribute>
@@ -929,7 +898,7 @@ TDG: Tap-and-drag gesture enabled#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O22">
+    <dia:object type="Standard - Text" version="1" id="O21">
       <dia:attribute name="obj_pos">
         <dia:point val="16.1,28.5375"/>
       </dia:attribute>
@@ -963,18 +932,18 @@ and TDG#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O23">
+    <dia:object type="Standard - Text" version="1" id="O22">
       <dia:attribute name="obj_pos">
-        <dia:point val="1.24118,9.9412"/>
+        <dia:point val="4.54118,17.5412"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="0.27868,9.4087;2.20368,10.9337"/>
+        <dia:rectangle val="3.96368,17.0087;5.11868,18.5337"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
           <dia:attribute name="string">
             <dia:string>#TO3
-[D,U]#</dia:string>
+[D]#</dia:string>
           </dia:attribute>
           <dia:attribute name="font">
             <dia:font family="courier new" style="0" name="Courier"/>
@@ -983,7 +952,7 @@ and TDG#</dia:string>
             <dia:real val="0.80000000000000004"/>
           </dia:attribute>
           <dia:attribute name="pos">
-            <dia:point val="1.24118,9.9412"/>
+            <dia:point val="4.54118,17.5412"/>
           </dia:attribute>
           <dia:attribute name="color">
             <dia:color val="#000000"/>
@@ -997,7 +966,7 @@ and TDG#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O24">
+    <dia:object type="Standard - Text" version="1" id="O23">
       <dia:attribute name="obj_pos">
         <dia:point val="24.4912,17.8412"/>
       </dia:attribute>
@@ -1031,7 +1000,7 @@ and TDG#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="UML - Usecase" version="0" id="O25">
+    <dia:object type="UML - Usecase" version="0" id="O24">
       <dia:attribute name="obj_pos">
         <dia:point val="19.7687,32.4912"/>
       </dia:attribute>
@@ -1088,7 +1057,7 @@ and TDG#</dia:string>
         </dia:composite>
       </dia:attribute>
     </dia:object>
-    <dia:object type="UML - Usecase" version="0" id="O26">
+    <dia:object type="UML - Usecase" version="0" id="O25">
       <dia:attribute name="obj_pos">
         <dia:point val="19.7687,38.0412"/>
       </dia:attribute>
@@ -1145,7 +1114,7 @@ and TDG#</dia:string>
         </dia:composite>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O27">
+    <dia:object type="Standard - Line" version="0" id="O26">
       <dia:attribute name="obj_pos">
         <dia:point val="21.3937,28.743"/>
       </dia:attribute>
@@ -1170,10 +1139,10 @@ and TDG#</dia:string>
       </dia:attribute>
       <dia:connections>
         <dia:connection handle="0" to="O5" connection="6"/>
-        <dia:connection handle="1" to="O25" connection="1"/>
+        <dia:connection handle="1" to="O24" connection="1"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O28">
+    <dia:object type="Standard - Line" version="0" id="O27">
       <dia:attribute name="obj_pos">
         <dia:point val="21.3937,34.4912"/>
       </dia:attribute>
@@ -1197,11 +1166,11 @@ and TDG#</dia:string>
         <dia:real val="0.80000000000000004"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O25" connection="6"/>
-        <dia:connection handle="1" to="O26" connection="1"/>
+        <dia:connection handle="0" to="O24" connection="6"/>
+        <dia:connection handle="1" to="O25" connection="1"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O29">
+    <dia:object type="Standard - Text" version="1" id="O28">
       <dia:attribute name="obj_pos">
         <dia:point val="20.15,30.7875"/>
       </dia:attribute>
@@ -1234,7 +1203,7 @@ and TDG#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O30">
+    <dia:object type="Standard - Text" version="1" id="O29">
       <dia:attribute name="obj_pos">
         <dia:point val="20.7108,36.3412"/>
       </dia:attribute>
@@ -1267,7 +1236,7 @@ and TDG#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O31">
+    <dia:object type="Standard - Text" version="1" id="O30">
       <dia:attribute name="obj_pos">
         <dia:point val="16.7608,32.1912"/>
       </dia:attribute>
@@ -1302,7 +1271,7 @@ M#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - BezierLine" version="0" id="O32">
+    <dia:object type="Standard - BezierLine" version="0" id="O31">
       <dia:attribute name="obj_pos">
         <dia:point val="20.2447,38.3341"/>
       </dia:attribute>
@@ -1329,11 +1298,11 @@ M#</dia:string>
         <dia:real val="0.80000000000000004"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O26" connection="0"/>
+        <dia:connection handle="0" to="O25" connection="0"/>
         <dia:connection handle="3" to="O5" connection="5"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - BezierLine" version="0" id="O33">
+    <dia:object type="Standard - BezierLine" version="0" id="O32">
       <dia:attribute name="obj_pos">
         <dia:point val="23.0187,39.0412"/>
       </dia:attribute>
@@ -1360,11 +1329,11 @@ M#</dia:string>
         <dia:real val="0.80000000000000004"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O26" connection="4"/>
+        <dia:connection handle="0" to="O25" connection="4"/>
         <dia:connection handle="3" to="O0" connection="1"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O34">
+    <dia:object type="Standard - Text" version="1" id="O33">
       <dia:attribute name="obj_pos">
         <dia:point val="31.1912,22.9412"/>
       </dia:attribute>
@@ -1398,7 +1367,7 @@ M#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="UML - Usecase" version="0" id="O35">
+    <dia:object type="UML - Usecase" version="0" id="O34">
       <dia:attribute name="obj_pos">
         <dia:point val="10.3763,19.6385"/>
       </dia:attribute>
@@ -1455,7 +1424,7 @@ M#</dia:string>
         </dia:composite>
       </dia:attribute>
     </dia:object>
-    <dia:object type="UML - Usecase" version="0" id="O36">
+    <dia:object type="UML - Usecase" version="0" id="O35">
       <dia:attribute name="obj_pos">
         <dia:point val="3.36628,12.7652"/>
       </dia:attribute>
@@ -1513,12 +1482,12 @@ Tap#</dia:string>
         </dia:composite>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O37">
+    <dia:object type="Standard - Text" version="1" id="O36">
       <dia:attribute name="obj_pos">
-        <dia:point val="8.11628,16.7357"/>
+        <dia:point val="9.61628,16.9857"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="7.53878,16.1851;8.7119,17.7645"/>
+        <dia:rectangle val="9.03878,16.4532;10.1938,17.9782"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -1533,7 +1502,7 @@ Tap#</dia:string>
             <dia:real val="0.80000000000000004"/>
           </dia:attribute>
           <dia:attribute name="pos">
-            <dia:point val="8.11628,16.7357"/>
+            <dia:point val="9.61628,16.9857"/>
           </dia:attribute>
           <dia:attribute name="color">
             <dia:color val="#000000"/>
@@ -1547,7 +1516,7 @@ Tap#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O38">
+    <dia:object type="Standard - Line" version="0" id="O37">
       <dia:attribute name="obj_pos">
         <dia:point val="12.0013,21.6385"/>
       </dia:attribute>
@@ -1571,11 +1540,11 @@ Tap#</dia:string>
         <dia:real val="0.80000000000000004"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O35" connection="6"/>
+        <dia:connection handle="0" to="O34" connection="6"/>
         <dia:connection handle="1" to="O3" connection="1"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O39">
+    <dia:object type="Standard - Text" version="1" id="O38">
       <dia:attribute name="obj_pos">
         <dia:point val="13.2364,23.2857"/>
       </dia:attribute>
@@ -1609,7 +1578,7 @@ Tap#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O40">
+    <dia:object type="Standard - Line" version="0" id="O39">
       <dia:attribute name="obj_pos">
         <dia:point val="5.44128,12.7652"/>
       </dia:attribute>
@@ -1633,11 +1602,11 @@ Tap#</dia:string>
         <dia:real val="0.80000000000000004"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O36" connection="1"/>
+        <dia:connection handle="0" to="O35" connection="1"/>
         <dia:connection handle="1" to="O0" connection="5"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O41">
+    <dia:object type="Standard - Text" version="1" id="O40">
       <dia:attribute name="obj_pos">
         <dia:point val="7.37686,9.76072"/>
       </dia:attribute>
@@ -1671,7 +1640,7 @@ Tap#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O42">
+    <dia:object type="Standard - Line" version="0" id="O41">
       <dia:attribute name="obj_pos">
         <dia:point val="7.51628,14.1485"/>
       </dia:attribute>
@@ -1695,11 +1664,11 @@ Tap#</dia:string>
         <dia:real val="0.80000000000000004"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O36" connection="4"/>
+        <dia:connection handle="0" to="O35" connection="4"/>
         <dia:connection handle="1" to="O1" connection="3"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O43">
+    <dia:object type="Standard - Text" version="1" id="O42">
       <dia:attribute name="obj_pos">
         <dia:point val="8.77686,12.9857"/>
       </dia:attribute>
@@ -1733,16 +1702,16 @@ Tap#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Arc" version="0" id="O44">
+    <dia:object type="Standard - Arc" version="0" id="O43">
       <dia:attribute name="obj_pos">
         <dia:point val="10.3763,20.6385"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="5.38433,15.4795;10.447,20.7092"/>
+        <dia:rectangle val="6.86308,15.0734;10.4452,20.7074"/>
       </dia:attribute>
       <dia:attribute name="conn_endpoints">
         <dia:point val="10.3763,20.6385"/>
-        <dia:point val="5.45503,15.5502"/>
+        <dia:point val="6.932,15.1423"/>
       </dia:attribute>
       <dia:attribute name="curve_distance">
         <dia:real val="0.01"/>
@@ -1757,11 +1726,11 @@ Tap#</dia:string>
         <dia:real val="0.80000000000000004"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O35" connection="3"/>
-        <dia:connection handle="1" to="O36" connection="6"/>
+        <dia:connection handle="0" to="O34" connection="3"/>
+        <dia:connection handle="1" to="O35" connection="7"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - BezierLine" version="0" id="O45">
+    <dia:object type="Standard - BezierLine" version="0" id="O44">
       <dia:attribute name="obj_pos">
         <dia:point val="22.5427,32.7841"/>
       </dia:attribute>
@@ -1788,11 +1757,11 @@ Tap#</dia:string>
         <dia:real val="0.80000000000000004"/>
       </dia:attribute>
       <dia:connections>
-        <dia:connection handle="0" to="O25" connection="2"/>
+        <dia:connection handle="0" to="O24" connection="2"/>
         <dia:connection handle="3" to="O0" connection="2"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O46">
+    <dia:object type="Standard - Text" version="1" id="O45">
       <dia:attribute name="obj_pos">
         <dia:point val="26.2,27.525"/>
       </dia:attribute>
@@ -1825,7 +1794,7 @@ Tap#</dia:string>
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
-    <dia:object type="Standard - Arc" version="0" id="O47">
+    <dia:object type="Standard - Arc" version="0" id="O46">
       <dia:attribute name="obj_pos">
         <dia:point val="13.1503,27.0359"/>
       </dia:attribute>
@@ -1856,7 +1825,7 @@ Tap#</dia:string>
         <dia:connection handle="1" to="O1" connection="7"/>
       </dia:connections>
     </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O48">
+    <dia:object type="Standard - Text" version="1" id="O47">
       <dia:attribute name="obj_pos">
         <dia:point val="19.8272,20.6239"/>
       </dia:attribute>
@@ -1891,5 +1860,33 @@ and !TDG
         <dia:enum val="3"/>
       </dia:attribute>
     </dia:object>
+    <dia:object type="Standard - Line" version="0" id="O48">
+      <dia:attribute name="obj_pos">
+        <dia:point val="5.44128,19.5885"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="4.97124,15.4384;5.93303,19.6387"/>
+      </dia:attribute>
+      <dia:attribute name="conn_endpoints">
+        <dia:point val="5.44128,19.5885"/>
+        <dia:point val="5.45503,15.5502"/>
+      </dia:attribute>
+      <dia:attribute name="numcp">
+        <dia:int val="1"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow">
+        <dia:enum val="1"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow_length">
+        <dia:real val="0.79999999999999993"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow_width">
+        <dia:real val="0.79999999999999993"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O2" connection="1"/>
+        <dia:connection handle="1" to="O35" connection="6"/>
+      </dia:connections>
+    </dia:object>
   </dia:layer>
 </dia:diagram>
diff --git a/src/synaptics.c b/src/synaptics.c
index e6a90f2..955b042 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -671,7 +671,7 @@ set_default_parameters(InputInfoPtr pInfo)
     pars->finger_high = xf86SetIntOption(opts, "FingerHigh", fingerHigh);
     pars->tap_time = xf86SetIntOption(opts, "MaxTapTime", 180);
     pars->tap_move = xf86SetIntOption(opts, "MaxTapMove", tapMove);
-    pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 180);
+    pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 100);
     pars->click_time = xf86SetIntOption(opts, "ClickTime", 100);
     pars->clickpad = xf86SetBoolOption(opts, "ClickPad", pars->clickpad);       /* Probed */
     if (pars->clickpad)
@@ -2066,13 +2066,10 @@ HandleTapProcessing(SynapticsPrivate * priv, struct SynapticsHwState *hw,
             SetTapState(priv, TS_SINGLETAP, now);
         break;
     case TS_2B:
-        if (touch) {
+        if (touch)
             SetTapState(priv, TS_3, now);
-        }
-        else if (is_timeout) {
-            SetTapState(priv, TS_START, now);
-            priv->tap_button_state = TBS_BUTTON_DOWN_UP;
-        }
+        else if (is_timeout)
+            SetTapState(priv, TS_SINGLETAP, now);
         break;
     case TS_SINGLETAP:
         if (touch)
@@ -3244,20 +3241,8 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
                (hw->down ? 0x10 : 0) |
                (hw->multi[2] ? 0x20 : 0) | (hw->multi[3] ? 0x40 : 0));
 
-    if (priv->tap_button > 0) {
-        int tap_mask = 1 << (priv->tap_button - 1);
-
-        if (priv->tap_button_state == TBS_BUTTON_DOWN_UP) {
-            if (tap_mask != (priv->lastButtons & tap_mask)) {
-                xf86PostButtonEvent(pInfo->dev, FALSE, priv->tap_button, TRUE,
-                                    0, 0);
-                priv->lastButtons |= tap_mask;
-            }
-            priv->tap_button_state = TBS_BUTTON_UP;
-        }
-        if (priv->tap_button_state == TBS_BUTTON_DOWN)
-            buttons |= tap_mask;
-    }
+    if (priv->tap_button > 0 && priv->tap_button_state == TBS_BUTTON_DOWN)
+        buttons |= 1 << (priv->tap_button - 1);
 
     /* Post events */
     if (finger >= FS_TOUCHED && (dx || dy) && !ignore_motion)
diff --git a/src/synapticsstr.h b/src/synapticsstr.h
index a17e39b..f8ab14e 100644
--- a/src/synapticsstr.h
+++ b/src/synapticsstr.h
@@ -137,7 +137,6 @@ enum TapState {
 enum TapButtonState {
     TBS_BUTTON_UP,              /* "Virtual tap button" is up */
     TBS_BUTTON_DOWN,            /* "Virtual tap button" is down */
-    TBS_BUTTON_DOWN_UP          /* Send button down event + set up state */
 };
 
 enum TouchpadModel {
-- 
2.1.4



More information about the xorg-devel mailing list