]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - common/report.h
Merge branch 'hhkb_spaceFN'
[max/tmk_keyboard.git] / common / report.h
index 02deb7797e7ec6b224d94b53df56e1474ce57bae..91982840af441a775c88be4171c293ec1bbec1d5 100644 (file)
@@ -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;