diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2015-03-13 09:47:10 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2015-03-13 09:47:14 -0400 |
commit | 62a6befde2f0d1860dbd17931c83ef0d1be44a1f (patch) | |
tree | 268d10d03e921cda35a0762def511e5167c23b1a /HID-multitouch-add-support-of-clickpads.patch | |
parent | bbf3f54706912de331ed2b7642263b58a18e0d6e (diff) | |
download | kernel-62a6befde2f0d1860dbd17931c83ef0d1be44a1f.tar.gz kernel-62a6befde2f0d1860dbd17931c83ef0d1be44a1f.tar.xz kernel-62a6befde2f0d1860dbd17931c83ef0d1be44a1f.zip |
Add patch to support clickpads (rhbz 1201532)
Diffstat (limited to 'HID-multitouch-add-support-of-clickpads.patch')
-rw-r--r-- | HID-multitouch-add-support-of-clickpads.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/HID-multitouch-add-support-of-clickpads.patch b/HID-multitouch-add-support-of-clickpads.patch new file mode 100644 index 000000000..97edb7dd6 --- /dev/null +++ b/HID-multitouch-add-support-of-clickpads.patch @@ -0,0 +1,50 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Fri, 6 Mar 2015 11:14:42 -0500 +Subject: [PATCH] HID: multitouch: add support of clickpads + +Touchpads that have only one button are called clickpads and should +be advertised as such by the kernel. + +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Tested-by: Jason Ekstrand <jason@jlekstrand.net> +--- + drivers/hid/hid-multitouch.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c +index f65e78b46999..ef06dc30b9b1 100644 +--- a/drivers/hid/hid-multitouch.c ++++ b/drivers/hid/hid-multitouch.c +@@ -116,6 +116,7 @@ struct mt_device { + __u8 touches_by_report; /* how many touches are present in one report: + * 1 means we should use a serial protocol + * > 1 means hybrid (multitouch) protocol */ ++ __u8 buttons_count; /* number of physical buttons per touchpad */ + bool serial_maybe; /* need to check for serial protocol */ + bool curvalid; /* is the current contact valid? */ + unsigned mt_flags; /* flags to pass to input-mt */ +@@ -379,6 +380,10 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi, + td->inputmode_value = MT_INPUTMODE_TOUCHPAD; + } + ++ /* count the buttons on touchpads */ ++ if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) ++ td->buttons_count++; ++ + if (usage->usage_index) + prev_usage = &field->usage[usage->usage_index - 1]; + +@@ -728,6 +733,10 @@ static void mt_touch_input_configured(struct hid_device *hdev, + if (cls->quirks & MT_QUIRK_NOT_SEEN_MEANS_UP) + td->mt_flags |= INPUT_MT_DROP_UNUSED; + ++ /* check for clickpads */ ++ if ((td->mt_flags & INPUT_MT_POINTER) && (td->buttons_count == 1)) ++ __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); ++ + input_mt_init_slots(input, td->maxcontacts, td->mt_flags); + + td->mt_flags = 0; +-- +2.1.0 + |