+// Max size of key buffer needed for NKRO
+// Boot mode uses only the first 6 bytes
+#define USB_NKRO_BITFIELD_SIZE_KEYS 27
+#define USB_BOOT_MAX_KEYS 6
+
+
+
+// ----- Enumerations -----
+
+// USB NKRO state transitions (indicates which Report ID's need refreshing)
+// Boot mode just checks if any keys were changed (as everything is sent every time)
+typedef enum USBKeyChangeState {
+ USBKeyChangeState_None = 0x00,
+ USBKeyChangeState_Modifiers = 0x01,
+ USBKeyChangeState_MainKeys = 0x02,
+ USBKeyChangeState_SecondaryKeys = 0x04,
+ USBKeyChangeState_TertiaryKeys = 0x08,
+ USBKeyChangeState_QuartiaryKeys = 0x10,
+ USBKeyChangeState_System = 0x20,
+ USBKeyChangeState_Consumer = 0x40,
+ USBKeyChangeState_All = 0x7F,
+} USBKeyChangeState;