Embed:
(wiki syntax)
Show/hide line numbers
USBKeyboard.c
00001 /* USBKeyboard.c */ 00002 /* USB device example: Standard keyboard */ 00003 /* Copyright (c) 2011 ARM Limited. All rights reserved. */ 00004 00005 #include "stdint.h" 00006 00007 #include "USBKeyboard.h" 00008 00009 /* 00010 * Descriptors 00011 */ 00012 00013 uint8_t * USBKeyboard::ReportDesc() { 00014 static uint8_t reportDescriptor[] = { 00015 00016 /* Based on Appendix E.6 of "Device Class Definition for Human Interface 00017 Devices (HID)" Version 1.11. */ 00018 00019 USAGE_PAGE(1), 0x01, /* Generic Desktop */ 00020 USAGE(1), 0x06, /* Keyboard */ 00021 COLLECTION(1), 0x01, /* Application*/ 00022 REPORT_ID(1), REPORT_ID_KEYBOARD, 00023 00024 USAGE_PAGE(1), 0x07, /* Key Codes */ 00025 USAGE_MINIMUM(1), 0xE0, 00026 USAGE_MAXIMUM(1), 0xE7, 00027 LOGICAL_MINIMUM(1), 0x00, 00028 LOGICAL_MAXIMUM(1), 0x01, 00029 REPORT_SIZE(1), 0x01, 00030 REPORT_COUNT(1), 0x08, 00031 INPUT(1), 0x02, /* Data, Variable, Absolute */ 00032 REPORT_COUNT(1), 0x01, 00033 REPORT_SIZE(1), 0x08, 00034 INPUT(1), 0x01, /* Constant */ 00035 REPORT_COUNT(1), 0x05, 00036 REPORT_SIZE(1), 0x01, 00037 00038 00039 USAGE_PAGE(1), 0x08, /* LEDs */ 00040 USAGE_MINIMUM(1), 0x01, 00041 USAGE_MAXIMUM(1), 0x05, 00042 OUTPUT(1), 0x02, /* Data, Variable, Absolute */ 00043 REPORT_COUNT(1), 0x01, 00044 REPORT_SIZE(1), 0x03, 00045 OUTPUT(1), 0x01, /* Constant */ 00046 REPORT_COUNT(1), 0x06, 00047 REPORT_SIZE(1), 0x08, 00048 LOGICAL_MINIMUM(1), 0x00, 00049 LOGICAL_MAXIMUM(1), 0x65, 00050 00051 00052 USAGE_PAGE(1), 0x07, /* Key Codes */ 00053 USAGE_MINIMUM(1), 0x00, 00054 USAGE_MAXIMUM(1), 0x65, 00055 INPUT(1), 0x00, /* Data, Array */ 00056 END_COLLECTION(0), 00057 00058 /* Media Control */ 00059 USAGE_PAGE(1), 0x0C, 00060 USAGE(1), 0x01, 00061 COLLECTION(1), 0x01, 00062 REPORT_ID(1), REPORT_ID_VOLUME, 00063 USAGE_PAGE(1), 0x0C, 00064 LOGICAL_MINIMUM(1), 0x00, 00065 LOGICAL_MAXIMUM(1), 0x01, 00066 REPORT_SIZE(1), 0x01, 00067 REPORT_COUNT(1), 0x07, 00068 USAGE(1), 0xB5, /* Next Track */ 00069 USAGE(1), 0xB6, /* Previous Track */ 00070 USAGE(1), 0xB7, /* Stop */ 00071 USAGE(1), 0xCD, /* Play / Pause */ 00072 USAGE(1), 0xE2, /* Mute */ 00073 USAGE(1), 0xE9, /* Volume Up */ 00074 USAGE(1), 0xEA, /* Volume Down */ 00075 INPUT(1), 0x02, /* Input (Data, Variable, Absolute) */ 00076 REPORT_COUNT(1), 0x01, 00077 INPUT(1), 0x01, 00078 END_COLLECTION(0), 00079 00080 }; 00081 reportLength = sizeof(reportDescriptor); 00082 return reportDescriptor; 00083 }
Generated on Fri Jul 15 2022 02:22:27 by 1.7.2