diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2007-10-24 16:24:22 +0200 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2008-01-28 14:51:19 +0100 |
commit | 3c684c8cd4d1a81004daa21f7ad3dad5119916e3 (patch) | |
tree | 86ee87296a3c2258377c855ad24324d6414a90fa /drivers/hid/hid-input.c | |
parent | Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/coo... (diff) | |
download | linux-3c684c8cd4d1a81004daa21f7ad3dad5119916e3.tar.xz linux-3c684c8cd4d1a81004daa21f7ad3dad5119916e3.zip |
HID: Map MS Presenter 8000 bottom-side buttons
The MS Presenter 8000 bluetooth mouse is a "dual-use" device: If you
press a button on the top, you can turn it around and find special keys
on the other side, useful for presentations. This patch maps those three
bottom-keys that are not already detected to the intended functions. The
magic bottom on the top is mapped to F5 when we switch from mouse to
presenter mode in order to activate the presentation mode in the related
software (e.g. OpenOffice).
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to '')
-rw-r--r-- | drivers/hid/hid-input.c | 16 |
1 files changed, 14 insertions, 2 deletions
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 */ |