From a2bd0cf602caa7d945894ae3a3d7517272b70129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Fri, 3 Mar 2017 23:01:26 +0100 Subject: [PATCH] Don't put more scancodes into the individual reports than possible. --- right/src/usb_report_updater.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/right/src/usb_report_updater.c b/right/src/usb_report_updater.c index b7b61ea..6d76240 100644 --- a/right/src/usb_report_updater.c +++ b/right/src/usb_report_updater.c @@ -72,7 +72,8 @@ void UpdateActiveUsbReports() { bzero(&UsbMouseReport, sizeof(usb_mouse_report_t)); - uint8_t scancodeIdx = 0; + uint8_t basicScancodeIndex = 0; + uint8_t mediaScancodeIndex = 0; activeLayer = LAYER_ID_BASE; for (uint8_t slotId=0; slotIdmodifiers |= action.keystroke.modifiers; + switch (action.keystroke.keystrokeType) { case KEYSTROKE_BASIC: - ActiveUsbBasicKeyboardReport->scancodes[scancodeIdx++] = action.keystroke.scancode; + if (basicScancodeIndex >= USB_BASIC_KEYBOARD_MAX_KEYS) { + break; + } + ActiveUsbBasicKeyboardReport->scancodes[basicScancodeIndex++] = action.keystroke.scancode; break; case KEYSTROKE_MEDIA: - ActiveUsbMediaKeyboardReport->scancodes[scancodeIdx++] = action.keystroke.scancode; + if (mediaScancodeIndex >= USB_MEDIA_KEYBOARD_MAX_KEYS) { + break; + } + ActiveUsbMediaKeyboardReport->scancodes[mediaScancodeIndex++] = action.keystroke.scancode; break; } break;