HIDDescriptors.swift [plain text]
//
// HIDDescriptors.swift
// IOHIDFamilyUnitTests
//
// Created by dekom on 8/15/18.
//
import Foundation
let HIDKeyboardDescriptor : [UInt8] = [
0x05, 0x01, /* (GLOBAL) USAGE_PAGE 0x0001 Generic Desktop Page */
0x09, 0x06, /* (LOCAL) USAGE 0x00010006 Keyboard (CA=Application Collection) */
0xA1, 0x01, /* (MAIN) COLLECTION 0x01 Application (Usage=0x00010006: Page=Generic Desktop Page, Usage=Keyboard, Type=CA) */
0x05, 0x07, /* (GLOBAL) USAGE_PAGE 0x0007 Keyboard/Keypad Page */
0x19, 0xE0, /* (LOCAL) USAGE_MINIMUM 0x000700E0 Keyboard Left Control (DV=Dynamic Value) */
0x29, 0xE7, /* (LOCAL) USAGE_MAXIMUM 0x000700E7 Keyboard Right GUI (DV=Dynamic Value) */
0x15, 0x00, /* (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 */
0x25, 0x01, /* (GLOBAL) LOGICAL_MAXIMUM 0x01 (1) */
0x75, 0x01, /* (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field */
0x95, 0x08, /* (GLOBAL) REPORT_COUNT 0x08 (8) Number of fields */
0x81, 0x02, /* (MAIN) INPUT 0x00000002 (8 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap */
0x95, 0x01, /* (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields */
0x75, 0x08, /* (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field */
0x81, 0x01, /* (MAIN) INPUT 0x00000001 (1 field x 8 bits) 1=Constant 0=Array 0=Absolute 0=Ignored 0=Ignored 0=PrefState 0=NoNull */
0x05, 0x08, /* (GLOBAL) USAGE_PAGE 0x0008 LED Indicator Page */
0x19, 0x01, /* (LOCAL) USAGE_MINIMUM 0x00080001 Num Lock (OOC=On/Off Control) */
0x29, 0x05, /* (LOCAL) USAGE_MAXIMUM 0x00080005 Kana (OOC=On/Off Control) */
0x95, 0x05, /* (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields */
0x75, 0x01, /* (GLOBAL) REPORT_SIZE 0x01 (1) Number of bits per field */
0x91, 0x02, /* (MAIN) OUTPUT 0x00000002 (5 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap */
0x95, 0x01, /* (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields */
0x75, 0x03, /* (GLOBAL) REPORT_SIZE 0x03 (3) Number of bits per field */
0x91, 0x01, /* (MAIN) OUTPUT 0x00000001 (1 field x 3 bits) 1=Constant 0=Array 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap */
0x05, 0x07, /* (GLOBAL) USAGE_PAGE 0x0007 Keyboard/Keypad Page */
0x19, 0x00, /* (LOCAL) USAGE_MINIMUM 0x00070000 Keyboard No event indicated (Sel=Selector) */
0x2A, 0xFF, 0x00, /* (LOCAL) USAGE_MAXIMUM 0x000700FF */
0x95, 0x05, /* (GLOBAL) REPORT_COUNT 0x05 (5) Number of fields */
0x75, 0x08, /* (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field */
0x15, 0x00, /* (GLOBAL) LOGICAL_MINIMUM 0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0 <-- Info: Consider replacing 15 00 with 14 */
0x26, 0xFF, 0x00, /* (GLOBAL) LOGICAL_MAXIMUM 0x00FF (255) */
0x81, 0x00, /* (MAIN) INPUT 0x00000000 (5 fields x 8 bits) 0=Data 0=Array 0=Absolute 0=Ignored 0=Ignored 0=PrefState 0=NoNull */
0x05, 0xFF, /* (GLOBAL) USAGE_PAGE 0x00FF Reserved */
0x09, 0x03, /* (LOCAL) USAGE 0x00FF0003 */
0x75, 0x08, /* (GLOBAL) REPORT_SIZE 0x08 (8) Number of bits per field <-- Redundant: REPORT_SIZE is already 8 */
0x95, 0x01, /* (GLOBAL) REPORT_COUNT 0x01 (1) Number of fields */
0x81, 0x02, /* (MAIN) INPUT 0x00000002 (1 field x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap */
0xC0, /* (MAIN) END_COLLECTION Application */
]