aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2007-10-24 10:24:22 -0400
committerJiri Kosina <jkosina@suse.cz>2008-01-28 08:51:19 -0500
commit3c684c8cd4d1a81004daa21f7ad3dad5119916e3 (patch)
tree86ee87296a3c2258377c855ad24324d6414a90fa /drivers/hid
parent91525300baf162e83e923b09ca286f9205e21522 (diff)
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 'drivers/hid')
-rw-r--r--drivers/hid/hid-input.c16
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 {
89/* hardware needing special handling due to colliding MSVENDOR page usages */ 89/* hardware needing special handling due to colliding MSVENDOR page usages */
90#define IS_CHICONY_TACTICAL_PAD(x) (x->vendor == 0x04f2 && device->product == 0x0418) 90#define IS_CHICONY_TACTICAL_PAD(x) (x->vendor == 0x04f2 && device->product == 0x0418)
91#define IS_MS_KB(x) (x->vendor == 0x045e && (x->product == 0x00db || x->product == 0x00f9)) 91#define IS_MS_KB(x) (x->vendor == 0x045e && (x->product == 0x00db || x->product == 0x00f9))
92#define IS_MS_PRESENTER_8000(x) (x->vendor == 0x045e && x->product == 0x0713)
92 93
93#ifdef CONFIG_USB_HIDINPUT_POWERBOOK 94#ifdef CONFIG_USB_HIDINPUT_POWERBOOK
94 95
@@ -780,9 +781,20 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
780 set_bit(KEY_F18, input->keybit); 781 set_bit(KEY_F18, input->keybit);
781 default: goto ignore; 782 default: goto ignore;
782 } 783 }
783 } else { 784
785 /* Microsoft Wireless Notebook Presenter Mouse 8000 */
786 } else if (IS_MS_PRESENTER_8000(device)) {
787 set_bit(EV_REP, input->evbit);
788 switch(usage->hid & HID_USAGE) {
789 /* Useful mappings of bottom-side keys for presentations */
790 case 0xfd08: map_key_clear(KEY_RIGHT); break;
791 case 0xfd09: map_key_clear(KEY_LEFT); break;
792 case 0xfd0b: map_key_clear(KEY_PAUSE); break;
793 case 0xfd0f: map_key_clear(KEY_F5); break;
794 default: goto ignore;
795 }
796 } else
784 goto ignore; 797 goto ignore;
785 }
786 break; 798 break;
787 799
788 case HID_UP_CUSTOM: /* Reported on Logitech and Powerbook USB keyboards */ 800 case HID_UP_CUSTOM: /* Reported on Logitech and Powerbook USB keyboards */