HID: penmount: report only one button for PenMount 6000 USB touchscreen controller
authorAndrew Shadura <andrew.shadura@collabora.co.uk>
Thu, 29 Oct 2015 15:09:49 +0000 (16:09 +0100)
committerJiri Kosina <jkosina@suse.cz>
Thu, 10 Mar 2016 16:17:26 +0000 (17:17 +0100)
PenMount 6000 USB resistive touchscreen controller reports it has three
buttons, while in reality it doesn't have any and doesn't support active
styli, and only generates touch events.

In penmount_input_mapping(), map only the first button (with code 0),
ignore the rest.

Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
Tested-by: Christian Gmeiner <c.gmeiner@bachmann.info
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-penmount.c

index c11dce85cd1877537487b50bc1e1eb3335ef8268..d90383f788e26d7cc328dd0ef5b80f656e38a6c7 100644 (file)
@@ -23,8 +23,12 @@ static int penmount_input_mapping(struct hid_device *hdev,
                struct hid_usage *usage, unsigned long **bit, int *max)
 {
        if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) {
-               hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
-               return 1;
+               if (((usage->hid - 1) & HID_USAGE) == 0) {
+                       hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
+                       return 1;
+               } else {
+                       return -1;
+               }
        }
 
        return 0;