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"); }