Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: HID - add more consumer usages

Extend mapping of the consumer usage page in hid-input.c to handle
more cases appearing on new USB keyboards.

Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>

authored by

Vojtech Pavlik and committed by
Dmitry Torokhov
8a409b01 0aebfdac

+36 -9
+11 -6
drivers/usb/input/hid-debug.h
··· 109 109 {0, 0x03, "ScrollLock"}, 110 110 {0, 0x04, "Compose"}, 111 111 {0, 0x05, "Kana"}, 112 + {0, 0x4b, "GenericIndicator"}, 112 113 { 9, 0, "Button" }, 113 114 { 10, 0, "Ordinal" }, 114 115 { 12, 0, "Consumer" }, ··· 592 591 [KEY_EXIT] = "Exit", [KEY_MOVE] = "Move", 593 592 [KEY_EDIT] = "Edit", [KEY_SCROLLUP] = "ScrollUp", 594 593 [KEY_SCROLLDOWN] = "ScrollDown", [KEY_KPLEFTPAREN] = "KPLeftParenthesis", 595 - [KEY_KPRIGHTPAREN] = "KPRightParenthesis", [KEY_F13] = "F13", 594 + [KEY_KPRIGHTPAREN] = "KPRightParenthesis", [KEY_NEW] = "New", 595 + [KEY_REDO] = "Redo", [KEY_F13] = "F13", 596 596 [KEY_F14] = "F14", [KEY_F15] = "F15", 597 597 [KEY_F16] = "F16", [KEY_F17] = "F17", 598 598 [KEY_F18] = "F18", [KEY_F19] = "F19", ··· 603 601 [KEY_PAUSECD] = "PauseCD", [KEY_PROG3] = "Prog3", 604 602 [KEY_PROG4] = "Prog4", [KEY_SUSPEND] = "Suspend", 605 603 [KEY_CLOSE] = "Close", [KEY_PLAY] = "Play", 606 - [KEY_FASTFORWARD] = "Fast Forward", [KEY_BASSBOOST] = "Bass Boost", 604 + [KEY_FASTFORWARD] = "FastForward", [KEY_BASSBOOST] = "BassBoost", 607 605 [KEY_PRINT] = "Print", [KEY_HP] = "HP", 608 606 [KEY_CAMERA] = "Camera", [KEY_SOUND] = "Sound", 609 607 [KEY_QUESTION] = "Question", [KEY_EMAIL] = "Email", 610 608 [KEY_CHAT] = "Chat", [KEY_SEARCH] = "Search", 611 609 [KEY_CONNECT] = "Connect", [KEY_FINANCE] = "Finance", 612 610 [KEY_SPORT] = "Sport", [KEY_SHOP] = "Shop", 613 - [KEY_ALTERASE] = "Alternate Erase", [KEY_CANCEL] = "Cancel", 614 - [KEY_BRIGHTNESSDOWN] = "Brightness down", [KEY_BRIGHTNESSUP] = "Brightness up", 611 + [KEY_ALTERASE] = "AlternateErase", [KEY_CANCEL] = "Cancel", 612 + [KEY_BRIGHTNESSDOWN] = "BrightnessDown", [KEY_BRIGHTNESSUP] = "BrightnessUp", 615 613 [KEY_MEDIA] = "Media", [KEY_UNKNOWN] = "Unknown", 616 614 [BTN_0] = "Btn0", [BTN_1] = "Btn1", 617 615 [BTN_2] = "Btn2", [BTN_3] = "Btn3", ··· 641 639 [BTN_TOOL_AIRBRUSH] = "ToolAirbrush", [BTN_TOOL_FINGER] = "ToolFinger", 642 640 [BTN_TOOL_MOUSE] = "ToolMouse", [BTN_TOOL_LENS] = "ToolLens", 643 641 [BTN_TOUCH] = "Touch", [BTN_STYLUS] = "Stylus", 644 - [BTN_STYLUS2] = "Stylus2", [BTN_TOOL_DOUBLETAP] = "Tool Doubletap", 645 - [BTN_TOOL_TRIPLETAP] = "Tool Tripletap", [BTN_GEAR_DOWN] = "WheelBtn", 642 + [BTN_STYLUS2] = "Stylus2", [BTN_TOOL_DOUBLETAP] = "ToolDoubleTap", 643 + [BTN_TOOL_TRIPLETAP] = "ToolTripleTap", [BTN_GEAR_DOWN] = "WheelBtn", 646 644 [BTN_GEAR_UP] = "Gear up", [KEY_OK] = "Ok", 647 645 [KEY_SELECT] = "Select", [KEY_GOTO] = "Goto", 648 646 [KEY_CLEAR] = "Clear", [KEY_POWER2] = "Power2", ··· 678 676 [KEY_TWEN] = "TWEN", [KEY_DEL_EOL] = "DeleteEOL", 679 677 [KEY_DEL_EOS] = "DeleteEOS", [KEY_INS_LINE] = "InsertLine", 680 678 [KEY_DEL_LINE] = "DeleteLine", 679 + [KEY_SEND] = "Send", [KEY_REPLY] = "Reply", 680 + [KEY_FORWARDMAIL] = "ForwardMail", [KEY_SAVE] = "Save", 681 + [KEY_DOCUMENTS] = "Documents", 681 682 }; 682 683 683 684 static char *relatives[REL_MAX + 1] = {
+16 -3
drivers/usb/input/hid-input.c
··· 78 78 { 79 79 struct input_dev *input = &hidinput->input; 80 80 struct hid_device *device = hidinput->input.private; 81 - int max, code; 82 - unsigned long *bit; 81 + int max = 0, code; 82 + unsigned long *bit = NULL; 83 83 84 84 field->hidinput = hidinput; 85 85 ··· 248 248 case 0x034: map_key_clear(KEY_SLEEP); break; 249 249 case 0x036: map_key_clear(BTN_MISC); break; 250 250 case 0x08a: map_key_clear(KEY_WWW); break; 251 + case 0x08d: map_key_clear(KEY_PROGRAM); break; 251 252 case 0x095: map_key_clear(KEY_HELP); break; 253 + case 0x09c: map_key_clear(KEY_CHANNELUP); break; 254 + case 0x09d: map_key_clear(KEY_CHANNELDOWN); break; 252 255 case 0x0b0: map_key_clear(KEY_PLAY); break; 253 256 case 0x0b1: map_key_clear(KEY_PAUSE); break; 254 257 case 0x0b2: map_key_clear(KEY_RECORD); break; ··· 271 268 case 0x18a: map_key_clear(KEY_MAIL); break; 272 269 case 0x192: map_key_clear(KEY_CALC); break; 273 270 case 0x194: map_key_clear(KEY_FILE); break; 271 + case 0x1a7: map_key_clear(KEY_DOCUMENTS); break; 272 + case 0x201: map_key_clear(KEY_NEW); break; 273 + case 0x207: map_key_clear(KEY_SAVE); break; 274 + case 0x208: map_key_clear(KEY_PRINT); break; 275 + case 0x209: map_key_clear(KEY_PROPS); break; 274 276 case 0x21a: map_key_clear(KEY_UNDO); break; 275 277 case 0x21b: map_key_clear(KEY_COPY); break; 276 278 case 0x21c: map_key_clear(KEY_CUT); break; ··· 288 280 case 0x227: map_key_clear(KEY_REFRESH); break; 289 281 case 0x22a: map_key_clear(KEY_BOOKMARKS); break; 290 282 case 0x238: map_rel(REL_HWHEEL); break; 291 - default: goto unknown; 283 + case 0x279: map_key_clear(KEY_REDO); break; 284 + case 0x289: map_key_clear(KEY_REPLY); break; 285 + case 0x28b: map_key_clear(KEY_FORWARDMAIL); break; 286 + case 0x28c: map_key_clear(KEY_SEND); break; 287 + default: goto ignore; 292 288 } 293 289 break; 294 290 ··· 318 306 319 307 case HID_UP_MSVENDOR: 320 308 case HID_UP_LOGIVENDOR: 309 + case HID_UP_LOGIVENDOR2: 321 310 322 311 goto ignore; 323 312
+1
drivers/usb/input/hid.h
··· 184 184 #define HID_UP_HPVENDOR 0xff7f0000 185 185 #define HID_UP_MSVENDOR 0xff000000 186 186 #define HID_UP_LOGIVENDOR 0x00ff0000 187 + #define HID_UP_LOGIVENDOR2 0xffbc0000 187 188 188 189 #define HID_USAGE 0x0000ffff 189 190
+8
include/linux/input.h
··· 287 287 #define KEY_SCROLLDOWN 178 288 288 #define KEY_KPLEFTPAREN 179 289 289 #define KEY_KPRIGHTPAREN 180 290 + #define KEY_NEW 181 291 + #define KEY_REDO 182 290 292 291 293 #define KEY_F13 183 292 294 #define KEY_F14 184 ··· 334 332 #define KEY_KBDILLUMTOGGLE 228 335 333 #define KEY_KBDILLUMDOWN 229 336 334 #define KEY_KBDILLUMUP 230 335 + 336 + #define KEY_SEND 231 337 + #define KEY_REPLY 232 338 + #define KEY_FORWARDMAIL 233 339 + #define KEY_SAVE 234 340 + #define KEY_DOCUMENTS 235 337 341 338 342 #define KEY_UNKNOWN 240 339 343