From d2acfba65987a80c24f2481f49573ca1cb2d9aed Mon Sep 17 00:00:00 2001 From: Kristian Sloth Lauszus Date: Sun, 8 Apr 2018 21:18:56 +0200 Subject: [PATCH] Process the key inputs at a constant rate when moving the mouse, so the mouse speed is consistent Fixes #99 --- right/src/usb_report_updater.c | 75 +++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/right/src/usb_report_updater.c b/right/src/usb_report_updater.c index 206968e..91dd146 100644 --- a/right/src/usb_report_updater.c +++ b/right/src/usb_report_updater.c @@ -381,41 +381,50 @@ void UpdateUsbReports(void) { UsbReportUpdateCounter++; - if (Timer_GetElapsedTime(&lastUsbUpdateTime) > 100) { - UsbBasicKeyboardReportEverSent = false; - UsbMediaKeyboardReportEverSent = false; - UsbSystemKeyboardReportEverSent = false; - UsbMouseReportEverSentEverSent = false; - } + // Process the key inputs at a constant rate when moving the mouse, so the mouse speed is consistent + if (activeMouseStates[SerializedMouseAction_MoveUp] || + activeMouseStates[SerializedMouseAction_MoveDown] || + activeMouseStates[SerializedMouseAction_MoveLeft] || + activeMouseStates[SerializedMouseAction_MoveRight]) { + if (Timer_GetElapsedTime(&lastUsbUpdateTime) < 10) + return; + } else { + if (Timer_GetElapsedTime(&lastUsbUpdateTime) > 100) { + UsbBasicKeyboardReportEverSent = false; + UsbMediaKeyboardReportEverSent = false; + UsbSystemKeyboardReportEverSent = false; + UsbMouseReportEverSentEverSent = false; + } - if (IsUsbBasicKeyboardReportSent) { - UsbBasicKeyboardReportEverSent = true; - } - if (IsUsbMediaKeyboardReportSent) { - UsbMediaKeyboardReportEverSent = true; - } - if (IsUsbSystemKeyboardReportSent) { - UsbSystemKeyboardReportEverSent = true; - } - if (IsUsbMouseReportSent) { - UsbMouseReportEverSentEverSent = true; - } + if (IsUsbBasicKeyboardReportSent) { + UsbBasicKeyboardReportEverSent = true; + } + if (IsUsbMediaKeyboardReportSent) { + UsbMediaKeyboardReportEverSent = true; + } + if (IsUsbSystemKeyboardReportSent) { + UsbSystemKeyboardReportEverSent = true; + } + if (IsUsbMouseReportSent) { + UsbMouseReportEverSentEverSent = true; + } - bool areUsbReportsSent = true; - if (UsbBasicKeyboardReportEverSent) { - areUsbReportsSent &= IsUsbBasicKeyboardReportSent; - } - if (UsbMediaKeyboardReportEverSent) { - areUsbReportsSent &= IsUsbMediaKeyboardReportSent; - } - if (UsbSystemKeyboardReportEverSent) { - areUsbReportsSent &= IsUsbSystemKeyboardReportSent; - } - if (UsbMouseReportEverSentEverSent) { - areUsbReportsSent &= IsUsbMouseReportSent; - } - if (!areUsbReportsSent) { - return; + bool areUsbReportsSent = true; + if (UsbBasicKeyboardReportEverSent) { + areUsbReportsSent &= IsUsbBasicKeyboardReportSent; + } + if (UsbMediaKeyboardReportEverSent) { + areUsbReportsSent &= IsUsbMediaKeyboardReportSent; + } + if (UsbSystemKeyboardReportEverSent) { + areUsbReportsSent &= IsUsbSystemKeyboardReportSent; + } + if (UsbMouseReportEverSentEverSent) { + areUsbReportsSent &= IsUsbMouseReportSent; + } + if (!areUsbReportsSent) { + return; + } } ResetActiveUsbBasicKeyboardReport();