diff options
author | Stefan Kerkmann <karlk90@pm.me> | 2021-12-14 19:40:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-14 10:40:18 -0800 |
commit | 8b865a9d6445e3bce6c991224f373d71c67e87e5 (patch) | |
tree | 3e78e95b1f6ecc59833ceed1ee6418c93758bab5 /quantum | |
parent | ce5a2a736792dc6e3e9957a013821374d01fb6d6 (diff) | |
download | qmk_firmware-8b865a9d6445e3bce6c991224f373d71c67e87e5.tar.gz qmk_firmware-8b865a9d6445e3bce6c991224f373d71c67e87e5.zip |
[Core] Don't send keyboard reports that propagate no changes to the host (#14065)
Diffstat (limited to 'quantum')
-rw-r--r-- | quantum/action_util.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/quantum/action_util.c b/quantum/action_util.c index 78e02aec18..7e30593fb1 100644 --- a/quantum/action_util.c +++ b/quantum/action_util.c @@ -21,6 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "action_layer.h" #include "timer.h" #include "keycode_config.h" +#include <string.h> extern keymap_config_t keymap_config; @@ -247,7 +248,13 @@ void send_keyboard_report(void) { keyboard_report->mods |= weak_override_mods; #endif - host_keyboard_send(keyboard_report); + 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); + } } /** \brief Get mods |