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.doug...@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.doug...@ubuntu.com> Wed, 21 Mar 2012 15:53:15 -0700 + -- Chase Douglas <chase.doug...@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.doug...@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.doug...@ubuntu.com> Wed, 21 Mar 2012 15:46:35 -0700 + -- Chase Douglas <chase.doug...@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.doug...@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.doug...@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.doug...@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.doug...@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.doug...@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.doug...@ubuntu.com> Wed, 21 Mar 2012 15:40:56 -0700 + -- Chase Douglas <chase.doug...@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.doug...@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.doug...@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.doug...@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.doug...@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.doug...@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.doug...@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 -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1sb8gc-0007ug...@vasks.debian.org