diff options
Diffstat (limited to 'tmk_core')
| -rw-r--r-- | tmk_core/common/action.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index b39836f0f..82be9cc92 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c | |||
| @@ -192,7 +192,14 @@ void process_record(keyrecord_t *record) { | |||
| 192 | return; | 192 | return; |
| 193 | } | 193 | } |
| 194 | 194 | ||
| 195 | if (!process_record_quantum(record)) return; | 195 | if (!process_record_quantum(record)) { |
| 196 | #ifndef NO_ACTION_ONESHOT | ||
| 197 | if (is_oneshot_layer_active() && record->event.pressed) { | ||
| 198 | clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); | ||
| 199 | } | ||
| 200 | #endif | ||
| 201 | return; | ||
| 202 | } | ||
| 196 | 203 | ||
| 197 | process_record_handler(record); | 204 | process_record_handler(record); |
| 198 | post_process_record_quantum(record); | 205 | post_process_record_quantum(record); |
| @@ -231,7 +238,7 @@ void process_action(keyrecord_t *record, action_t action) { | |||
| 231 | #ifndef NO_ACTION_ONESHOT | 238 | #ifndef NO_ACTION_ONESHOT |
| 232 | bool do_release_oneshot = false; | 239 | bool do_release_oneshot = false; |
| 233 | // notice we only clear the one shot layer if the pressed key is not a modifier. | 240 | // notice we only clear the one shot layer if the pressed key is not a modifier. |
| 234 | if (is_oneshot_layer_active() && event.pressed && !IS_MOD(action.key.code) | 241 | if (is_oneshot_layer_active() && event.pressed && (action.kind.id == ACT_USAGE || !IS_MOD(action.key.code)) |
| 235 | # ifdef SWAP_HANDS_ENABLE | 242 | # ifdef SWAP_HANDS_ENABLE |
| 236 | && !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT) | 243 | && !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT) |
| 237 | # endif | 244 | # endif |
