[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-input-synaptics: Changes to 'ubuntu'



 debian/changelog                                          |   14 +
 debian/patches/129_disable_three_touch_tap.patch          |   11 +
 debian/patches/200_fix_clickfinger_non-clickpads.patch    |   96 +++++++++++
 debian/patches/201_fix_clickfinger_clickpad_actions.patch |  115 ++++++++++++++
 debian/patches/series                                     |    5 
 5 files changed, 241 insertions(+)

New commits:
commit 809a6d8264878c8b3a5a7f01f46a4dfc9ab7fff0
Author: Chase Douglas <chase.douglas@canonical.com>
Date:   Wed Mar 21 16:00:38 2012 -0700

    releasing version 1.5.99.901-0ubuntu2

diff --git a/debian/changelog b/debian/changelog
index 01a26a2..c8d3d6e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xserver-xorg-input-synaptics (1.5.99.901-0ubuntu2) UNRELEASED; urgency=low
+xserver-xorg-input-synaptics (1.5.99.901-0ubuntu2) precise; urgency=low
 
   * Disable three touch tap in favor of uTouch gestures (LP: #961725)
     - See
@@ -10,7 +10,7 @@ xserver-xorg-input-synaptics (1.5.99.901-0ubuntu2) UNRELEASED; urgency=low
   * Fix click action finger count calculation (LP: #961738)
     - Add temporary patch 201_fix_clickfinger_clickpad_actions.patch
 
- -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 21 Mar 2012 15:53:15 -0700
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 21 Mar 2012 16:00:26 -0700
 
 xserver-xorg-input-synaptics (1.5.99.901-0ubuntu1) precise; urgency=low
 

commit 7eb637f7a447636de56987821e72e60110c3170c
Author: Chase Douglas <chase.douglas@canonical.com>
Date:   Wed Mar 21 15:54:15 2012 -0700

    Fix click action finger count calculation (LP: #961738)
    
    * Fix click action finger count calculation (LP: #961738)
      - Add temporary patch 201_fix_clickfinger_clickpad_actions.patch

diff --git a/debian/changelog b/debian/changelog
index dc6c14d..01a26a2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,8 +7,10 @@ xserver-xorg-input-synaptics (1.5.99.901-0ubuntu2) UNRELEASED; urgency=low
     - Add 129_disable_three_touch_tap.patch
   * Fix click actions for non-clickpad touchpads (LP: #960108)
     - Add temporary patch 200_fix_clickfinger_non-clickpads.patch
+  * Fix click action finger count calculation (LP: #961738)
+    - Add temporary patch 201_fix_clickfinger_clickpad_actions.patch
 
- -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 21 Mar 2012 15:46:35 -0700
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 21 Mar 2012 15:53:15 -0700
 
 xserver-xorg-input-synaptics (1.5.99.901-0ubuntu1) precise; urgency=low
 
diff --git a/debian/patches/201_fix_clickfinger_clickpad_actions.patch b/debian/patches/201_fix_clickfinger_clickpad_actions.patch
new file mode 100644
index 0000000..0d82a93
--- /dev/null
+++ b/debian/patches/201_fix_clickfinger_clickpad_actions.patch
@@ -0,0 +1,115 @@
+From 5201038f7d4a58f78d9bcbf340fb4a50958c6ab0 Mon Sep 17 00:00:00 2001
+From: Chase Douglas <chase.douglas@canonical.com>
+Date: Wed, 21 Mar 2012 12:43:58 -0700
+Subject: [PATCH 1/2] Keep track of which touch slots are open
+
+This change adds a new touch slot state that denotes when the slot is
+open but does not have any new data to report.
+
+Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
+---
+ src/eventcomm.c |    3 ++-
+ src/synproto.c  |   13 ++++++++++++-
+ src/synproto.h  |    1 +
+ 3 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/src/eventcomm.c b/src/eventcomm.c
+index f199c24..3721c91 100644
+--- a/src/eventcomm.c
++++ b/src/eventcomm.c
+@@ -557,7 +557,8 @@ EventProcessTouchEvent(InputInfoPtr pInfo, struct SynapticsHwState *hw,
+     {
+         int slot_index = last_mt_vals_slot(priv);
+ 
+-        if (hw->slot_state[slot_index] == SLOTSTATE_EMPTY)
++        if (hw->slot_state[slot_index] == SLOTSTATE_EMPTY ||
++            hw->slot_state[slot_index] == SLOTSTATE_OPEN_EMPTY)
+             hw->slot_state[slot_index] = SLOTSTATE_UPDATE;
+         if (ev->code == ABS_MT_TRACKING_ID)
+         {
+diff --git a/src/synproto.c b/src/synproto.c
+index bdf2d21..19a13e5 100644
+--- a/src/synproto.c
++++ b/src/synproto.c
+@@ -152,7 +152,18 @@ SynapticsResetTouchHwState(struct SynapticsHwState *hw)
+         for (j = 2; j < valuator_mask_num_valuators(hw->mt_mask[i]); j++)
+             valuator_mask_unset(hw->mt_mask[i], j);
+ 
+-        hw->slot_state[i] = SLOTSTATE_EMPTY;
++        switch (hw->slot_state[i])
++        {
++            case SLOTSTATE_OPEN:
++            case SLOTSTATE_OPEN_EMPTY:
++            case SLOTSTATE_UPDATE:
++                hw->slot_state[i] = SLOTSTATE_OPEN_EMPTY;
++                break;
++
++            default:
++                hw->slot_state[i] = SLOTSTATE_EMPTY;
++                break;
++        }
+     }
+ #endif
+ }
+diff --git a/src/synproto.h b/src/synproto.h
+index 95ebc92..e16aeb0 100644
+--- a/src/synproto.h
++++ b/src/synproto.h
+@@ -42,6 +42,7 @@ enum SynapticsSlotState
+     SLOTSTATE_EMPTY = 0,
+     SLOTSTATE_OPEN,
+     SLOTSTATE_CLOSE,
++    SLOTSTATE_OPEN_EMPTY,
+     SLOTSTATE_UPDATE,
+ };
+ 
+-- 
+1.7.9.1
+
+From c229afff677daef0e5960cf334b29f1a0af38fcf Mon Sep 17 00:00:00 2001
+From: Chase Douglas <chase.douglas@canonical.com>
+Date: Wed, 21 Mar 2012 12:45:09 -0700
+Subject: [PATCH 2/2] Include open but unchanged touches when guessing
+ clickfingers
+
+On a clickpad, when the button is pressed the clickfinger guessing will
+only work properly if all touches have new data to report. If a touch
+has not changed, then it will not be counted. This leads to inaccurate
+finger counts.
+
+This change ensures that all active touches are counted. Note that the X
+and Y valuators of active but unchanged touches are still valid.
+
+Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
+---
+ src/synaptics.c |    7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/synaptics.c b/src/synaptics.c
+index e22929b..3c5b12d 100644
+--- a/src/synaptics.c
++++ b/src/synaptics.c
+@@ -2600,8 +2600,8 @@ clickpad_guess_clickfingers(SynapticsPrivate *priv, struct SynapticsHwState *hw)
+     for (i = 0; i < hw->num_mt_mask - 1; i++) {
+         ValuatorMask *f1;
+ 
+-        /* you can't click on open, you're not fast enough */
+-        if (hw->slot_state[i] != SLOTSTATE_UPDATE)
++        if (hw->slot_state[i] == SLOTSTATE_EMPTY ||
++            hw->slot_state[i] == SLOTSTATE_CLOSE)
+             continue;
+ 
+         f1 = hw->mt_mask[i];
+@@ -2610,7 +2610,8 @@ clickpad_guess_clickfingers(SynapticsPrivate *priv, struct SynapticsHwState *hw)
+             ValuatorMask *f2;
+             double x1, x2, y1, y2;
+ 
+-            if (hw->slot_state[j] != SLOTSTATE_UPDATE)
++            if (hw->slot_state[j] == SLOTSTATE_EMPTY ||
++                hw->slot_state[j] == SLOTSTATE_CLOSE)
+                 continue;
+ 
+             f2 = hw->mt_mask[j];
+-- 
+1.7.9.1
+
diff --git a/debian/patches/series b/debian/patches/series
index bcb931a..52a4421 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -22,3 +22,4 @@
 
 # Temporary patches until they are merged upstream
 200_fix_clickfinger_non-clickpads.patch
+201_fix_clickfinger_clickpad_actions.patch

commit 5654fd6f514293439a1ec185dafd2af9889c9a15
Author: Chase Douglas <chase.douglas@canonical.com>
Date:   Wed Mar 21 15:47:44 2012 -0700

    Fix click actions for non-clickpad touchpads (LP: #960108)
    
    * Fix click actions for non-clickpad touchpads (LP: #960108)
      - Add temporary patch 200_fix_clickfinger_non-clickpads.patch

diff --git a/debian/changelog b/debian/changelog
index 87745c0..dc6c14d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,8 +5,10 @@ xserver-xorg-input-synaptics (1.5.99.901-0ubuntu2) UNRELEASED; urgency=low
       https://lists.ubuntu.com/archives/ubuntu-desktop/2012-February/003694.html
       for details.
     - Add 129_disable_three_touch_tap.patch
+  * Fix click actions for non-clickpad touchpads (LP: #960108)
+    - Add temporary patch 200_fix_clickfinger_non-clickpads.patch
 
- -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 21 Mar 2012 15:40:56 -0700
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 21 Mar 2012 15:46:35 -0700
 
 xserver-xorg-input-synaptics (1.5.99.901-0ubuntu1) precise; urgency=low
 
diff --git a/debian/patches/200_fix_clickfinger_non-clickpads.patch b/debian/patches/200_fix_clickfinger_non-clickpads.patch
new file mode 100644
index 0000000..67fbc93
--- /dev/null
+++ b/debian/patches/200_fix_clickfinger_non-clickpads.patch
@@ -0,0 +1,96 @@
+From 6b76e659ff3c18f6120e17ab77bcbd37bb518724 Mon Sep 17 00:00:00 2001
+From: Chase Douglas <chase.douglas@canonical.com>
+Date: Wed, 21 Mar 2012 12:50:46 -0700
+Subject: [PATCH 1/2] Fix clickfinger actions when middle button emulation is
+ enabled
+
+When MBE is enabled, a physical left button press is delayed until a
+timeout is reached. This results in the logical left button being
+depressed while the physical left button is pressed. The physical state
+is stored as the "old" hw state, and it is used for detecting a
+transition from depressed to pressed for clickfinger actions. Since the
+"old" hw state shows the left button pressed, but the current logical
+state shows the left button unpressed, when the MBE timeout fires and we
+set the logical left button pressed the transition check fails.
+
+Since the "old" hw state is only used for clickfinger left button press
+transitions, redefining it to hold the previous logical hw state is
+sufficient for fixing the bug and should not cause any regressions.
+
+Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
+---
+ src/synaptics.c    |    5 ++++-
+ src/synapticsstr.h |    2 +-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/synaptics.c b/src/synaptics.c
+index 489eeaa..9f214e5 100644
+--- a/src/synaptics.c
++++ b/src/synaptics.c
+@@ -1611,7 +1611,6 @@ ReadInput(InputInfoPtr pInfo)
+ 
+ 	SynapticsCopyHwState(priv->hwState, hw);
+ 	delay = HandleState(pInfo, hw, hw->millis, FALSE);
+-	SynapticsCopyHwState(priv->old_hw_state, priv->hwState);
+ 	newDelay = TRUE;
+     }
+ 
+@@ -3236,6 +3235,10 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
+     /* generate a history of the absolute positions */
+     if (inside_active_area)
+ 	store_history(priv, hw->x, hw->y, hw->millis);
++
++    /* Save logical state for transition comparisons */
++    SynapticsCopyHwState(priv->old_hw_state, hw);
++
+     return delay;
+ }
+ 
+diff --git a/src/synapticsstr.h b/src/synapticsstr.h
+index fcefc46..55aab3d 100644
+--- a/src/synapticsstr.h
++++ b/src/synapticsstr.h
+@@ -196,7 +196,7 @@ struct _SynapticsPrivateRec
+     void *proto_data;			/* protocol-specific data */
+ 
+     struct SynapticsHwState *hwState;
+-    struct SynapticsHwState *old_hw_state; /* previous hw state */
++    struct SynapticsHwState *old_hw_state; /* previous logical hw state */
+ 
+     const char *device;			/* device node */
+     Bool shm_config;			/* True when shared memory area allocated */
+-- 
+1.7.9.1
+
+From 6b4561955b745c634df3dfef3e27a614beb64528 Mon Sep 17 00:00:00 2001
+From: Chase Douglas <chase.douglas@canonical.com>
+Date: Wed, 21 Mar 2012 12:52:00 -0700
+Subject: [PATCH 2/2] Fix clickfinger actions when buttons other than 1 are
+ reported
+
+The "old" logical state now holds the clickfinger action button. In
+order to check for proper clickpad press transition, we need to check if
+any of the left, middle, and right logical button states are pressed.
+
+Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
+---
+ src/synaptics.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/src/synaptics.c b/src/synaptics.c
+index 9f214e5..e22929b 100644
+--- a/src/synaptics.c
++++ b/src/synaptics.c
+@@ -2779,7 +2779,8 @@ update_hw_button_state(const InputInfoPtr pInfo, struct SynapticsHwState *hw,
+     /* Fingers emulate other buttons. ClickFinger can only be
+        triggered on transition, when left is pressed
+      */
+-    if(hw->left && !old->left && hw->numFingers >= 1) {
++    if(hw->left && !old->left && !old->middle && !old->right &&
++       hw->numFingers >= 1) {
+         handle_clickfinger(priv, hw);
+     }
+ 
+-- 
+1.7.9.1
+
diff --git a/debian/patches/series b/debian/patches/series
index 063c319..bcb931a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -19,3 +19,6 @@
 126_ubuntu_xi22.patch
 128_disable_three_click_action.patch
 129_disable_three_touch_tap.patch
+
+# Temporary patches until they are merged upstream
+200_fix_clickfinger_non-clickpads.patch

commit ed3f94499b6a679c11964c7f01b2aaed8aba98ac
Author: Chase Douglas <chase.douglas@canonical.com>
Date:   Wed Mar 21 15:43:07 2012 -0700

    Disable three touch tap in favor of uTouch gestures (LP: #961725)
    
    * Disable three touch tap in favor of uTouch gestures (LP: #961725)
      - See
        https://lists.ubuntu.com/archives/ubuntu-desktop/2012-February/003694.html
        for details.
      - Add 129_disable_three_touch_tap.patch

diff --git a/debian/changelog b/debian/changelog
index 3f4f36b..87745c0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+xserver-xorg-input-synaptics (1.5.99.901-0ubuntu2) UNRELEASED; urgency=low
+
+  * Disable three touch tap in favor of uTouch gestures (LP: #961725)
+    - See
+      https://lists.ubuntu.com/archives/ubuntu-desktop/2012-February/003694.html
+      for details.
+    - Add 129_disable_three_touch_tap.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 21 Mar 2012 15:40:56 -0700
+
 xserver-xorg-input-synaptics (1.5.99.901-0ubuntu1) precise; urgency=low
 
   * New upstream release
diff --git a/debian/patches/129_disable_three_touch_tap.patch b/debian/patches/129_disable_three_touch_tap.patch
new file mode 100644
index 0000000..2c69473
--- /dev/null
+++ b/debian/patches/129_disable_three_touch_tap.patch
@@ -0,0 +1,11 @@
+--- a/src/synaptics.c
++++ b/src/synaptics.c
+@@ -633,7 +633,7 @@ static void set_default_parameters(Input
+     /* Enable tap */
+     tapButton1 = 1;
+     tapButton2 = 2;
+-    tapButton3 = 3;
++    tapButton3 = 0; /* Disabled by default so three-touch gestures work */
+ 
+     /* Enable multifinger-click if only have one physical button,
+        otherwise clickFinger is always button 1. */
diff --git a/debian/patches/series b/debian/patches/series
index 8468d55..063c319 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -18,3 +18,4 @@
 125_option_rec_revert.patch
 126_ubuntu_xi22.patch
 128_disable_three_click_action.patch
+129_disable_three_touch_tap.patch


Reply to: