summaryrefslogtreecommitdiffstats
path: root/Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch')
-rw-r--r--Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch b/Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch
new file mode 100644
index 000000000..bfc5ae68a
--- /dev/null
+++ b/Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch
@@ -0,0 +1,44 @@
+From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Date: Sun, 8 Mar 2015 22:34:50 -0700
+Subject: [PATCH] Input: synaptics - remove TOPBUTTONPAD property for Lenovos
+ 2015
+
+The 2015 series of the Lenovo thinkpads added back the hardware buttons on
+top of the touchpad for the trackstick.
+
+Unfortunately, Lenovo used the PNPIDs that are supposed to be "5 buttons"
+touchpads, so the new laptops also have the INPUT_PROP_TOPBUTTONPAD. Yay!
+
+Instead of manually removing each of the new ones, or hoping that we know
+all the current ones, we can consider that the PNPIDs list that were given
+contains touchpads that have the trackstick buttons, either physically
+wired to them, or emulated with the top software button property.
+
+Thanks to the extra buttons capability in query $10, we can reliably detect
+the physical buttons from the software ones, and so we can remove the
+TOPBUTTONPAD property even if it was declared as such.
+
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Acked-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+---
+ drivers/input/mouse/synaptics.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
+index 83099eb8cf86..eec73e8f1f06 100644
+--- a/drivers/input/mouse/synaptics.c
++++ b/drivers/input/mouse/synaptics.c
+@@ -1206,7 +1206,8 @@ static void set_input_params(struct psmouse *psmouse,
+
+ if (SYN_CAP_CLICKPAD(priv->ext_cap_0c)) {
+ __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
+- if (psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids))
++ if (psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) &&
++ !SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10))
+ __set_bit(INPUT_PROP_TOPBUTTONPAD, dev->propbit);
+ /* Clickpads report only left button */
+ __clear_bit(BTN_RIGHT, dev->keybit);
+--
+2.1.0
+