Example #1
0
    .iManufacturer          = 1,
    .iProduct               = 2,
    .iSerialNumber          = 0,
    .bNumConfigurations     = 1
};

unsigned char mouse_report[] =
{
    HID_USAGE_PAGE_1B (HUP_GENERIC_DESKTOP),
    HID_USAGE_1B (HU_MOUSE),
    HID_COLLECTION (HID_APPLICATION),
        HID_USAGE_1B (HU_POINTER),
        HID_COLLECTION (HID_PHYSICAL),
            HID_USAGE_PAGE_1B (HUP_BUTTONS),
            HID_USAGE_MINIMUM (1),
            HID_USAGE_MAXIMUM (3),
            HID_LOGICAL_MINIMUM_1B (0),
            HID_LOGICAL_MAXIMUM_1B (1),
            HID_REPORT_COUNT (3),
            HID_REPORT_SIZE (1),
            HID_INPUT (HID_DATA | HID_VARIABLE | HID_ABSOLUTE),
            HID_REPORT_COUNT (1),
            HID_REPORT_SIZE (5),
            HID_INPUT (HID_CONSTANT),
            HID_USAGE_PAGE_1B (HUP_GENERIC_DESKTOP),
            HID_USAGE_1B (HU_X),
            HID_USAGE_1B (HU_Y),
            HID_LOGICAL_MINIMUM_1B (-127),
            HID_LOGICAL_MAXIMUM_1B (127),
            HID_REPORT_SIZE (8),
            HID_REPORT_COUNT (2),
Example #2
0
	An item field cannot span more than 4 bytes in a report. For example, a 32-bit
	item must start on a byte boundary to satisfy this condition.
		- USB HID 1.11 Specification, p. 57
*/
local const u8 PROGMEM NkroKeyboardReportDescriptor[] = {
	HID_USAGE_PAGE      (8, HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS),
	HID_USAGE           (8, HID_DESKTOP_KEYBOARD),
	HID_COLLECTION      (8, HID_COLLECTION_APPLICATION),

	HID_USAGE_PAGE      (8, HID_USAGE_PAGE_KEYBOARD_KEYPAD),
	HID_LOGICAL_MINIMUM (8, 0x00),
	HID_LOGICAL_MAXIMUM (8, 0x01),
	HID_REPORT_SIZE     (8, 0x01),
	HID_REPORT_COUNT    (8, 0x20),
	HID_USAGE_MINIMUM   (8, 0x00),
	HID_USAGE_MAXIMUM   (8, 0x1F),
	HID_INPUT           (8, HID_DATA | HID_VARIABLE | HID_ABSOLUTE),

	HID_USAGE_MINIMUM   (8, 0x20),
	HID_USAGE_MAXIMUM   (8, 0x3F),
	HID_INPUT           (8, HID_DATA | HID_VARIABLE | HID_ABSOLUTE),

	HID_USAGE_MINIMUM   (8, 0x40),
	HID_USAGE_MAXIMUM   (8, 0x5F),
	HID_INPUT           (8, HID_DATA | HID_VARIABLE | HID_ABSOLUTE),

	HID_USAGE_MINIMUM   (8, 0x60),
	HID_USAGE_MAXIMUM   (8, 0x7F),
	HID_INPUT           (8, HID_DATA | HID_VARIABLE | HID_ABSOLUTE),

	HID_USAGE_MINIMUM   (8, 0x80),