diff --git a/plugins/Kaleidoscope-MouseKeys/src/kaleidoscope/plugin/MouseKeys.cpp b/plugins/Kaleidoscope-MouseKeys/src/kaleidoscope/plugin/MouseKeys.cpp index 11424b69..0812aeee 100644 --- a/plugins/Kaleidoscope-MouseKeys/src/kaleidoscope/plugin/MouseKeys.cpp +++ b/plugins/Kaleidoscope-MouseKeys/src/kaleidoscope/plugin/MouseKeys.cpp @@ -129,10 +129,15 @@ EventHandlerResult MouseKeys::onKeyEvent(KeyEvent &event) { // Clear button state; it will be repopulated by `onAddToReport()`, and the // report will be sent by `afterReportingState()`. buttons_ = 0; + } - } else if (isMouseWarpKey(event.key)) { - if (keyToggledOn(event.state)) { + if (keyToggledOn(event.state)) { + if (isMouseWarpKey(event.key)) { + // If a mouse warp key toggles on, we immediately send the warp report. sendMouseWarpReport(event); + } else { + // If any non-warp mouse key toggles on, we cancel warping. + MouseWrapper.endWarping(); } } diff --git a/plugins/Kaleidoscope-MouseKeys/src/kaleidoscope/plugin/mousekeys/MouseWrapper.h b/plugins/Kaleidoscope-MouseKeys/src/kaleidoscope/plugin/mousekeys/MouseWrapper.h index e48b4ba1..6ff18e25 100644 --- a/plugins/Kaleidoscope-MouseKeys/src/kaleidoscope/plugin/mousekeys/MouseWrapper.h +++ b/plugins/Kaleidoscope-MouseKeys/src/kaleidoscope/plugin/mousekeys/MouseWrapper.h @@ -47,6 +47,7 @@ namespace mousekeys { class MouseWrapper { public: void warp(uint8_t warp_cmd); + void endWarping(); uint8_t warp_grid_size = MOUSE_WARP_GRID_2X2; @@ -58,7 +59,6 @@ class MouseWrapper { bool is_warping = false; void beginWarping(); - void endWarping(); void resetWarping(); void warpJump(uint16_t left, uint16_t top, uint16_t height, uint16_t width); };