diff options
Diffstat (limited to 'Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch')
-rw-r--r-- | Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch | 44 |
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 + |