diff --git a/src/kaleidoscope/plugin/Escape-OneShot.cpp b/src/kaleidoscope/plugin/Escape-OneShot.cpp index 965d3f7c..3beb5adc 100644 --- a/src/kaleidoscope/plugin/Escape-OneShot.cpp +++ b/src/kaleidoscope/plugin/Escape-OneShot.cpp @@ -28,8 +28,9 @@ EventHandlerResult EscapeOneShot::onKeyswitchEvent(Key &mapped_key, byte row, by !keyToggledOn(keyState)) return EventHandlerResult::OK; - if (!::OneShot.isActive() || ::OneShot.isPressed()) + if ((!::OneShot.isActive() || ::OneShot.isPressed()) && !::OneShot.isSticky()) { return EventHandlerResult::OK; + } KeyboardHardware.maskKey(row, col); diff --git a/src/kaleidoscope/plugin/OneShot.h b/src/kaleidoscope/plugin/OneShot.h index e989eb07..dab36c8d 100644 --- a/src/kaleidoscope/plugin/OneShot.h +++ b/src/kaleidoscope/plugin/OneShot.h @@ -37,6 +37,9 @@ class OneShot : public kaleidoscope::Plugin { static bool isPressed() { return !!pressed_state_.all; } + static bool isSticky() { + return !!sticky_state_.all; + } static bool isActive(Key key); static bool isSticky(Key key); static void cancel(bool with_stickies);