+#ifdef USB_EXTRA_ENABLE
+// audio controls & system controls
+// http://www.microsoft.com/whdc/archive/w2kbd.mspx
+static uint8_t PROGMEM extra_hid_report_desc[] = {
+ 0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
+ 0x09, 0x01, // USAGE (Consumer Control)
+ 0xa1, 0x01, // COLLECTION (Application)
+ 0x85, 0x01, // REPORT_ID (1)
+ 0x09, 0xe9, // USAGE (Volume Up)
+ 0x09, 0xea, // USAGE (Volume Down)
+ 0x15, 0x00, // LOGICAL_MINIMUM (0)
+ 0x25, 0x01, // LOGICAL_MAXIMUM (1)
+ 0x75, 0x01, // REPORT_SIZE (1)
+ 0x95, 0x02, // REPORT_COUNT (2)
+ 0x81, 0x02, // INPUT (Data,Var,Abs)
+ 0x09, 0xe2, // USAGE (Mute)
+ 0x15, 0x00, // LOGICAL_MINIMUM (0)
+ 0x25, 0x01, // LOGICAL_MAXIMUM (1)
+ 0x75, 0x01, // REPORT_SIZE (1)
+ 0x95, 0x01, // REPORT_COUNT (1)
+ 0x81, 0x06, // INPUT (Data,Var,Rel)
+ 0x95, 0x05, // REPORT_COUNT (5)
+ 0x81, 0x07, // INPUT (Cnst,Var,Abs)
+ 0xc0, // END_COLLECTION
+
+ 0x05, 0x01, // USAGE_PAGE (Generic Desktop)
+ 0x09, 0x80, // USAGE (System Control)
+ 0xa1, 0x01, // COLLECTION (Application)
+ 0x85, 0x02, // REPORT_ID (2)
+ 0x19, 0x81, // USAGE_MINIMUM (System Power Down)
+ 0x29, 0x83, // USAGE_MAXIMUM (System Wake Up)
+ 0x95, 0x03, // REPORT_COUNT (3)
+ 0x81, 0x06, // INPUT (Data,Var,Rel)
+ 0x95, 0x05, // REPORT_COUNT (5)
+ 0x81, 0x07, // INPUT (Cnst,Var,Rel)
+ 0xc0 // END_COLLECTION
+};
+#endif
+
+#define KBD_HID_DESC_NUM 0
+#define KBD_HID_DESC_OFFSET (9+(9+9+7)*KBD_HID_DESC_NUM+9)
+
+#ifdef USB_MOUSE_ENABLE
+# define MOUSE_HID_DESC_NUM (KBD_HID_DESC_NUM + 1)
+# define MOUSE_HID_DESC_OFFSET (9+(9+9+7)*MOUSE_HID_DESC_NUM+9)
+#else
+# define MOUSE_HID_DESC_NUM (KBD_HID_DESC_NUM + 0)
+#endif
+
+#define DEBUG_HID_DESC_NUM (MOUSE_HID_DESC_NUM + 1)
+#define DEBUG_HID_DESC_OFFSET (9+(9+9+7)*DEBUG_HID_DESC_NUM+9)
+
+#ifdef USB_EXTRA_ENABLE
+# define EXTRA_HID_DESC_NUM (DEBUG_HID_DESC_NUM + 1)
+# define EXTRA_HID_DESC_OFFSET (9+(9+9+7)*EXTRA_HID_DESC_NUM+9)
+#else
+# define EXTRA_HID_DESC_NUM (DEBUG_HID_DESC_NUM + 0)
+#endif
+
+#ifdef USB_NKRO_ENABLE
+# define KBD2_HID_DESC_NUM (EXTRA_HID_DESC_NUM + 1)
+# define KBD2_HID_DESC_OFFSET (9+(9+9+7)*EXTRA_HID_DESC_NUM+9)
+#else
+# define KBD2_HID_DESC_NUM (EXTRA_HID_DESC_NUM + 0)
+#endif
+
+#define NUM_INTERFACES (KBD2_HID_DESC_NUM + 1)
+#define CONFIG1_DESC_SIZE (9+(9+9+7)*NUM_INTERFACES)