X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tmk_core%2Fcommon%2Fhost.c;h=f5d0416996b10b23959f8dcc862011a95d6ec31c;hb=a32f7e1a25a8a200d838aa8256ffe39708fbd723;hp=11a05c2ddd74bba6f1af7db8e6550939f463a44b;hpb=d889648d5373b7ff77dc7bc4b369c628e8336b45;p=qmk_firmware.git diff --git a/tmk_core/common/host.c b/tmk_core/common/host.c index 11a05c2dd..f5d041699 100644 --- a/tmk_core/common/host.c +++ b/tmk_core/common/host.c @@ -22,9 +22,9 @@ along with this program. If not, see . #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; @@ -51,6 +51,20 @@ uint8_t host_keyboard_leds(void) 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) { @@ -65,6 +79,9 @@ void host_keyboard_send(report_keyboard_t *report) 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); }