From df72fb710f972f1e6e25aa6f9dfbe0e12be90f61 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Fri, 24 Nov 2017 23:23:15 +0100 Subject: [PATCH] Fix mouse keys getting occasionally stuck Instead of discrete press & release tracking, press the mousekey when the physical key is pressed, and like `Keyboard`, send & clear the report once per cycle, instead on every action. This fixes #10. Signed-off-by: Gergely Nagy --- src/Kaleidoscope-MouseKeys.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Kaleidoscope-MouseKeys.cpp b/src/Kaleidoscope-MouseKeys.cpp index 778e3eb6..a417f667 100644 --- a/src/Kaleidoscope-MouseKeys.cpp +++ b/src/Kaleidoscope-MouseKeys.cpp @@ -33,6 +33,8 @@ void MouseKeys_::scrollWheel(uint8_t keyCode) { void MouseKeys_::loopHook(bool postClear) { if (postClear) { + kaleidoscope::hid::sendMouseReport(); + kaleidoscope::hid::releaseAllMouseButtons(); mouseMoveIntent = 0; return; } @@ -76,7 +78,7 @@ Key MouseKeys_::eventHandlerHook(Key mappedKey, byte row, byte col, uint8_t keyS if (mappedKey.keyCode & KEY_MOUSE_BUTTON && !(mappedKey.keyCode & KEY_MOUSE_WARP)) { uint8_t button = mappedKey.keyCode & ~KEY_MOUSE_BUTTON; - if (keyToggledOn(keyState)) { + if (keyIsPressed(keyState)) { MouseWrapper.pressButton(button); } else if (keyToggledOff(keyState)) { MouseWrapper.release_button(button);