diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2011-01-17 19:44:48 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2011-01-17 19:44:48 +0000 |
commit | efd57cfe51ec0501d4378d01e019f3e23b989274 (patch) | |
tree | e2e60d4ba5a72c56012b2a6426849e28d762c53e /Demos/Device/LowLevel/KeyboardMouse | |
parent | 47fec03694c933a388eadf3242a6e40177b57d74 (diff) | |
download | lufa-efd57cfe51ec0501d4378d01e019f3e23b989274.tar.gz lufa-efd57cfe51ec0501d4378d01e019f3e23b989274.tar.bz2 lufa-efd57cfe51ec0501d4378d01e019f3e23b989274.zip |
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.
Diffstat (limited to 'Demos/Device/LowLevel/KeyboardMouse')
-rw-r--r-- | Demos/Device/LowLevel/KeyboardMouse/Descriptors.c | 119 |
1 files changed, 57 insertions, 62 deletions
diff --git a/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c b/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c index 2d8fd44cd..55cf30d38 100644 --- a/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c +++ b/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c @@ -48,34 +48,32 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x02, /* Mouse */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE_MINIMUM(8), 0x01, - HID_RI_USAGE_MAXIMUM(8), 0x03, - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 3, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 5, - 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(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -1, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_PHYSICAL_MINIMUM(8), -1, - HID_RI_PHYSICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 2, - 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_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x02), /* Mouse */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE_MINIMUM(8, 0x01), + HID_RI_USAGE_MAXIMUM(8, 0x03), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x03), + HID_RI_REPORT_SIZE(8, 0x01), + 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_SIZE(8, 0x05), + 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(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -1), + HID_RI_LOGICAL_MAXIMUM(8, 1), + HID_RI_PHYSICAL_MINIMUM(8, -1), + HID_RI_PHYSICAL_MAXIMUM(8, 1), + HID_RI_REPORT_COUNT(8, 0x02), + 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_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. */ USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x06, /* Keyboard */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ - HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 8, - 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_MAXIMUM(8), 0x05, /* Kana */ - HID_RI_REPORT_COUNT(8), 5, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 3, - HID_RI_OUTPUT(8), HID_IOF_CONSTANT, - - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0x65, - HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ - HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ - HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ - 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_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x06), /* Keyboard */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ + HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ + HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + 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_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x08), + 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_MAXIMUM(8, 0x05), /* Kana */ + HID_RI_REPORT_COUNT(8, 0x05), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x03), + HID_RI_OUTPUT(8, HID_IOF_CONSTANT), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x65), + HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ + HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ + HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */ + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), }; |