Last active
September 9, 2016 01:26
-
-
Save doraskayo/7117c439d3972a48f74b034dec979f89 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c | |
index bcfaf32..cdd2d27 100644 | |
--- a/drivers/hid/hid-input.c | |
+++ b/drivers/hid/hid-input.c | |
@@ -582,24 +582,25 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |
break; | |
case HID_UP_GENDESK: | |
- if ((usage->hid & 0xf0) == 0x80) { /* SystemControl */ | |
- switch (usage->hid & 0xf) { | |
- case 0x1: map_key_clear(KEY_POWER); break; | |
- case 0x2: map_key_clear(KEY_SLEEP); break; | |
- case 0x3: map_key_clear(KEY_WAKEUP); break; | |
- case 0x4: map_key_clear(KEY_CONTEXT_MENU); break; | |
- case 0x5: map_key_clear(KEY_MENU); break; | |
- case 0x6: map_key_clear(KEY_PROG1); break; | |
- case 0x7: map_key_clear(KEY_HELP); break; | |
- case 0x8: map_key_clear(KEY_EXIT); break; | |
- case 0x9: map_key_clear(KEY_SELECT); break; | |
- case 0xa: map_key_clear(KEY_RIGHT); break; | |
- case 0xb: map_key_clear(KEY_LEFT); break; | |
- case 0xc: map_key_clear(KEY_UP); break; | |
- case 0xd: map_key_clear(KEY_DOWN); break; | |
- case 0xe: map_key_clear(KEY_POWER2); break; | |
- case 0xf: map_key_clear(KEY_RESTART); break; | |
- default: goto unknown; | |
+ if (field->application == HID_GD_SYSTEM_CONTROL) { | |
+ /* Only allow System Controls inside a System Controls collection */ | |
+ switch (usage->hid & 0xffff) { | |
+ case 0x81: map_key_clear(KEY_POWER); break; | |
+ case 0x82: map_key_clear(KEY_SLEEP); break; | |
+ case 0x83: map_key_clear(KEY_WAKEUP); break; | |
+ case 0x84: map_key_clear(KEY_CONTEXT_MENU); break; | |
+ case 0x85: map_key_clear(KEY_MENU); break; | |
+ case 0x86: map_key_clear(KEY_PROG1); break; | |
+ case 0x87: map_key_clear(KEY_HELP); break; | |
+ case 0x88: map_key_clear(KEY_EXIT); break; | |
+ case 0x89: map_key_clear(KEY_SELECT); break; | |
+ case 0x8a: map_key_clear(KEY_RIGHT); break; | |
+ case 0x8b: map_key_clear(KEY_LEFT); break; | |
+ case 0x8c: map_key_clear(KEY_UP); break; | |
+ case 0x8d: map_key_clear(KEY_DOWN); break; | |
+ case 0x8e: map_key_clear(KEY_POWER2); break; | |
+ case 0x8f: map_key_clear(KEY_RESTART); break; | |
+ default: map_key_clear(KEY_UNKNOWN); /* NOTE: can also be: goto ignore */ | |
} | |
break; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment