15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)# found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)"""HID constant definitions. 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)""" 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import usb_constants 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class DescriptorType(object): 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Class descriptors. 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) See Device Class Definition for Human Interface Devices (HID) Version 1.11 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) section 7.1. 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """ 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) HID = usb_constants.Type.CLASS | 0x01 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) REPORT = usb_constants.Type.CLASS | 0x02 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PHYSICAL = usb_constants.Type.CLASS | 0x03 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class Scope(object): 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Item scope. 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) See Device Class Definition for Human Interface Devices (HID) Version 1.11 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) section 6.2.2.2. 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """ 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) MAIN = 0 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GLOBAL = 1 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) LOCAL = 2 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class CollectionType(object): 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Collection types. 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) See Device Class Definition for Human Interface Devices (HID) Version 1.11 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) section 6.2.2.4. 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """ 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PHYSICAL = 0 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) APPLICATION = 1 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) LOGICAL = 2 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) REPORT = 3 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NAMED_ARRAY = 4 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) USAGE_SWITCH = 5 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) USAGE_MODIFIER = 6 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class Request(object): 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Class specific requests. 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) See Device Class Definition for Human Interface Devices (HID) Version 1.11 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) section 7.2. 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """ 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GET_REPORT = 1 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GET_IDLE = 2 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GET_PROTOCOL = 3 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SET_REPORT = 9 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SET_IDLE = 0x0A 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SET_PROTOCOL = 0x0B 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ReportType(object): 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Report types. 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) See Device Class Definition for Human Interface Devices (HID) Version 1.11 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) section 7.2.1. 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """ 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) INPUT = 1 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) OUTPUT = 2 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) FEATURE = 3 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ModifierKey(object): 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Keyboard modifier key report values. 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) See Device Class Definition for Human Interface Devices (HID) Version 1.11 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) section 8.3 and HID Usage Tables Version 1.1 Table 12. 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """ 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) L_CTRL = 0x01 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) L_SHIFT = 0x02 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) L_ALT = 0x04 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) L_GUI = 0x08 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) R_CTRL = 0x10 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) R_SHIFT = 0x20 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) R_ALT = 0x40 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) R_GUI = 0x80 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class LED(object): 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Keyboard LED report values. 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) See Device Class Definition for Human Interface Devices (HID) Version 1.11 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) section B.1 and HID Usage Tables Version 1.1 Table 13. 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """ 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NUM_LOCK = 0x01 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CAPS_LOCK = 0x02 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SCROLL_LOCK = 0x04 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) COMPOSE = 0x08 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) KANA = 0x10 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class Mouse(object): 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """Mouse button report values. 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) See Device Class Definition for Human Interface Devices (HID) Version 1.11 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) section B.2. 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) """ 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) BUTTON_1 = 0x01 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) BUTTON_2 = 0x02 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) BUTTON_3 = 0x04 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)KEY_CODES = {} 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip(xrange(ord('a'), ord('z') + 1), xrange(4, 30)): 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) KEY_CODES[chr(key)] = code 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip(xrange(ord('1'), ord('9') + 1), xrange(30, 39)): 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) KEY_CODES[chr(key)] = code 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip(['Enter', 'Esc', 'Backspace', 'Tab', ' '], xrange(40, 45)): 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) KEY_CODES[key] = code 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip('-=[]\\', xrange(45, 50)): 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) KEY_CODES[key] = code 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip(';\'`,./', xrange(51, 57)): 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) KEY_CODES[key] = code 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip( 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ['CapsLock', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'F11', 'F12', 'PrintScreen', 'ScrollLock', 'Pause', 'Insert', 'Home', 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'PageUp', 'PageDown', 'Delete', 'End', 'PageDown', 'RightArrow', 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'LeftArrow', 'DownArrow', 'UpArrow', 'NumLock'], 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) xrange(57, 84)): 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) KEY_CODES[key] = code 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)SHIFT_KEY_CODES = {} 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip(xrange(ord('A'), ord('Z') + 1), xrange(4, 30)): 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SHIFT_KEY_CODES[chr(key)] = code 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip('!@#$%^&*()', xrange(30, 40)): 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SHIFT_KEY_CODES[key] = code 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip('_+{}|', xrange(45, 50)): 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SHIFT_KEY_CODES[key] = code 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)for key, code in zip(':"~<>?', xrange(51, 57)): 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SHIFT_KEY_CODES[key] = code 141