Abuse the the C preprocessor so that the HID macros can automatically encode data into the array from the HID macros automagically, by specifying the bit-width of the data, and the data itself as a single integer value of that width.

pull/1469/head
Dean Camera 14 years ago
parent 47fec03694
commit efd57cfe51

@ -45,22 +45,21 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] =
{ {
HID_RI_USAGE_PAGE(16), 0x00, 0xFF, /* Vendor Page 1 */ HID_RI_USAGE_PAGE(16, 0x00FF), /* Vendor Page 1 */
HID_RI_USAGE(8), 0x01, /* Vendor Usage 1 */ HID_RI_USAGE(8, 0x01), /* Vendor Usage 1 */
HID_RI_COLLECTION(8), 0x01, /* Vendor Usage 1 */ HID_RI_COLLECTION(8, 0x01), /* Vendor Usage 1 */
HID_RI_USAGE(8), 0x02, /* Vendor Usage 2 */ HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 0xFF, HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_USAGE(8, 0x03), /* Vendor Usage 3 */
HID_RI_USAGE(8), 0x03, /* Vendor Usage 3 */ HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
HID_RI_LOGICAL_MAXIMUM(8), 0xFF, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE),
HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -45,30 +45,30 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x04, /* Joystick */ HID_RI_USAGE(8, 0x04), /* Joystick */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE(8), 0x01, /* Pointer */ HID_RI_USAGE(8, 0x01), /* Pointer */
HID_RI_COLLECTION(8), 0x00, /* Physical */ HID_RI_COLLECTION(8, 0x00), /* Physical */
HID_RI_USAGE(8), 0x30, /* Usage X */ HID_RI_USAGE(8, 0x30), /* Usage X */
HID_RI_USAGE(8), 0x31, /* Usage Y */ HID_RI_USAGE(8, 0x31), /* Usage Y */
HID_RI_LOGICAL_MINIMUM(8), -100, HID_RI_LOGICAL_MINIMUM(8, -100),
HID_RI_LOGICAL_MAXIMUM(8), 100, HID_RI_LOGICAL_MAXIMUM(8, 100),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), 2, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
HID_RI_USAGE_PAGE(8), 0x09, /* Button */ HID_RI_USAGE_PAGE(8, 0x09), /* Button */
HID_RI_USAGE(8), 0x02, /* Button 1 */ HID_RI_USAGE(8, 0x02), /* Button 1 */
HID_RI_USAGE(8), 0x01, /* Button 2 */ HID_RI_USAGE(8, 0x01), /* Button 2 */
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 2, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 6, HID_RI_REPORT_SIZE(8, 0x06),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -45,40 +45,37 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x06, /* Keyboard */ HID_RI_USAGE(8, 0x06), /* Keyboard */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 8, HID_RI_REPORT_COUNT(8, 0x08),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ HID_RI_REPORT_COUNT(8, 0x05),
HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 5, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_REPORT_SIZE(8, 0x03),
HID_RI_REPORT_COUNT(8), 1, HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
HID_RI_REPORT_SIZE(8), 3, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_OUTPUT(8), HID_IOF_CONSTANT, HID_RI_LOGICAL_MAXIMUM(8, 0x65),
HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
HID_RI_LOGICAL_MAXIMUM(8), 0x65, HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ HID_RI_REPORT_COUNT(8, 0x06),
HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8), 6,
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -47,34 +47,32 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x02, /* Mouse */ HID_RI_USAGE(8, 0x02), /* Mouse */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE(8), 0x01, /* Pointer */ HID_RI_USAGE(8, 0x01), /* Pointer */
HID_RI_COLLECTION(8), 0x00, /* Physical */ HID_RI_COLLECTION(8, 0x00), /* Physical */
HID_RI_USAGE_PAGE(8), 0x09, /* Button */ HID_RI_USAGE_PAGE(8, 0x09), /* Button */
HID_RI_USAGE_MINIMUM(8), 0x01, HID_RI_USAGE_MINIMUM(8, 0x01),
HID_RI_USAGE_MAXIMUM(8), 0x03, HID_RI_USAGE_MAXIMUM(8, 0x03),
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_COUNT(8), 3, HID_RI_REPORT_COUNT(8, 0x03),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x05),
HID_RI_REPORT_SIZE(8), 5, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8, 0x30), /* Usage X */
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE(8, 0x31), /* Usage Y */
HID_RI_USAGE(8), 0x30, /* Usage X */ HID_RI_LOGICAL_MINIMUM(8, -1),
HID_RI_USAGE(8), 0x31, /* Usage Y */ HID_RI_LOGICAL_MAXIMUM(8, 1),
HID_RI_LOGICAL_MINIMUM(8), -1, HID_RI_PHYSICAL_MINIMUM(8, -1),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_PHYSICAL_MAXIMUM(8, 1),
HID_RI_PHYSICAL_MINIMUM(8), -1, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_PHYSICAL_MAXIMUM(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), 2, HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };
@ -82,40 +80,37 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
/** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */ /** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */
USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x06, /* Keyboard */ HID_RI_USAGE(8, 0x06), /* Keyboard */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 8, HID_RI_REPORT_COUNT(8, 0x08),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ HID_RI_REPORT_COUNT(8, 0x05),
HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 5, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_REPORT_SIZE(8, 0x03),
HID_RI_REPORT_COUNT(8), 1, HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
HID_RI_REPORT_SIZE(8), 3, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_OUTPUT(8), HID_IOF_CONSTANT, HID_RI_LOGICAL_MAXIMUM(8, 0x65),
HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
HID_RI_LOGICAL_MAXIMUM(8), 0x65, HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ HID_RI_REPORT_COUNT(8, 0x06),
HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8), 6,
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -58,40 +58,37 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x06, /* Keyboard */ HID_RI_USAGE(8, 0x06), /* Keyboard */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 8, HID_RI_REPORT_COUNT(8, 0x08),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ HID_RI_REPORT_COUNT(8, 0x05),
HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 5, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_REPORT_SIZE(8, 0x03),
HID_RI_REPORT_COUNT(8), 1, HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
HID_RI_REPORT_SIZE(8), 3, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_OUTPUT(8), HID_IOF_CONSTANT, HID_RI_LOGICAL_MAXIMUM(8, 0x65),
HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
HID_RI_LOGICAL_MAXIMUM(8), 0x65, HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ HID_RI_REPORT_COUNT(8, 0x06),
HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8), 6,
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -45,34 +45,32 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x02, /* Mouse */ HID_RI_USAGE(8, 0x02), /* Mouse */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE(8), 0x01, /* Pointer */ HID_RI_USAGE(8, 0x01), /* Pointer */
HID_RI_COLLECTION(8), 0x00, /* Physical */ HID_RI_COLLECTION(8, 0x00), /* Physical */
HID_RI_USAGE_PAGE(8), 0x09, /* Button */ HID_RI_USAGE_PAGE(8, 0x09), /* Button */
HID_RI_USAGE_MINIMUM(8), 0x01, HID_RI_USAGE_MINIMUM(8, 0x01),
HID_RI_USAGE_MAXIMUM(8), 0x03, HID_RI_USAGE_MAXIMUM(8, 0x03),
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_COUNT(8), 3, HID_RI_REPORT_COUNT(8, 0x03),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x05),
HID_RI_REPORT_SIZE(8), 5, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8, 0x30), /* Usage X */
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE(8, 0x31), /* Usage Y */
HID_RI_USAGE(8), 0x30, /* Usage X */ HID_RI_LOGICAL_MINIMUM(8, -1),
HID_RI_USAGE(8), 0x31, /* Usage Y */ HID_RI_LOGICAL_MAXIMUM(8, 1),
HID_RI_LOGICAL_MINIMUM(8), -1, HID_RI_PHYSICAL_MINIMUM(8, -1),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_PHYSICAL_MAXIMUM(8, 1),
HID_RI_PHYSICAL_MINIMUM(8), -1, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_PHYSICAL_MAXIMUM(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), 2, HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -57,34 +57,32 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x02, /* Mouse */ HID_RI_USAGE(8, 0x02), /* Mouse */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE(8), 0x01, /* Pointer */ HID_RI_USAGE(8, 0x01), /* Pointer */
HID_RI_COLLECTION(8), 0x00, /* Physical */ HID_RI_COLLECTION(8, 0x00), /* Physical */
HID_RI_USAGE_PAGE(8), 0x09, /* Button */ HID_RI_USAGE_PAGE(8, 0x09), /* Button */
HID_RI_USAGE_MINIMUM(8), 0x01, HID_RI_USAGE_MINIMUM(8, 0x01),
HID_RI_USAGE_MAXIMUM(8), 0x03, HID_RI_USAGE_MAXIMUM(8, 0x03),
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_COUNT(8), 3, HID_RI_REPORT_COUNT(8, 0x03),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x05),
HID_RI_REPORT_SIZE(8), 5, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8, 0x30), /* Usage X */
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE(8, 0x31), /* Usage Y */
HID_RI_USAGE(8), 0x30, /* Usage X */ HID_RI_LOGICAL_MINIMUM(8, -1),
HID_RI_USAGE(8), 0x31, /* Usage Y */ HID_RI_LOGICAL_MAXIMUM(8, 1),
HID_RI_LOGICAL_MINIMUM(8), -1, HID_RI_PHYSICAL_MINIMUM(8, -1),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_PHYSICAL_MAXIMUM(8, 1),
HID_RI_PHYSICAL_MINIMUM(8), -1, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_PHYSICAL_MAXIMUM(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), 2, HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -45,22 +45,21 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] =
{ {
HID_RI_USAGE_PAGE(16), 0x00, 0xFF, /* Vendor Page 1 */ HID_RI_USAGE_PAGE(16, 0x00FF), /* Vendor Page 1 */
HID_RI_USAGE(8), 0x01, /* Vendor Usage 1 */ HID_RI_USAGE(8, 0x01), /* Vendor Usage 1 */
HID_RI_COLLECTION(8), 0x01, /* Vendor Usage 1 */ HID_RI_COLLECTION(8, 0x01), /* Vendor Usage 1 */
HID_RI_USAGE(8), 0x02, /* Vendor Usage 2 */ HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 0xFF, HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_USAGE(8, 0x03), /* Vendor Usage 3 */
HID_RI_USAGE(8), 0x03, /* Vendor Usage 3 */ HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
HID_RI_LOGICAL_MAXIMUM(8), 0xFF, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE),
HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -45,30 +45,30 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x04, /* Joystick */ HID_RI_USAGE(8, 0x04), /* Joystick */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE(8), 0x01, /* Pointer */ HID_RI_USAGE(8, 0x01), /* Pointer */
HID_RI_COLLECTION(8), 0x00, /* Physical */ HID_RI_COLLECTION(8, 0x00), /* Physical */
HID_RI_USAGE(8), 0x30, /* Usage X */ HID_RI_USAGE(8, 0x30), /* Usage X */
HID_RI_USAGE(8), 0x31, /* Usage Y */ HID_RI_USAGE(8, 0x31), /* Usage Y */
HID_RI_LOGICAL_MINIMUM(8), -100, HID_RI_LOGICAL_MINIMUM(8, -100),
HID_RI_LOGICAL_MAXIMUM(8), 100, HID_RI_LOGICAL_MAXIMUM(8, 100),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), 2, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
HID_RI_USAGE_PAGE(8), 0x09, /* Button */ HID_RI_USAGE_PAGE(8, 0x09), /* Button */
HID_RI_USAGE(8), 0x02, /* Button 1 */ HID_RI_USAGE(8, 0x02), /* Button 1 */
HID_RI_USAGE(8), 0x01, /* Button 2 */ HID_RI_USAGE(8, 0x01), /* Button 2 */
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 2, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 6, HID_RI_REPORT_SIZE(8, 0x06),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -46,40 +46,37 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x06, /* Keyboard */ HID_RI_USAGE(8, 0x06), /* Keyboard */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 8, HID_RI_REPORT_COUNT(8, 0x08),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ HID_RI_REPORT_COUNT(8, 0x05),
HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 5, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_REPORT_SIZE(8, 0x03),
HID_RI_REPORT_COUNT(8), 1, HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
HID_RI_REPORT_SIZE(8), 3, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_OUTPUT(8), HID_IOF_CONSTANT, HID_RI_LOGICAL_MAXIMUM(8, 0x65),
HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
HID_RI_LOGICAL_MAXIMUM(8), 0x65, HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ HID_RI_REPORT_COUNT(8, 0x06),
HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8), 6,
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -48,34 +48,32 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x02, /* Mouse */ HID_RI_USAGE(8, 0x02), /* Mouse */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE(8), 0x01, /* Pointer */ HID_RI_USAGE(8, 0x01), /* Pointer */
HID_RI_COLLECTION(8), 0x00, /* Physical */ HID_RI_COLLECTION(8, 0x00), /* Physical */
HID_RI_USAGE_PAGE(8), 0x09, /* Button */ HID_RI_USAGE_PAGE(8, 0x09), /* Button */
HID_RI_USAGE_MINIMUM(8), 0x01, HID_RI_USAGE_MINIMUM(8, 0x01),
HID_RI_USAGE_MAXIMUM(8), 0x03, HID_RI_USAGE_MAXIMUM(8, 0x03),
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_COUNT(8), 3, HID_RI_REPORT_COUNT(8, 0x03),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x05),
HID_RI_REPORT_SIZE(8), 5, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8, 0x30), /* Usage X */
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE(8, 0x31), /* Usage Y */
HID_RI_USAGE(8), 0x30, /* Usage X */ HID_RI_LOGICAL_MINIMUM(8, -1),
HID_RI_USAGE(8), 0x31, /* Usage Y */ HID_RI_LOGICAL_MAXIMUM(8, 1),
HID_RI_LOGICAL_MINIMUM(8), -1, HID_RI_PHYSICAL_MINIMUM(8, -1),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_PHYSICAL_MAXIMUM(8, 1),
HID_RI_PHYSICAL_MINIMUM(8), -1, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_PHYSICAL_MAXIMUM(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), 2, HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };
@ -83,40 +81,37 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
/** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */ /** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */
USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x06, /* Keyboard */ HID_RI_USAGE(8, 0x06), /* Keyboard */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 8, HID_RI_REPORT_COUNT(8, 0x08),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ HID_RI_REPORT_COUNT(8, 0x05),
HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 5, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_REPORT_SIZE(8, 0x03),
HID_RI_REPORT_COUNT(8), 1, HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
HID_RI_REPORT_SIZE(8), 3, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_OUTPUT(8), HID_IOF_CONSTANT, HID_RI_LOGICAL_MAXIMUM(8, 0x65),
HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
HID_RI_LOGICAL_MAXIMUM(8), 0x65, HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ HID_RI_REPORT_COUNT(8, 0x06),
HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8), 6,
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -45,34 +45,32 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x02, /* Mouse */ HID_RI_USAGE(8, 0x02), /* Mouse */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE(8), 0x01, /* Pointer */ HID_RI_USAGE(8, 0x01), /* Pointer */
HID_RI_COLLECTION(8), 0x00, /* Physical */ HID_RI_COLLECTION(8, 0x00), /* Physical */
HID_RI_USAGE_PAGE(8), 0x09, /* Button */ HID_RI_USAGE_PAGE(8, 0x09), /* Button */
HID_RI_USAGE_MINIMUM(8), 0x01, HID_RI_USAGE_MINIMUM(8, 0x01),
HID_RI_USAGE_MAXIMUM(8), 0x03, HID_RI_USAGE_MAXIMUM(8, 0x03),
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_COUNT(8), 3, HID_RI_REPORT_COUNT(8, 0x03),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x05),
HID_RI_REPORT_SIZE(8), 5, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8, 0x30), /* Usage X */
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE(8, 0x31), /* Usage Y */
HID_RI_USAGE(8), 0x30, /* Usage X */ HID_RI_LOGICAL_MINIMUM(8, -1),
HID_RI_USAGE(8), 0x31, /* Usage Y */ HID_RI_LOGICAL_MAXIMUM(8, 1),
HID_RI_LOGICAL_MINIMUM(8), -1, HID_RI_PHYSICAL_MINIMUM(8, -1),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_PHYSICAL_MAXIMUM(8, 1),
HID_RI_PHYSICAL_MINIMUM(8), -1, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_PHYSICAL_MAXIMUM(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), 2, HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -45,32 +45,32 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x02, /* Mouse */ HID_RI_USAGE(8, 0x02), /* Mouse */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE(8), 0x01, /* Pointer */ HID_RI_USAGE(8, 0x01), /* Pointer */
HID_RI_COLLECTION(8), 0x00, /* Physical */ HID_RI_COLLECTION(8, 0x00), /* Physical */
HID_RI_USAGE_PAGE(8), 0x09, /* Button */ HID_RI_USAGE_PAGE(8, 0x09), /* Button */
HID_RI_USAGE_MINIMUM(8), 0x01, HID_RI_USAGE_MINIMUM(8, 0x01),
HID_RI_USAGE_MAXIMUM(8), 0x03, HID_RI_USAGE_MAXIMUM(8, 0x03),
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_COUNT(8), 3, HID_RI_REPORT_COUNT(8, 0x03),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x05),
HID_RI_REPORT_SIZE(8), 5, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8, 0x30), /* Usage X */
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE(8, 0x31), /* Usage Y */
HID_RI_USAGE(8), 0x30, /* Usage X */ HID_RI_LOGICAL_MINIMUM(8, -1),
HID_RI_USAGE(8), 0x31, /* Usage Y */ HID_RI_LOGICAL_MAXIMUM(8, 1),
HID_RI_LOGICAL_MINIMUM(8), -128, HID_RI_PHYSICAL_MINIMUM(8, -1),
HID_RI_LOGICAL_MAXIMUM(8), 127, HID_RI_PHYSICAL_MAXIMUM(8, 1),
HID_RI_REPORT_COUNT(8), 2, HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -62,6 +62,15 @@
#define HID_RI_DATA_BITS_16 0x02 #define HID_RI_DATA_BITS_16 0x02
#define HID_RI_DATA_BITS_32 0x03 #define HID_RI_DATA_BITS_32 0x03
#define HID_RI_DATA_BITS(DataBits) HID_RI_DATA_BITS_ ## DataBits #define HID_RI_DATA_BITS(DataBits) HID_RI_DATA_BITS_ ## DataBits
#define _HID_RI_ENCODE_0(Data) /* No Data */
#define _HID_RI_ENCODE_8(Data) , (Data & 0xFF)
#define _HID_RI_ENCODE_16(Data) _HID_RI_ENCODE_8(Data >> 8) _HID_RI_ENCODE_8(Data)
#define _HID_RI_ENCODE_32(Data) _HID_RI_ENCODE_16(Data >> 16) _HID_RI_ENCODE_16(Data)
#define _HID_RI_ENCODE(DataBits, ...) _HID_RI_ENCODE_ ## DataBits(__VA_ARGS__)
#define _HID_RI_ENTRY(Type, Tag, DataBits, ...) \
(Type | Tag | HID_RI_DATA_BITS(DataBits)) _HID_RI_ENCODE(DataBits, (__VA_ARGS__))
#endif #endif
/* Public Interface - May be used in end-application: */ /* Public Interface - May be used in end-application: */
@ -90,26 +99,26 @@
/** \name HID Report Descriptor Item Macros */ /** \name HID Report Descriptor Item Macros */
//@{ //@{
#define HID_RI_INPUT(DataBits) (HID_RI_TYPE_MAIN | 0x80 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_INPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x80, DataBits, __VA_ARGS__)
#define HID_RI_OUTPUT(DataBits) (HID_RI_TYPE_MAIN | 0x90 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_OUTPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x90, DataBits, __VA_ARGS__)
#define HID_RI_COLLECTION(DataBits) (HID_RI_TYPE_MAIN | 0xA0 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_COLLECTION(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xA0, DataBits, __VA_ARGS__)
#define HID_RI_FEATURE(DataBits) (HID_RI_TYPE_MAIN | 0xB0 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_FEATURE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xB0, DataBits, __VA_ARGS__)
#define HID_RI_END_COLLECTION(DataBits) (HID_RI_TYPE_MAIN | 0xC0 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_END_COLLECTION(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xC0, DataBits, __VA_ARGS__)
#define HID_RI_USAGE_PAGE(DataBits) (HID_RI_TYPE_GLOBAL | 0x00 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_USAGE_PAGE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x00, DataBits, __VA_ARGS__)
#define HID_RI_LOGICAL_MINIMUM(DataBits) (HID_RI_TYPE_GLOBAL | 0x10 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_LOGICAL_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x10, DataBits, __VA_ARGS__)
#define HID_RI_LOGICAL_MAXIMUM(DataBits) (HID_RI_TYPE_GLOBAL | 0x20 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_LOGICAL_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x20, DataBits, __VA_ARGS__)
#define HID_RI_PHYSICAL_MINIMUM(DataBits) (HID_RI_TYPE_GLOBAL | 0x30 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_PHYSICAL_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x30, DataBits, __VA_ARGS__)
#define HID_RI_PHYSICAL_MAXIMUM(DataBits) (HID_RI_TYPE_GLOBAL | 0x40 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_PHYSICAL_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x40, DataBits, __VA_ARGS__)
#define HID_RI_UNIT_EXPONENT(DataBits) (HID_RI_TYPE_GLOBAL | 0x50 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_UNIT_EXPONENT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x50, DataBits, __VA_ARGS__)
#define HID_RI_UNIT(DataBits) (HID_RI_TYPE_GLOBAL | 0x60 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_UNIT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x60, DataBits, __VA_ARGS__)
#define HID_RI_REPORT_SIZE(DataBits) (HID_RI_TYPE_GLOBAL | 0x70 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_REPORT_SIZE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x70, DataBits, __VA_ARGS__)
#define HID_RI_REPORT_ID(DataBits) (HID_RI_TYPE_GLOBAL | 0x80 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_REPORT_ID(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x80, DataBits, __VA_ARGS__)
#define HID_RI_REPORT_COUNT(DataBits) (HID_RI_TYPE_GLOBAL | 0x90 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_REPORT_COUNT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x90, DataBits, __VA_ARGS__)
#define HID_RI_PUSH(DataBits) (HID_RI_TYPE_GLOBAL | 0xA0 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_PUSH(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xA0, DataBits, __VA_ARGS__)
#define HID_RI_POP(DataBits) (HID_RI_TYPE_GLOBAL | 0xB0 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_POP(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xB0, DataBits, __VA_ARGS__)
#define HID_RI_USAGE(DataBits) (HID_RI_TYPE_LOCAL | 0x00 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_USAGE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x00, DataBits, __VA_ARGS__)
#define HID_RI_USAGE_MINIMUM(DataBits) (HID_RI_TYPE_LOCAL | 0x10 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_USAGE_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x10, DataBits, __VA_ARGS__)
#define HID_RI_USAGE_MAXIMUM(DataBits) (HID_RI_TYPE_LOCAL | 0x20 | HID_RI_DATA_BITS(DataBits)) #define HID_RI_USAGE_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x20, DataBits, __VA_ARGS__)
//@} //@}
/** @} */ /** @} */

@ -46,40 +46,37 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
{ {
HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8), 0x06, /* Keyboard */ HID_RI_USAGE(8, 0x06), /* Keyboard */
HID_RI_COLLECTION(8), 0x01, /* Application */ HID_RI_COLLECTION(8, 0x01), /* Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
HID_RI_LOGICAL_MINIMUM(8), 0, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 1, HID_RI_LOGICAL_MAXIMUM(8, 0x01),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 8, HID_RI_REPORT_COUNT(8, 0x08),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_COUNT(8), 1, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_INPUT(8, HID_IOF_CONSTANT),
HID_RI_INPUT(8), HID_IOF_CONSTANT, HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ HID_RI_REPORT_COUNT(8, 0x05),
HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_REPORT_COUNT(8), 5, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_SIZE(8), 1, HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_REPORT_SIZE(8, 0x03),
HID_RI_REPORT_COUNT(8), 1, HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
HID_RI_REPORT_SIZE(8), 3, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_OUTPUT(8), HID_IOF_CONSTANT, HID_RI_LOGICAL_MAXIMUM(8, 0x65),
HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
HID_RI_LOGICAL_MAXIMUM(8), 0x65, HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ HID_RI_REPORT_COUNT(8, 0x06),
HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_REPORT_COUNT(8), 6,
HID_RI_REPORT_SIZE(8), 8,
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

@ -57,22 +57,21 @@
*/ */
USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] = USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] =
{ {
HID_RI_USAGE_PAGE(16), 0x00, 0xFF, /* Vendor Page 1 */ HID_RI_USAGE_PAGE(16, 0x00FF), /* Vendor Page 1 */
HID_RI_USAGE(8), 0x01, /* Vendor Usage 1 */ HID_RI_USAGE(8, 0x01), /* Vendor Usage 1 */
HID_RI_COLLECTION(8), 0x01, /* Vendor Usage 1 */ HID_RI_COLLECTION(8, 0x01), /* Vendor Usage 1 */
HID_RI_USAGE(8), 0x02, /* Vendor Usage 2 */ HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8), 0xFF, HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE),
HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_USAGE(8, 0x03), /* Vendor Usage 3 */
HID_RI_USAGE(8), 0x03, /* Vendor Usage 3 */ HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MINIMUM(8), 0x00, HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
HID_RI_LOGICAL_MAXIMUM(8), 0xFF, HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_SIZE(8), 8, HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE),
HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE),
HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0),
}; };

Loading…
Cancel
Save