/* marked as padding so OS ignores it and uses NKRO. BIOS will still use it. */
 
const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = {
 
    HID_RI_USAGE_PAGE(8, 0x01),
 
    HID_RI_USAGE(8, 0x06),
 
    HID_RI_COLLECTION(8, 0x01),
 
        HID_RI_REPORT_SIZE(8, 0x01),
 
        HID_RI_REPORT_COUNT(8, 0x08),
 
        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 
 
        HID_RI_REPORT_COUNT(8, 0x01),
 
        HID_RI_REPORT_SIZE(8, 0x08),
 
        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 
 
        HID_RI_REPORT_COUNT(8, 0x05),
 
        HID_RI_REPORT_SIZE(8, 0x01),
 
        HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 
 
        HID_RI_REPORT_COUNT(8, 0x01),
 
        HID_RI_REPORT_SIZE(8, 0x03),
 
        HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 
 
        HID_RI_REPORT_COUNT(8, 6),
 
        HID_RI_REPORT_SIZE(8, 0x08),
 
        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 
    HID_RI_END_COLLECTION(0)
 
};
 
 
const USB_Descriptor_HIDReport_Datatype_t PROGMEM NKROReport[] = {
 
    HID_RI_USAGE_PAGE(8, 0x01),
 
    HID_RI_USAGE(8, 0x06),
 
    HID_RI_COLLECTION(8, 0x01),
 
        HID_RI_USAGE_PAGE(8, 0x08),      // LED page
 
        HID_RI_USAGE_MINIMUM(8, 0x01),   // num lock
 
        HID_RI_USAGE_MAXIMUM(8, 0x03),   // scroll lock
 
        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_OUTPUT(8,
 
                      HID_IOF_DATA |
 
                      HID_IOF_VARIABLE |
 
                      HID_IOF_ABSOLUTE),
 
 
        HID_RI_REPORT_COUNT(8, 0x01),
 
        HID_RI_REPORT_SIZE(8, 0x05),
 
        HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
 
 
        HID_RI_USAGE_PAGE(8, 0x07),      // key codes page
 
        HID_RI_USAGE_MINIMUM(8, 0xe0),   // left ctrl
 
        HID_RI_USAGE_MAXIMUM(8, 0xe7),   // right GUI
 
        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 
        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 
        HID_RI_REPORT_COUNT(8, 0x08),
 
        HID_RI_REPORT_SIZE(8, 0x01),
 
        HID_RI_INPUT(8,
 
                    HID_IOF_DATA |
 
                    HID_IOF_VARIABLE |
 
                    HID_IOF_ABSOLUTE),
 
 
        HID_RI_USAGE_PAGE(8, 0x07),      // key codes page
 
        HID_RI_USAGE_MINIMUM(8, 0x00),   // Reserved
 
        HID_RI_USAGE_MAXIMUM(8, 0x31),   // Backslash/Bar
 
        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 
        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 
        HID_RI_REPORT_COUNT(8, 0x32),
 
        HID_RI_REPORT_SIZE(8, 0x01),
 
        HID_RI_INPUT(8,
 
                     HID_IOF_DATA |
 
                     HID_IOF_VARIABLE |
 
                     HID_IOF_ABSOLUTE),
 
 
        HID_RI_REPORT_COUNT(8, 0x01), // skip Non-US # and ~, workaround
 
        HID_RI_REPORT_SIZE(8, 0x01),  // for linux bug with backslashes
 
        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 
 
        HID_RI_USAGE_PAGE(8, 0x07),      // key codes page
 
        HID_RI_USAGE_MINIMUM(8, 0x33),   // semicolon/colon
 
        HID_RI_USAGE_MAXIMUM(8, 0x9b),   // cancel
 
        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 
        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 
        HID_RI_REPORT_COUNT(8, 0x69),
 
        HID_RI_REPORT_SIZE(8, 0x01),
 
        HID_RI_INPUT(8,
 
                     HID_IOF_DATA |
 
                     HID_IOF_VARIABLE |
 
                     HID_IOF_ABSOLUTE),
 
 
        HID_RI_REPORT_COUNT(8, 0x01), // skip clear, workaround for
 
        HID_RI_REPORT_SIZE(8, 0x01),  // linux bug (similar to above)
 
        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 
 
        HID_RI_USAGE_PAGE(8, 0x07),      // key codes page
 
        HID_RI_USAGE_MINIMUM(8, 0x9d),   // prior
 
        HID_RI_USAGE_MAXIMUM(8, 0xa4),   // exsel
 
        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 
        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 
        HID_RI_REPORT_COUNT(8, 0x08),
 
        HID_RI_REPORT_SIZE(8, 0x01),
 
        HID_RI_INPUT(8,
 
                     HID_IOF_DATA |
 
                     HID_IOF_VARIABLE |
 
                     HID_IOF_ABSOLUTE),
 
 
        HID_RI_USAGE_PAGE(8, 0x01),      // generic desktop page
 
        HID_RI_USAGE_MINIMUM(8, 0x81),   // system power down
 
        HID_RI_USAGE_MAXIMUM(8, 0x83),   // system wake up
 
        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_RI_USAGE_PAGE(8, 0x0c),      // consumer page
 
        HID_RI_USAGE_MINIMUM(8, 0xb0),   // play
 
        HID_RI_USAGE_MAXIMUM(8, 0xb8),   // eject
 
        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 
        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 
        HID_RI_REPORT_COUNT(8, 0x09),
 
        HID_RI_REPORT_SIZE(8, 0x01),
 
        HID_RI_INPUT(8,
 
                     HID_IOF_DATA |
 
                     HID_IOF_VARIABLE |
 
                     HID_IOF_ABSOLUTE),
 
 
        HID_RI_USAGE_PAGE(8, 0x0c), // consumer page
 
        HID_RI_USAGE(8, 0xcd),      // play/pause
 
        HID_RI_USAGE(8, 0xe2),      // mute
 
        HID_RI_USAGE(8, 0xe9),      // volume++
 
        HID_RI_USAGE(8, 0xea),      // volume--
 
        HID_RI_USAGE(16, 0x18a),    // mail
 
        HID_RI_USAGE(16, 0x192),    // calculator
 
        HID_RI_USAGE(16, 0x194),    // file browser
 
        HID_RI_USAGE(16, 0x221),    // web search
 
        HID_RI_USAGE(16, 0x223),    // web home
 
        HID_RI_USAGE(16, 0x224),    // web back
 
        HID_RI_USAGE(16, 0x225),    // web forward
 
        HID_RI_USAGE(16, 0x227),    // web refresh
 
        HID_RI_USAGE(16, 0x22a),    // web bookmarks
 
        HID_RI_LOGICAL_MINIMUM(8, 0x00),
 
        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
 
        HID_RI_REPORT_COUNT(8, 0x0d),
 
        HID_RI_REPORT_SIZE(8, 0x01),
 
        HID_RI_INPUT(8,
 
                     HID_IOF_DATA |
 
                     HID_IOF_VARIABLE |
 
                     HID_IOF_ABSOLUTE),
 
 
        HID_RI_REPORT_COUNT(8, 0x01),
 
        HID_RI_REPORT_SIZE(8, 0x02),
 
        HID_RI_INPUT(8, HID_IOF_CONSTANT),
 
    HID_RI_END_COLLECTION(0)
 
};