예제 #1
0
/*
	Note that the key report is split into several similar items, because:

	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),
예제 #2
0
  .idVendor = 0x1209,
  .idProduct = 0xCC86,
  .bcdDevice = 0x0100,
  .iManufacturer = 1,
  .iProduct = 2,
  .iSerialNumber = 3,
  .bNumConfigurations = 1,
};

static const uint8_t hid_report_descriptor[] = {
  0x06, 0x00, 0xff,
  HID_USAGE   (0x01),
  HID_COLLECTION    (HID_COLLECTION_APPLICATION),
    HID_REPORT_ID(1),
    HID_LOGICAL_MINIMUM     (0),
    HID_LOGICAL_MAXIMUM     (255),
    HID_REPORT_SIZE   (8),
    HID_REPORT_COUNT  (9),
    HID_USAGE   (0x01),
    HID_INPUT (0x02),
  HID_END_COLLECTION,
  0x06, 0x00, 0xff,
  HID_USAGE   (0x01),
  HID_COLLECTION    (HID_COLLECTION_APPLICATION),
    HID_REPORT_ID(2),
    HID_LOGICAL_MINIMUM     (0),
    HID_LOGICAL_MAXIMUM     (255),
    HID_REPORT_SIZE   (8),
    HID_REPORT_COUNT  (MAX_PACKET_SIZE),
    HID_USAGE   (0x01),
    HID_INPUT (0x02),