Invalidate the stored report if the command fails

Fixes #122
This commit is contained in:
Kristian Sloth Lauszus
2018-06-08 20:23:58 +02:00
parent 65006cc376
commit 9be3cf4865

View File

@@ -423,7 +423,8 @@ void UpdateUsbReports(void)
last_basic_report = *ActiveUsbBasicKeyboardReport; last_basic_report = *ActiveUsbBasicKeyboardReport;
SwitchActiveUsbBasicKeyboardReport(); SwitchActiveUsbBasicKeyboardReport();
HasUsbBasicKeyboardReportChanged = true; HasUsbBasicKeyboardReportChanged = true;
UsbBasicKeyboardAction(); if (UsbBasicKeyboardAction() != kStatus_USB_Success)
last_basic_report.scancodes[0] = 0xFF; // Invalidate the stored report if the command fails
} }
static usb_media_keyboard_report_t last_media_report = { .scancodes[0] = 0xFF }; static usb_media_keyboard_report_t last_media_report = { .scancodes[0] = 0xFF };
@@ -432,7 +433,8 @@ void UpdateUsbReports(void)
last_media_report = *ActiveUsbMediaKeyboardReport; last_media_report = *ActiveUsbMediaKeyboardReport;
HasUsbMediaKeyboardReportChanged = true; HasUsbMediaKeyboardReportChanged = true;
SwitchActiveUsbMediaKeyboardReport(); SwitchActiveUsbMediaKeyboardReport();
UsbMediaKeyboardAction(); if (UsbMediaKeyboardAction() != kStatus_USB_Success)
last_media_report.scancodes[0] = 0xFF; // Invalidate the stored report if the command fails
} }
static usb_system_keyboard_report_t last_system_report = { .scancodes[0] = 0xFF }; static usb_system_keyboard_report_t last_system_report = { .scancodes[0] = 0xFF };
@@ -441,7 +443,8 @@ void UpdateUsbReports(void)
last_system_report = *ActiveUsbSystemKeyboardReport; last_system_report = *ActiveUsbSystemKeyboardReport;
HasUsbSystemKeyboardReportChanged = true; HasUsbSystemKeyboardReportChanged = true;
SwitchActiveUsbSystemKeyboardReport(); SwitchActiveUsbSystemKeyboardReport();
UsbSystemKeyboardAction(); if (UsbSystemKeyboardAction() != kStatus_USB_Success)
last_system_report.scancodes[0] = 0xFF; // Invalidate the stored report if the command fails
} }
static usb_mouse_report_t last_mouse_report = { .buttons = 0xFF }; static usb_mouse_report_t last_mouse_report = { .buttons = 0xFF };
@@ -450,7 +453,8 @@ void UpdateUsbReports(void)
last_mouse_report = *ActiveUsbMouseReport; last_mouse_report = *ActiveUsbMouseReport;
HasUsbMouseReportChanged = true; HasUsbMouseReportChanged = true;
SwitchActiveUsbMouseReport(); SwitchActiveUsbMouseReport();
usbMouseAction(); if (usbMouseAction() != kStatus_USB_Success)
last_mouse_report.buttons = 0xFF; // Invalidate the stored report if the command fails
} }
if ((previousLayer != LayerId_Base || HasUsbBasicKeyboardReportChanged || HasUsbMediaKeyboardReportChanged || HasUsbSystemKeyboardReportChanged || HasUsbMouseReportChanged) && IsHostSleeping) { if ((previousLayer != LayerId_Base || HasUsbBasicKeyboardReportChanged || HasUsbMediaKeyboardReportChanged || HasUsbSystemKeyboardReportChanged || HasUsbMouseReportChanged) && IsHostSleeping) {