diff options
Diffstat (limited to 'common/report.h')
-rw-r--r-- | common/report.h | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/common/report.h b/common/report.h index 02deb7797e..91982840af 100644 --- a/common/report.h +++ b/common/report.h @@ -72,14 +72,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* key report size(NKRO or boot mode) */ -#if defined(PROTOCOL_PJRC) +#if defined(PROTOCOL_PJRC) && defined(NKRO_ENABLE) # include "usb.h" -# if defined(KBD2_REPORT_KEYS) && KBD2_REPORT_KEYS > KBD_REPORT_KEYS -# define REPORT_KEYS KBD2_REPORT_KEYS -# else -# define REPORT_KEYS KBD_REPORT_KEYS -# endif +# define REPORT_SIZE KBD2_SIZE +# define REPORT_KEYS (KBD2_SIZE - 2) +# define REPORT_BITS (KBD2_SIZE - 1) + +#elif defined(PROTOCOL_LUFA) && defined(NKRO_ENABLE) +# include "protocol/lufa/descriptor.h" +# define REPORT_SIZE NKRO_EPSIZE +# define REPORT_KEYS (NKRO_EPSIZE - 2) +# define REPORT_BITS (NKRO_EPSIZE - 1) + #else +# define REPORT_SIZE 8 # define REPORT_KEYS 6 #endif @@ -88,11 +94,27 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. extern "C" { #endif +typedef union { + uint8_t raw[REPORT_SIZE]; + struct { + uint8_t mods; + uint8_t reserved; + uint8_t keys[REPORT_KEYS]; + }; +#ifdef NKRO_ENABLE + struct { + uint8_t mods; + uint8_t bits[REPORT_BITS]; + } nkro; +#endif +} __attribute__ ((packed)) report_keyboard_t; +/* typedef struct { uint8_t mods; - uint8_t rserved; + uint8_t reserved; uint8_t keys[REPORT_KEYS]; } __attribute__ ((packed)) report_keyboard_t; +*/ typedef struct { uint8_t buttons; |