diff --git a/common/report.h b/common/report.h
index 45f5c0b8..a73e0aba 100644
--- a/common/report.h
+++ b/common/report.h
@@ -78,6 +78,11 @@ along with this program. If not, see .
# define REPORT_KEYS 6
#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef struct {
uint8_t mods;
uint8_t rserved;
@@ -92,4 +97,8 @@ typedef struct {
int8_t h;
} __attribute__ ((packed)) report_mouse_t;
+#ifdef __cplusplus
+}
+#endif
+
#endif
diff --git a/common/usb_keycodes.h b/common/usb_keycodes.h
index 9b6cce15..04b398fa 100644
--- a/common/usb_keycodes.h
+++ b/common/usb_keycodes.h
@@ -24,6 +24,7 @@ along with this program. If not, see .
#define IS_ERROR(code) (KB_ROLL_OVER <= (code) && (code) <= KB_UNDEFINED)
+#define IS_ANY(code) (KB_A <= (code))
#define IS_KEY(code) (KB_A <= (code) && (code) <= KB_EXSEL)
#define IS_MOD(code) (KB_LCTRL <= (code) && (code) <= KB_RGUI)
#define IS_FN(code) (KB_FN0 <= (code) && (code) <= KB_FN7)
diff --git a/protocol/usb_hid/parser.cpp b/protocol/usb_hid/parser.cpp
index b03af8ae..4077444b 100644
--- a/protocol/usb_hid/parser.cpp
+++ b/protocol/usb_hid/parser.cpp
@@ -1,14 +1,27 @@
+#include
+
#include "parser.h"
+#include "usb_hid.h"
+
#include "leonardo_led.h"
#include "debug.h"
+
+report_keyboard_t usb_hid_keyboard_report;
+uint16_t usb_hid_time_stamp;
+
+
void KBDReportParser::Parse(HID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf)
{
+ ::memcpy(&usb_hid_keyboard_report, buf, sizeof(report_keyboard_t));
+ usb_hid_time_stamp = millis();
+
LED_TX_TOGGLE;
debug("KBDReport: ");
- for (uint8_t i = 0; i < len; i++) {
- debug_hex(buf[i]);
+ debug_hex(usb_hid_keyboard_report.mods);
+ for (uint8_t i = 0; i < 6; i++) {
debug(" ");
+ debug_hex(usb_hid_keyboard_report.keys[i]);
}
debug("\r\n");
}