#ifndef usb_keyboard_serial_h__
#define usb_keyboard_serial_h__
+// ----- Includes -----
+
// Compiler Includes
#include <stdint.h>
#include "output_com.h"
+
// ----- Function Declarations -----
// Basic USB Configuration
18, // bLength
1, // bDescriptorType
0x00, 0x02, // bcdUSB
- 0, // bDeviceClass
+ 0x00, // bDeviceClass - Composite device, 0x00 is required for Windows
0, // bDeviceSubClass
0, // bDeviceProtocol
ENDPOINT0_SIZE, // bMaxPacketSize0
1 // bNumConfigurations
};
+// Specify only a single USB speed
+static const uint8_t PROGMEM device_qualifier_descriptor[] = {
+ 0
+};
+
+// Disable USB debug descriptor
+static const uint8_t PROGMEM usb_debug_descriptor[] = {
+ 0
+};
+
// Keyboard Protocol 1, HID 1.11 spec, Appendix B, page 59-60
static const uint8_t PROGMEM keyboard_hid_report_desc[] = {
// Keyboard Collection
9, // bLength
0x21, // bDescriptorType
0x11, 0x01, // bcdHID
- 33, // bCountryCode - Setting to 0/Undefined
+ 0, // bCountryCode - Setting to 0/Undefined
1, // bNumDescriptors
0x22, // bDescriptorType
// wDescriptorLength
} PROGMEM descriptor_list[] = {
{0x0100, 0x0000, device_descriptor, sizeof(device_descriptor)},
{0x0200, 0x0000, config1_descriptor, sizeof(config1_descriptor)},
+ {0x0600, 0x0000, device_qualifier_descriptor, sizeof(device_qualifier_descriptor)},
+ {0x0A00, 0x0000, usb_debug_descriptor, sizeof(usb_debug_descriptor)},
{0x2200, KEYBOARD_INTERFACE, keyboard_hid_report_desc, sizeof(keyboard_hid_report_desc)},
{0x2100, KEYBOARD_INTERFACE, config1_descriptor + KEYBOARD_HID_DESC_OFFSET, 9},
{0x2200, KEYBOARD_NKRO_INTERFACE, keyboard_nkro_hid_report_desc, sizeof(keyboard_nkro_hid_report_desc)},
#define NUM_DESC_LIST (sizeof(descriptor_list)/sizeof(struct descriptor_list_struct))
+
#endif // usb_keyboard_serial_h__