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: