diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 0b27da7d7497..3a18ec45a71f 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -89,6 +89,7 @@ static const struct { /* hardware needing special handling due to colliding MSVENDOR page usages */ #define IS_CHICONY_TACTICAL_PAD(x) (x->vendor == 0x04f2 && device->product == 0x0418) #define IS_MS_KB(x) (x->vendor == 0x045e && (x->product == 0x00db || x->product == 0x00f9)) +#define IS_MS_PRESENTER_8000(x) (x->vendor == 0x045e && x->product == 0x0713) #ifdef CONFIG_USB_HIDINPUT_POWERBOOK @@ -780,9 +781,20 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel set_bit(KEY_F18, input->keybit); default: goto ignore; } - } else { + + /* Microsoft Wireless Notebook Presenter Mouse 8000 */ + } else if (IS_MS_PRESENTER_8000(device)) { + set_bit(EV_REP, input->evbit); + switch(usage->hid & HID_USAGE) { + /* Useful mappings of bottom-side keys for presentations */ + case 0xfd08: map_key_clear(KEY_RIGHT); break; + case 0xfd09: map_key_clear(KEY_LEFT); break; + case 0xfd0b: map_key_clear(KEY_PAUSE); break; + case 0xfd0f: map_key_clear(KEY_F5); break; + default: goto ignore; + } + } else goto ignore; - } break; case HID_UP_CUSTOM: /* Reported on Logitech and Powerbook USB keyboards */