aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>2016-11-25 05:08:10 -0500
committerJiri Kosina <jkosina@suse.cz>2016-11-28 08:37:00 -0500
commit594312b88b0f451912c964c7ff2c0eaa71ad41b4 (patch)
tree5077bd911ada5d1204169407fb6b31af995587db
parente2b6535d47ce223e327de053b804d2e572a98bbc (diff)
HID: multitouch: handle external buttons for Precision Touchpads
According to https://msdn.microsoft.com/en-us/library/windows/hardware/mt604195(v=vs.85).aspx external buttons have some weird usage mapping: - Button 2 Indicates Button State for external button for primary (default left) clicking. - Button 3 Indicates Button State for external button for secondary (default right) clicking. So in the current state, the buttons are mapped to right and middle. Move the usage by one to correctly map the external buttons. Tested-by: Chris Chiu <chiu@endlessm.com> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r--drivers/hid/hid-multitouch.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index fb6f1f447279..a65a4c5894a5 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -567,6 +567,14 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
567 567
568 case HID_UP_BUTTON: 568 case HID_UP_BUTTON:
569 code = BTN_MOUSE + ((usage->hid - 1) & HID_USAGE); 569 code = BTN_MOUSE + ((usage->hid - 1) & HID_USAGE);
570 /*
571 * MS PTP spec says that external buttons left and right have
572 * usages 2 and 3.
573 */
574 if (cls->name == MT_CLS_WIN_8 &&
575 field->application == HID_DG_TOUCHPAD &&
576 (usage->hid & HID_USAGE) > 1)
577 code--;
570 hid_map_usage(hi, usage, bit, max, EV_KEY, code); 578 hid_map_usage(hi, usage, bit, max, EV_KEY, code);
571 input_set_capability(hi->input, EV_KEY, code); 579 input_set_capability(hi->input, EV_KEY, code);
572 return 1; 580 return 1;