#include "util.h"
#include "debug.h"
-
#ifdef NKRO_ENABLE
-bool keyboard_nkro = true;
+ #include "keycode_config.h"
+ extern keymap_config_t keymap_config;
#endif
static host_driver_t *driver;
void host_keyboard_send(report_keyboard_t *report)
{
if (!driver) return;
+#if defined(NKRO_ENABLE) && defined(NKRO_SHARED_EP)
+ if (keyboard_protocol && keymap_config.nkro) {
+ /* The callers of this function assume that report->mods is where mods go in.
+ * But report->nkro.mods can be at a different offset if core keyboard does not have a report ID.
+ */
+ report->nkro.mods = report->mods;
+ report->nkro.report_id = REPORT_ID_NKRO;
+ } else
+#endif
+ {
+#ifdef KEYBOARD_SHARED_EP
+ report->report_id = REPORT_ID_KEYBOARD;
+#endif
+ }
(*driver->send_keyboard)(report);
if (debug_keyboard) {
void host_mouse_send(report_mouse_t *report)
{
if (!driver) return;
+#ifdef MOUSE_SHARED_EP
+ report->report_id = REPORT_ID_MOUSE;
+#endif
(*driver->send_mouse)(report);
}
(*driver->send_consumer)(report);
}
-uint16_t host_last_sysytem_report(void)
+uint16_t host_last_system_report(void)
{
return last_system_report;
}