Skip to content

Commit a232644

Browse files
committed
add full hid usage for Digitizer Page (0x0D), move thing around a bit.
1 parent cd0ca48 commit a232644

File tree

2 files changed

+187
-57
lines changed

2 files changed

+187
-57
lines changed

src/class/hid/hid.h

Lines changed: 185 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,21 @@ enum {
763763

764764
//--------------------------------------------------------------------+
765765
// Usage Table
766+
/* Usage Types Data
767+
Sel Selector Array
768+
SV Static Value Constant, Variable, Absolute
769+
SF Static Flag Constant, Variable, Absolute
770+
DV Dynamic Value Constant, Variable, Absolute
771+
DF Dynamic Flag Constant, Variable, Absolute
772+
*/
773+
/* Usage Types Collection
774+
NAry Named Array Logical
775+
CA Collection Application Application
776+
CL Collection Logical Logical
777+
CP Collection Physical Physical
778+
US Usage Switch Logical
779+
UM Usage Modifier Logical
780+
*/
766781
//--------------------------------------------------------------------+
767782

768783
/// HID Usage Table - Table 1: Usage Page Summary
@@ -782,10 +797,14 @@ enum {
782797
HID_USAGE_PAGE_DIGITIZER = 0x0d,
783798
HID_USAGE_PAGE_PID = 0x0f,
784799
HID_USAGE_PAGE_UNICODE = 0x10,
785-
HID_USAGE_PAGE_ALPHA_DISPLAY = 0x14,
786-
HID_USAGE_PAGE_IN_RANGE = 0x32,
787-
HID_USAGE_PAGE_MEDICAL = 0x40,
788-
HID_USAGE_PAGE_TIP_SWITCH = 0x42,
800+
HID_USAGE_PAGE_SOC = 0x11,
801+
HID_USAGE_PAGE_EYE_AND_HEAD_TRACKERS = 0x12,
802+
// 0x13 is reserved
803+
HID_USAGE_PAGE_AUXILIARY_DISPLAY = 0x14,
804+
// 0x15 - 0x1f is reserved
805+
HID_USAGE_PAGE_SENSORS = 0x20,
806+
// 0x21 - 0x3f is reserved
807+
HID_USAGE_PAGE_MEDICAL_INSTRUMENT = 0x40,
789808
HID_USAGE_PAGE_LIGHTING_AND_ILLUMINATION = 0x59,
790809
HID_USAGE_PAGE_MONITOR = 0x80, // 0x80 - 0x83
791810
HID_USAGE_PAGE_POWER = 0x84, // 0x084 - 0x87
@@ -871,16 +890,6 @@ enum {
871890
HID_USAGE_DESKTOP_SYSTEM_DISPLAY_LCD_AUTOSCALE = 0xB7
872891
};
873892

874-
/// HID Usage Table: Digitizer Page (0x0D)
875-
enum {
876-
// Touch Screen.
877-
HID_USAGE_DIGITIZER_TOUCH_SCREEN = 0x04,
878-
879-
// Stylus Pen.
880-
HID_USAGE_DIGITIZER_STYLUS = 0x20,
881-
};
882-
883-
884893
/// HID Usage Table: Consumer Page (0x0C)
885894
/// Only contains controls that supported by Windows (whole list is too long)
886895
enum {
@@ -939,48 +948,125 @@ enum {
939948
HID_USAGE_CONSUMER_AC_PAN = 0x0238,
940949
};
941950

942-
/// HID Usage Table - Lighting And Illumination Page (0x59)
943-
enum {
944-
HID_USAGE_LIGHTING_LAMP_ARRAY = 0x01,
945-
HID_USAGE_LIGHTING_LAMP_ARRAY_ATTRIBUTES_REPORT = 0x02,
946-
HID_USAGE_LIGHTING_LAMP_COUNT = 0x03,
947-
HID_USAGE_LIGHTING_BOUNDING_BOX_WIDTH_IN_MICROMETERS = 0x04,
948-
HID_USAGE_LIGHTING_BOUNDING_BOX_HEIGHT_IN_MICROMETERS = 0x05,
949-
HID_USAGE_LIGHTING_BOUNDING_BOX_DEPTH_IN_MICROMETERS = 0x06,
950-
HID_USAGE_LIGHTING_LAMP_ARRAY_KIND = 0x07,
951-
HID_USAGE_LIGHTING_MIN_UPDATE_INTERVAL_IN_MICROSECONDS = 0x08,
952-
HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_REQUEST_REPORT = 0x20,
953-
HID_USAGE_LIGHTING_LAMP_ID = 0x21,
954-
HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_RESPONSE_REPORT = 0x22,
955-
HID_USAGE_LIGHTING_POSITION_X_IN_MICROMETERS = 0x23,
956-
HID_USAGE_LIGHTING_POSITION_Y_IN_MICROMETERS = 0x24,
957-
HID_USAGE_LIGHTING_POSITION_Z_IN_MICROMETERS = 0x25,
958-
HID_USAGE_LIGHTING_LAMP_PURPOSES = 0x26,
959-
HID_USAGE_LIGHTING_UPDATE_LATENCY_IN_MICROSECONDS = 0x27,
960-
HID_USAGE_LIGHTING_RED_LEVEL_COUNT = 0x28,
961-
HID_USAGE_LIGHTING_GREEN_LEVEL_COUNT = 0x29,
962-
HID_USAGE_LIGHTING_BLUE_LEVEL_COUNT = 0x2A,
963-
HID_USAGE_LIGHTING_INTENSITY_LEVEL_COUNT = 0x2B,
964-
HID_USAGE_LIGHTING_IS_PROGRAMMABLE = 0x2C,
965-
HID_USAGE_LIGHTING_INPUT_BINDING = 0x2D,
966-
HID_USAGE_LIGHTING_LAMP_MULTI_UPDATE_REPORT = 0x50,
967-
HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL = 0x51,
968-
HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL = 0x52,
969-
HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL = 0x53,
970-
HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL = 0x54,
971-
HID_USAGE_LIGHTING_LAMP_UPDATE_FLAGS = 0x55,
972-
HID_USAGE_LIGHTING_LAMP_RANGE_UPDATE_REPORT = 0x60,
973-
HID_USAGE_LIGHTING_LAMP_ID_START = 0x61,
974-
HID_USAGE_LIGHTING_LAMP_ID_END = 0x62,
975-
HID_USAGE_LIGHTING_LAMP_ARRAY_CONTROL_REPORT = 0x70,
976-
HID_USAGE_LIGHTING_AUTONOMOUS_MODE = 0x71,
977-
};
978-
979-
/// HID Usage Table: FIDO Alliance Page (0xF1D0)
951+
/// HID Usage Table: Digitizer Page (0x0D)
980952
enum {
981-
HID_USAGE_FIDO_U2FHID = 0x01, // U2FHID usage for top-level collection
982-
HID_USAGE_FIDO_DATA_IN = 0x20, // Raw IN data report
983-
HID_USAGE_FIDO_DATA_OUT = 0x21 // Raw OUT data report
953+
HID_USAGE_DIGITIZER_UNDEFINED = 0x00,
954+
HID_USAGE_DIGITIZER_DIGITIZER = 0x01, // CA
955+
HID_USAGE_DIGITIZER_PEN = 0x02, // CA
956+
HID_USAGE_DIGITIZER_LIGHT_PEN = 0x03, // CA
957+
HID_USAGE_DIGITIZER_TOUCH_SCREEN = 0x04, // CA
958+
HID_USAGE_DIGITIZER_TOUCH_PAD = 0x05, // CA
959+
HID_USAGE_DIGITIZER_WHITEBOARD = 0x06, // CA
960+
HID_USAGE_DIGITIZER_COORDINATE_MEASURING_MACHINE = 0x07, // CA
961+
HID_USAGE_DIGITIZER_3D_DIGITIZER = 0x08, // CA
962+
HID_USAGE_DIGITIZER_STEREO_PLOTTER = 0x09, // CA
963+
HID_USAGE_DIGITIZER_ARTICULATED_ARM = 0x0A, // CA
964+
HID_USAGE_DIGITIZER_ARMATURE = 0x0B, // CA
965+
HID_USAGE_DIGITIZER_MULTIPLE_POINT_DIGITIZER = 0x0C, // CA
966+
HID_USAGE_DIGITIZER_FREE_SPACE_WAND = 0x0D, // CA
967+
HID_USAGE_DIGITIZER_DEVICE_CONFIGURATION = 0x0E, // CA
968+
HID_USAGE_DIGITIZER_CAPACITIVE_HEAT_MAP_DIGITIZER = 0x0F, // CA
969+
// Reserved (0x10 - 0x1F)
970+
HID_USAGE_DIGITIZER_STYLUS = 0x20, // CA/CL
971+
HID_USAGE_DIGITIZER_PUCK = 0x21, // CL
972+
HID_USAGE_DIGITIZER_FINGER = 0x22, // CL
973+
HID_USAGE_DIGITIZER_DEVICE_SETTINGS = 0x23, // CL
974+
HID_USAGE_DIGITIZER_CHARACTER_GESTURE = 0x24, // CL
975+
// Reserved (0x25 - 0x2F)
976+
HID_USAGE_DIGITIZER_TIP_PRESSURE = 0x30, // DV
977+
HID_USAGE_DIGITIZER_BARREL_PRESSURE = 0x31, // DV
978+
HID_USAGE_DIGITIZER_IN_RANGE = 0x32, // MC
979+
HID_USAGE_DIGITIZER_TOUCH = 0x33, // MC
980+
HID_USAGE_DIGITIZER_UNTOUCH = 0x34, // OSC
981+
HID_USAGE_DIGITIZER_TAP = 0x35, // OSC
982+
HID_USAGE_DIGITIZER_QUALITY = 0x36, // DV
983+
HID_USAGE_DIGITIZER_DATA_VALID = 0x37, // MC
984+
HID_USAGE_DIGITIZER_TRANSDUCER_INDEX = 0x38, // DV
985+
HID_USAGE_DIGITIZER_TABLET_FUNCTION_KEYS = 0x39, // CL
986+
HID_USAGE_DIGITIZER_PROGRAM_CHANGE_KEYS = 0x3A, // CL
987+
HID_USAGE_DIGITIZER_BATTERY_STRENGTH = 0x3B, // DV
988+
HID_USAGE_DIGITIZER_INVERT = 0x3C, // MC
989+
HID_USAGE_DIGITIZER_X_TILT = 0x3D, // DV
990+
HID_USAGE_DIGITIZER_Y_TILT = 0x3E, // DV
991+
HID_USAGE_DIGITIZER_AZIMUTH = 0x3F, // DV
992+
HID_USAGE_DIGITIZER_ALTITUDE = 0x40, // DV
993+
HID_USAGE_DIGITIZER_TWIST = 0x41, // DV
994+
HID_USAGE_DIGITIZER_TIP_SWITCH = 0x42, // MC
995+
HID_USAGE_DIGITIZER_SECONDARY_TIP_SWITCH = 0x43, // MC
996+
HID_USAGE_DIGITIZER_BARREL_SWITCH = 0x44, // MC
997+
HID_USAGE_DIGITIZER_ERASER = 0x45, // MC
998+
HID_USAGE_DIGITIZER_TABLET_PICK = 0x46, // MC
999+
HID_USAGE_DIGITIZER_TOUCH_VALID = 0x47, // MC
1000+
HID_USAGE_DIGITIZER_WIDTH = 0x48, // DV
1001+
HID_USAGE_DIGITIZER_HEIGHT = 0x49, // DV
1002+
// Reserved (0x4A - 0x50)
1003+
HID_USAGE_DIGITIZER_CONTACT_IDENTIFIER = 0x51, // DV
1004+
HID_USAGE_DIGITIZER_DEVICE_MODE = 0x52, // DV
1005+
HID_USAGE_DIGITIZER_DEVICE_IDENTIFIER = 0x53, // DV/SV
1006+
HID_USAGE_DIGITIZER_CONTACT_COUNT = 0x54, // DV
1007+
HID_USAGE_DIGITIZER_CONTACT_COUNT_MAXIMUM = 0x55, // SV
1008+
HID_USAGE_DIGITIZER_SCAN_TIME = 0x56, // DV
1009+
HID_USAGE_DIGITIZER_SURFACE_SWITCH = 0x57, // DF
1010+
HID_USAGE_DIGITIZER_BUTTON_SWITCH = 0x58, // DF
1011+
HID_USAGE_DIGITIZER_PAD_TYPE = 0x59, // SF
1012+
HID_USAGE_DIGITIZER_TRANSDUCER_SERIAL_NUMBER = 0x5B, // SV
1013+
HID_USAGE_DIGITIZER_PREFERRED_COLOR = 0x5C, // DV
1014+
HID_USAGE_DIGITIZER_PREFERRED_COLOR_LOCKED = 0x5D, // MC
1015+
HID_USAGE_DIGITIZER_PREFERRED_LINE_WIDTH = 0x5E, // DV
1016+
HID_USAGE_DIGITIZER_PREFERRED_LINE_WIDTH_LOCKED = 0x5F, // MC
1017+
HID_USAGE_DIGITIZER_LATENCY_MODE = 0x60, // DF
1018+
HID_USAGE_DIGITIZER_GESTURE_CHARACTER_QUALITY = 0x61, // DV
1019+
HID_USAGE_DIGITIZER_CHARACTER_GESTURE_DATA_LENGTH = 0x62, // DV
1020+
HID_USAGE_DIGITIZER_CHARACTER_GESTURE_DATA = 0x63, // DV
1021+
HID_USAGE_DIGITIZER_GESTURE_CHARACTER_ENCODING = 0x64, // NAry
1022+
HID_USAGE_DIGITIZER_UTF8_CHARACTER_GESTURE_ENCODING = 0x65, // Sel
1023+
HID_USAGE_DIGITIZER_UTF16_LE_CHARACTER_GESTURE_ENCODING = 0x66, // Sel
1024+
HID_USAGE_DIGITIZER_UTF16_BE_CHARACTER_GESTURE_ENCODING = 0x67, // Sel
1025+
HID_USAGE_DIGITIZER_UTF32_LE_CHARACTER_GESTURE_ENCODING = 0x68, // Sel
1026+
HID_USAGE_DIGITIZER_UTF32_BE_CHARACTER_GESTURE_ENCODING = 0x69, // Sel
1027+
HID_USAGE_DIGITIZER_CAPACITIVE_HEAT_MAP_VENDOR_ID = 0x6A, // SV
1028+
HID_USAGE_DIGITIZER_CAPACITIVE_HEAT_MAP_VERSION = 0x6B, // SV
1029+
HID_USAGE_DIGITIZER_CAPACITIVE_HEAT_MAP_FRAME_DATA = 0x6C, // DV
1030+
HID_USAGE_DIGITIZER_GESTURE_CHARACTER_ENABLE = 0x6D, // DF
1031+
HID_USAGE_DIGITIZER_TRANSDUCER_SERIAL_NUMBER_PART2 = 0x6E, // SV
1032+
HID_USAGE_DIGITIZER_NO_PREFERRED_COLOR = 0x6F, // DF
1033+
HID_USAGE_DIGITIZER_PREFERRED_LINE_STYLE = 0x70, // NAry
1034+
HID_USAGE_DIGITIZER_PREFERRED_LINE_STYLE_LOCKED = 0x71, // MC
1035+
HID_USAGE_DIGITIZER_INK = 0x72, // Sel
1036+
HID_USAGE_DIGITIZER_PENCIL = 0x73, // Sel
1037+
HID_USAGE_DIGITIZER_HIGHLIGHTER = 0x74, // Sel
1038+
HID_USAGE_DIGITIZER_CHISEL_MARKER = 0x75, // Sel
1039+
HID_USAGE_DIGITIZER_BRUSH = 0x76, // Sel
1040+
HID_USAGE_DIGITIZER_NO_PREFERENCE = 0x77, // Sel
1041+
// Reserved (0x78 - 0x7F)
1042+
HID_USAGE_DIGITIZER_DIGITIZER_DIAGNOSTIC = 0x80, // CL
1043+
HID_USAGE_DIGITIZER_DIGITIZER_ERROR = 0x81, // NAry
1044+
HID_USAGE_DIGITIZER_ERR_NORMAL_STATUS = 0x82, // Sel
1045+
HID_USAGE_DIGITIZER_ERR_TRANSDUCERS_EXCEEDED = 0x83, // Sel
1046+
HID_USAGE_DIGITIZER_ERR_FULL_TRANS_FEATURES_UNAVAILABLE = 0x84, // Sel
1047+
HID_USAGE_DIGITIZER_ERR_CHARGE_LOW = 0x85, // Sel
1048+
// Reserved (0x86 - 0x8F)
1049+
HID_USAGE_DIGITIZER_TRANSDUCER_SOFTWARE_INFO = 0x90, // CL
1050+
HID_USAGE_DIGITIZER_TRANSDUCER_VENDOR_ID = 0x91, // SV
1051+
HID_USAGE_DIGITIZER_TRANSDUCER_PRODUCT_ID = 0x92, // SV
1052+
HID_USAGE_DIGITIZER_DEVICE_SUPPORTED_PROTOCOLS = 0x93, // NAry/CL
1053+
HID_USAGE_DIGITIZER_TRANSDUCER_SUPPORTED_PROTOCOLS = 0x94, // NAry/CL
1054+
HID_USAGE_DIGITIZER_NO_PROTOCOL = 0x95, // Sel
1055+
HID_USAGE_DIGITIZER_WACOM_AES_PROTOCOL = 0x96, // Sel
1056+
HID_USAGE_DIGITIZER_USI_PROTOCOL = 0x97, // Sel
1057+
HID_USAGE_DIGITIZER_MICROSOFT_PEN_PROTOCOL = 0x98, // Sel
1058+
// Reserved (0x99 - 0x9F)
1059+
HID_USAGE_DIGITIZER_SUPPORTED_REPORT_RATES = 0xA0, // SV/CL
1060+
HID_USAGE_DIGITIZER_REPORT_RATE = 0xA1, // DV
1061+
HID_USAGE_DIGITIZER_TRANSDUCER_CONNECTED = 0xA2, // SF
1062+
HID_USAGE_DIGITIZER_SWITCH_DISABLED = 0xA3, // Sel
1063+
HID_USAGE_DIGITIZER_SWITCH_UNIMPLEMENTED = 0xA4, // Sel
1064+
HID_USAGE_DIGITIZER_TRANSDUCER_SWITCHES = 0xA5, // CL
1065+
HID_USAGE_DIGITIZER_TRANSDUCER_INDEX_SELECTOR = 0xA6, // DV
1066+
// Reserved (0xA7 - 0xAF)
1067+
HID_USAGE_DIGITIZER_BUTTON_PRESS_THRESHOLD = 0xB0, // DV
1068+
1069+
// Reserved (0xB1 - 0xFFFF)
9841070
};
9851071

9861072
/// HID Usage Table: Physical Input Device Page (0x0F)
@@ -1093,6 +1179,50 @@ enum {
10931179
HID_USAGE_PID_RAM_POOL_AVAILABLE = 0xac,
10941180
};
10951181

1182+
/// HID Usage Table - Lighting And Illumination Page (0x59)
1183+
enum {
1184+
HID_USAGE_LIGHTING_LAMP_ARRAY = 0x01,
1185+
HID_USAGE_LIGHTING_LAMP_ARRAY_ATTRIBUTES_REPORT = 0x02,
1186+
HID_USAGE_LIGHTING_LAMP_COUNT = 0x03,
1187+
HID_USAGE_LIGHTING_BOUNDING_BOX_WIDTH_IN_MICROMETERS = 0x04,
1188+
HID_USAGE_LIGHTING_BOUNDING_BOX_HEIGHT_IN_MICROMETERS = 0x05,
1189+
HID_USAGE_LIGHTING_BOUNDING_BOX_DEPTH_IN_MICROMETERS = 0x06,
1190+
HID_USAGE_LIGHTING_LAMP_ARRAY_KIND = 0x07,
1191+
HID_USAGE_LIGHTING_MIN_UPDATE_INTERVAL_IN_MICROSECONDS = 0x08,
1192+
HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_REQUEST_REPORT = 0x20,
1193+
HID_USAGE_LIGHTING_LAMP_ID = 0x21,
1194+
HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_RESPONSE_REPORT = 0x22,
1195+
HID_USAGE_LIGHTING_POSITION_X_IN_MICROMETERS = 0x23,
1196+
HID_USAGE_LIGHTING_POSITION_Y_IN_MICROMETERS = 0x24,
1197+
HID_USAGE_LIGHTING_POSITION_Z_IN_MICROMETERS = 0x25,
1198+
HID_USAGE_LIGHTING_LAMP_PURPOSES = 0x26,
1199+
HID_USAGE_LIGHTING_UPDATE_LATENCY_IN_MICROSECONDS = 0x27,
1200+
HID_USAGE_LIGHTING_RED_LEVEL_COUNT = 0x28,
1201+
HID_USAGE_LIGHTING_GREEN_LEVEL_COUNT = 0x29,
1202+
HID_USAGE_LIGHTING_BLUE_LEVEL_COUNT = 0x2A,
1203+
HID_USAGE_LIGHTING_INTENSITY_LEVEL_COUNT = 0x2B,
1204+
HID_USAGE_LIGHTING_IS_PROGRAMMABLE = 0x2C,
1205+
HID_USAGE_LIGHTING_INPUT_BINDING = 0x2D,
1206+
HID_USAGE_LIGHTING_LAMP_MULTI_UPDATE_REPORT = 0x50,
1207+
HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL = 0x51,
1208+
HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL = 0x52,
1209+
HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL = 0x53,
1210+
HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL = 0x54,
1211+
HID_USAGE_LIGHTING_LAMP_UPDATE_FLAGS = 0x55,
1212+
HID_USAGE_LIGHTING_LAMP_RANGE_UPDATE_REPORT = 0x60,
1213+
HID_USAGE_LIGHTING_LAMP_ID_START = 0x61,
1214+
HID_USAGE_LIGHTING_LAMP_ID_END = 0x62,
1215+
HID_USAGE_LIGHTING_LAMP_ARRAY_CONTROL_REPORT = 0x70,
1216+
HID_USAGE_LIGHTING_AUTONOMOUS_MODE = 0x71,
1217+
};
1218+
1219+
/// HID Usage Table: FIDO Alliance Page (0xF1D0)
1220+
enum {
1221+
HID_USAGE_FIDO_U2FHID = 0x01, // U2FHID usage for top-level collection
1222+
HID_USAGE_FIDO_DATA_IN = 0x20, // Raw IN data report
1223+
HID_USAGE_FIDO_DATA_OUT = 0x21 // Raw OUT data report
1224+
};
1225+
10961226
/*--------------------------------------------------------------------
10971227
* ASCII to KEYCODE Conversion
10981228
* Expand to array of [128][2] (shift, keycode)

src/class/hid/hid_device.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,8 @@ void tud_hid_report_failed_cb(uint8_t instance, hid_report_type_t report_type, u
273273
__VA_ARGS__ \
274274
HID_USAGE ( HID_USAGE_DIGITIZER_STYLUS ) , \
275275
HID_COLLECTION ( HID_COLLECTION_PHYSICAL ) , \
276-
HID_USAGE_PAGE ( HID_USAGE_PAGE_TIP_SWITCH ) , \
277-
HID_USAGE_PAGE ( HID_USAGE_PAGE_IN_RANGE ) , \
276+
HID_USAGE_PAGE ( HID_USAGE_DIGITIZER_TIP_SWITCH ) , \
277+
HID_USAGE_PAGE ( HID_USAGE_DIGITIZER_IN_RANGE ) , \
278278
HID_LOGICAL_MIN ( 0 ), \
279279
HID_LOGICAL_MAX ( 1 ), \
280280
HID_REPORT_SIZE ( 1 ), \

0 commit comments

Comments
 (0)