Add logic for REPORT_MODS_SEPARATELY.

This commit is contained in:
taudris 2022-12-27 23:54:33 -08:00
parent b56c0fa674
commit 97821dc425
1 changed files with 14 additions and 7 deletions

View File

@ -270,17 +270,24 @@ void send_keyboard_report(void) {
keyboard_report->mods |= weak_override_mods;
#endif
#ifdef PROTOCOL_VUSB
host_keyboard_send(keyboard_report);
#else
static report_keyboard_t last_report;
/* Only send the report if there are changes to propagate to the host. */
if (memcmp(keyboard_report, &last_report, sizeof(report_keyboard_t)) != 0) {
memcpy(&last_report, keyboard_report, sizeof(report_keyboard_t));
host_keyboard_send(keyboard_report);
#if defined(REPORT_MODS_SEPARATELY)
if (last_report.mods != keyboard_report->mods) {
//build a keyboard report that only updates the mods
report_keyboard_t mod_report;
memcpy(&mod_report, &last_report, sizeof(report_keyboard_t));
mod_report.mods = keyboard_report->mods;
host_keyboard_send(&mod_report);
memcpy(&last_report, &mod_report, sizeof(report_keyboard_t));
}
#endif
if (memcmp(&last_report, keyboard_report, sizeof(report_keyboard_t)) != 0) {
host_keyboard_send(keyboard_report);
memcpy(&last_report, keyboard_report, sizeof(report_keyboard_t));
}
}
/** \brief Get mods