summaryrefslogtreecommitdiffstats
path: root/quantum
diff options
context:
space:
mode:
Diffstat (limited to 'quantum')
-rw-r--r--quantum/action.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/quantum/action.c b/quantum/action.c
index f6fbb999c8..79ea2b7635 100644
--- a/quantum/action.c
+++ b/quantum/action.c
@@ -350,7 +350,12 @@ void process_action(keyrecord_t *record, action_t action) {
#ifndef NO_ACTION_ONESHOT
bool do_release_oneshot = false;
// notice we only clear the one shot layer if the pressed key is not a modifier.
- if (is_oneshot_layer_active() && event.pressed && (action.kind.id == ACT_USAGE || !IS_MOD(action.key.code))
+ if (is_oneshot_layer_active() && event.pressed &&
+ (action.kind.id == ACT_USAGE || !(IS_MOD(action.key.code)
+# ifndef NO_ACTION_TAPPING
+ || (tap_count == 0 && (action.kind.id == ACT_LMODS_TAP || action.kind.id == ACT_RMODS_TAP))
+# endif
+ ))
# ifdef SWAP_HANDS_ENABLE
&& !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT)
# endif