/* 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)  
};