diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-23 12:10:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-23 12:10:03 -0400 |
commit | ee9ec4f82049c678373a611ce20ac67fe9ad836e (patch) | |
tree | e5ec44a30720f1db1cd4a803b3711a2293322dc5 /drivers/hid/hid-input.c | |
parent | e0c6b8a17fb3d4a740386b380ea72aa8388fbf2f (diff) | |
parent | 366a2382c68d01638350efcf23d46a47d661c595 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (36 commits)
HID: hid-multitouch: cosmetic changes, sort classes and devices
HID: hid-multitouch: class MT_CLS_STANTUM is redundant with MT_CLS_CONFIDENCE
HID: hid-multitouch: add support for Unitec panels
HID: hid-multitouch: add support for Touch International panels
HID: hid-multitouch: add support for GoodTouch panels
HID: hid-multitouch: add support for CVTouch panels
HID: hid-multitouch: add support for ActionStar panels
HID: hiddev: fix race between hiddev_disconnect and hiddev_release
HID: magicmouse: ignore 'ivalid report id' while switching modes
HID: fix a crash in hid_report_raw_event() function.
HID: hid-multitouch: add support for Elo TouchSystems 2515 IntelliTouch Plus
HID: assorted usage updates from hut 1.12
HID: roccat: fix actual/startup profile sysfs attribute in koneplus
HID: hid-multitouch: Add support for Lumio panels
HID: 'name' and 'phys' in 'struct hid_device' can never be NULL
HID: hid-multitouch: add support for Ilitek dual-touch panel
HID: picolcd: Avoid compile warning/error triggered by copy_from_user()
HID: add support for Logitech G27 wheel
HID: hiddev: fix error path in hiddev_read when interrupted
HID: add support for Sony Navigation Controller
...
Diffstat (limited to 'drivers/hid/hid-input.c')
-rw-r--r-- | drivers/hid/hid-input.c | 60 |
1 files changed, 52 insertions, 8 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 33dde8724e02..6559e2e3364e 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c | |||
@@ -44,11 +44,11 @@ static const unsigned char hid_keyboard[256] = { | |||
44 | 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190, | 44 | 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190, |
45 | 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113, | 45 | 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113, |
46 | 115,114,unk,unk,unk,121,unk, 89, 93,124, 92, 94, 95,unk,unk,unk, | 46 | 115,114,unk,unk,unk,121,unk, 89, 93,124, 92, 94, 95,unk,unk,unk, |
47 | 122,123, 90, 91, 85,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, | 47 | 122,123, 90, 91, 85,unk,unk,unk,unk,unk,unk,unk,111,unk,unk,unk, |
48 | unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, | 48 | unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, |
49 | unk,unk,unk,unk,unk,unk,179,180,unk,unk,unk,unk,unk,unk,unk,unk, | 49 | unk,unk,unk,unk,unk,unk,179,180,unk,unk,unk,unk,unk,unk,unk,unk, |
50 | unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, | 50 | unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, |
51 | unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, | 51 | unk,unk,unk,unk,unk,unk,unk,unk,111,unk,unk,unk,unk,unk,unk,unk, |
52 | 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113, | 52 | 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113, |
53 | 150,158,159,128,136,177,178,176,142,152,173,140,unk,unk,unk,unk | 53 | 150,158,159,128,136,177,178,176,142,152,173,140,unk,unk,unk,unk |
54 | }; | 54 | }; |
@@ -357,6 +357,18 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
357 | case 0x1: map_key_clear(KEY_POWER); break; | 357 | case 0x1: map_key_clear(KEY_POWER); break; |
358 | case 0x2: map_key_clear(KEY_SLEEP); break; | 358 | case 0x2: map_key_clear(KEY_SLEEP); break; |
359 | case 0x3: map_key_clear(KEY_WAKEUP); break; | 359 | case 0x3: map_key_clear(KEY_WAKEUP); break; |
360 | case 0x4: map_key_clear(KEY_CONTEXT_MENU); break; | ||
361 | case 0x5: map_key_clear(KEY_MENU); break; | ||
362 | case 0x6: map_key_clear(KEY_PROG1); break; | ||
363 | case 0x7: map_key_clear(KEY_HELP); break; | ||
364 | case 0x8: map_key_clear(KEY_EXIT); break; | ||
365 | case 0x9: map_key_clear(KEY_SELECT); break; | ||
366 | case 0xa: map_key_clear(KEY_RIGHT); break; | ||
367 | case 0xb: map_key_clear(KEY_LEFT); break; | ||
368 | case 0xc: map_key_clear(KEY_UP); break; | ||
369 | case 0xd: map_key_clear(KEY_DOWN); break; | ||
370 | case 0xe: map_key_clear(KEY_POWER2); break; | ||
371 | case 0xf: map_key_clear(KEY_RESTART); break; | ||
360 | default: goto unknown; | 372 | default: goto unknown; |
361 | } | 373 | } |
362 | break; | 374 | break; |
@@ -466,16 +478,39 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
466 | } | 478 | } |
467 | break; | 479 | break; |
468 | 480 | ||
469 | case HID_UP_CONSUMER: /* USB HUT v1.1, pages 56-62 */ | 481 | case HID_UP_CONSUMER: /* USB HUT v1.12, pages 75-84 */ |
470 | switch (usage->hid & HID_USAGE) { | 482 | switch (usage->hid & HID_USAGE) { |
471 | case 0x000: goto ignore; | 483 | case 0x000: goto ignore; |
484 | case 0x030: map_key_clear(KEY_POWER); break; | ||
485 | case 0x031: map_key_clear(KEY_RESTART); break; | ||
486 | case 0x032: map_key_clear(KEY_SLEEP); break; | ||
472 | case 0x034: map_key_clear(KEY_SLEEP); break; | 487 | case 0x034: map_key_clear(KEY_SLEEP); break; |
488 | case 0x035: map_key_clear(KEY_KBDILLUMTOGGLE); break; | ||
473 | case 0x036: map_key_clear(BTN_MISC); break; | 489 | case 0x036: map_key_clear(BTN_MISC); break; |
474 | 490 | ||
475 | case 0x040: map_key_clear(KEY_MENU); break; | 491 | case 0x040: map_key_clear(KEY_MENU); break; /* Menu */ |
476 | case 0x045: map_key_clear(KEY_RADIO); break; | 492 | case 0x041: map_key_clear(KEY_SELECT); break; /* Menu Pick */ |
477 | 493 | case 0x042: map_key_clear(KEY_UP); break; /* Menu Up */ | |
494 | case 0x043: map_key_clear(KEY_DOWN); break; /* Menu Down */ | ||
495 | case 0x044: map_key_clear(KEY_LEFT); break; /* Menu Left */ | ||
496 | case 0x045: map_key_clear(KEY_RIGHT); break; /* Menu Right */ | ||
497 | case 0x046: map_key_clear(KEY_ESC); break; /* Menu Escape */ | ||
498 | case 0x047: map_key_clear(KEY_KPPLUS); break; /* Menu Value Increase */ | ||
499 | case 0x048: map_key_clear(KEY_KPMINUS); break; /* Menu Value Decrease */ | ||
500 | |||
501 | case 0x060: map_key_clear(KEY_INFO); break; /* Data On Screen */ | ||
502 | case 0x061: map_key_clear(KEY_SUBTITLE); break; /* Closed Caption */ | ||
503 | case 0x063: map_key_clear(KEY_VCR); break; /* VCR/TV */ | ||
504 | case 0x065: map_key_clear(KEY_CAMERA); break; /* Snapshot */ | ||
505 | case 0x069: map_key_clear(KEY_RED); break; | ||
506 | case 0x06a: map_key_clear(KEY_GREEN); break; | ||
507 | case 0x06b: map_key_clear(KEY_BLUE); break; | ||
508 | case 0x06c: map_key_clear(KEY_YELLOW); break; | ||
509 | case 0x06d: map_key_clear(KEY_ZOOM); break; | ||
510 | |||
511 | case 0x082: map_key_clear(KEY_VIDEO_NEXT); break; | ||
478 | case 0x083: map_key_clear(KEY_LAST); break; | 512 | case 0x083: map_key_clear(KEY_LAST); break; |
513 | case 0x084: map_key_clear(KEY_ENTER); break; | ||
479 | case 0x088: map_key_clear(KEY_PC); break; | 514 | case 0x088: map_key_clear(KEY_PC); break; |
480 | case 0x089: map_key_clear(KEY_TV); break; | 515 | case 0x089: map_key_clear(KEY_TV); break; |
481 | case 0x08a: map_key_clear(KEY_WWW); break; | 516 | case 0x08a: map_key_clear(KEY_WWW); break; |
@@ -509,6 +544,8 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
509 | case 0x0b7: map_key_clear(KEY_STOPCD); break; | 544 | case 0x0b7: map_key_clear(KEY_STOPCD); break; |
510 | case 0x0b8: map_key_clear(KEY_EJECTCD); break; | 545 | case 0x0b8: map_key_clear(KEY_EJECTCD); break; |
511 | case 0x0bc: map_key_clear(KEY_MEDIA_REPEAT); break; | 546 | case 0x0bc: map_key_clear(KEY_MEDIA_REPEAT); break; |
547 | case 0x0b9: map_key_clear(KEY_SHUFFLE); break; | ||
548 | case 0x0bf: map_key_clear(KEY_SLOW); break; | ||
512 | 549 | ||
513 | case 0x0cd: map_key_clear(KEY_PLAYPAUSE); break; | 550 | case 0x0cd: map_key_clear(KEY_PLAYPAUSE); break; |
514 | case 0x0e0: map_abs_clear(ABS_VOLUME); break; | 551 | case 0x0e0: map_abs_clear(ABS_VOLUME); break; |
@@ -516,6 +553,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
516 | case 0x0e5: map_key_clear(KEY_BASSBOOST); break; | 553 | case 0x0e5: map_key_clear(KEY_BASSBOOST); break; |
517 | case 0x0e9: map_key_clear(KEY_VOLUMEUP); break; | 554 | case 0x0e9: map_key_clear(KEY_VOLUMEUP); break; |
518 | case 0x0ea: map_key_clear(KEY_VOLUMEDOWN); break; | 555 | case 0x0ea: map_key_clear(KEY_VOLUMEDOWN); break; |
556 | case 0x0f5: map_key_clear(KEY_SLOW); break; | ||
519 | 557 | ||
520 | case 0x182: map_key_clear(KEY_BOOKMARKS); break; | 558 | case 0x182: map_key_clear(KEY_BOOKMARKS); break; |
521 | case 0x183: map_key_clear(KEY_CONFIG); break; | 559 | case 0x183: map_key_clear(KEY_CONFIG); break; |
@@ -532,6 +570,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
532 | case 0x18e: map_key_clear(KEY_CALENDAR); break; | 570 | case 0x18e: map_key_clear(KEY_CALENDAR); break; |
533 | case 0x191: map_key_clear(KEY_FINANCE); break; | 571 | case 0x191: map_key_clear(KEY_FINANCE); break; |
534 | case 0x192: map_key_clear(KEY_CALC); break; | 572 | case 0x192: map_key_clear(KEY_CALC); break; |
573 | case 0x193: map_key_clear(KEY_PLAYER); break; | ||
535 | case 0x194: map_key_clear(KEY_FILE); break; | 574 | case 0x194: map_key_clear(KEY_FILE); break; |
536 | case 0x196: map_key_clear(KEY_WWW); break; | 575 | case 0x196: map_key_clear(KEY_WWW); break; |
537 | case 0x199: map_key_clear(KEY_CHAT); break; | 576 | case 0x199: map_key_clear(KEY_CHAT); break; |
@@ -540,8 +579,10 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
540 | case 0x1a6: map_key_clear(KEY_HELP); break; | 579 | case 0x1a6: map_key_clear(KEY_HELP); break; |
541 | case 0x1a7: map_key_clear(KEY_DOCUMENTS); break; | 580 | case 0x1a7: map_key_clear(KEY_DOCUMENTS); break; |
542 | case 0x1ab: map_key_clear(KEY_SPELLCHECK); break; | 581 | case 0x1ab: map_key_clear(KEY_SPELLCHECK); break; |
543 | case 0x1b6: map_key_clear(KEY_MEDIA); break; | 582 | case 0x1ae: map_key_clear(KEY_KEYBOARD); break; |
544 | case 0x1b7: map_key_clear(KEY_SOUND); break; | 583 | case 0x1b6: map_key_clear(KEY_IMAGES); break; |
584 | case 0x1b7: map_key_clear(KEY_AUDIO); break; | ||
585 | case 0x1b8: map_key_clear(KEY_VIDEO); break; | ||
545 | case 0x1bc: map_key_clear(KEY_MESSENGER); break; | 586 | case 0x1bc: map_key_clear(KEY_MESSENGER); break; |
546 | case 0x1bd: map_key_clear(KEY_INFO); break; | 587 | case 0x1bd: map_key_clear(KEY_INFO); break; |
547 | case 0x201: map_key_clear(KEY_NEW); break; | 588 | case 0x201: map_key_clear(KEY_NEW); break; |
@@ -570,7 +611,10 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
570 | case 0x233: map_key_clear(KEY_SCROLLUP); break; | 611 | case 0x233: map_key_clear(KEY_SCROLLUP); break; |
571 | case 0x234: map_key_clear(KEY_SCROLLDOWN); break; | 612 | case 0x234: map_key_clear(KEY_SCROLLDOWN); break; |
572 | case 0x238: map_rel(REL_HWHEEL); break; | 613 | case 0x238: map_rel(REL_HWHEEL); break; |
614 | case 0x23d: map_key_clear(KEY_EDIT); break; | ||
573 | case 0x25f: map_key_clear(KEY_CANCEL); break; | 615 | case 0x25f: map_key_clear(KEY_CANCEL); break; |
616 | case 0x269: map_key_clear(KEY_INSERT); break; | ||
617 | case 0x26a: map_key_clear(KEY_DELETE); break; | ||
574 | case 0x279: map_key_clear(KEY_REDO); break; | 618 | case 0x279: map_key_clear(KEY_REDO); break; |
575 | 619 | ||
576 | case 0x289: map_key_clear(KEY_REPLY); break; | 620 | case 0x289: map_key_clear(KEY_REPLY); break; |