HID: make Media key on Logitech DiNovo Mini work
authorJiri Kosina <jkosina@suse.cz>
Tue, 24 Nov 2009 17:22:20 +0000 (18:22 +0100)
committerJiri Kosina <jkosina@suse.cz>
Wed, 25 Nov 2009 15:20:52 +0000 (16:20 +0100)
Put proper mapping of Media key on Logitech DiNovo Mini.

According to the specification from Logitech webpage, this
key is intended to launch a Media center.

Reported-by: Stefan Plattner <Stefan.Plattner@ilogs.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-lg.c

index 0f870a3..4a48978 100644 (file)
@@ -89,6 +89,22 @@ static int lg_ultrax_remote_mapping(struct hid_input *hi,
        return 1;
 }
 
+static int lg_dinovo_mapping(struct hid_input *hi, struct hid_usage *usage,
+               unsigned long **bit, int *max)
+{
+       if ((usage->hid & HID_USAGE_PAGE) != HID_UP_LOGIVENDOR)
+               return 0;
+
+       switch (usage->hid & HID_USAGE) {
+
+       case 0x00d: lg_map_key_clear(KEY_MEDIA);        break;
+       default:
+               return 0;
+
+       }
+       return 1;
+}
+
 static int lg_wireless_mapping(struct hid_input *hi, struct hid_usage *usage,
                unsigned long **bit, int *max)
 {
@@ -164,6 +180,10 @@ static int lg_input_mapping(struct hid_device *hdev, struct hid_input *hi,
                        lg_ultrax_remote_mapping(hi, usage, bit, max))
                return 1;
 
+       if (hdev->product == USB_DEVICE_ID_DINOVO_MINI &&
+                       lg_dinovo_mapping(hi, usage, bit, max))
+               return 1;
+
        if ((quirks & LG_WIRELESS) && lg_wireless_mapping(hi, usage, bit, max))
                return 1;