diff --git a/quantum/action.c b/quantum/action.c index 29822c39e9a..84b42225d6e 100644 --- a/quantum/action.c +++ b/quantum/action.c @@ -665,8 +665,12 @@ void process_action(keyrecord_t *record, action_t action) { if (tap_count >= ONESHOT_TAP_TOGGLE) { reset_oneshot_layer(); set_oneshot_layer(action.layer_tap.val, ONESHOT_TOGGLED); + } else { + if (get_oneshot_layer() != action.layer_tap.val) { + layer_off(action.layer_tap.val); } else { clear_oneshot_layer_state(ONESHOT_PRESSED); + } } } # else