forked from mirrors/qmk_firmware
Fix for One Shot Layer not being cleaned up after some actions (#8832)
This commit is contained in:
parent
f7eb030e91
commit
9c1097e768
1 changed files with 9 additions and 2 deletions
|
@ -192,7 +192,14 @@ void process_record(keyrecord_t *record) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!process_record_quantum(record)) return;
|
||||
if (!process_record_quantum(record)) {
|
||||
#ifndef NO_ACTION_ONESHOT
|
||||
if (is_oneshot_layer_active() && record->event.pressed) {
|
||||
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
process_record_handler(record);
|
||||
post_process_record_quantum(record);
|
||||
|
@ -231,7 +238,7 @@ 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 && !IS_MOD(action.key.code)
|
||||
if (is_oneshot_layer_active() && event.pressed && (action.kind.id == ACT_USAGE || !IS_MOD(action.key.code))
|
||||
# ifdef SWAP_HANDS_ENABLE
|
||||
&& !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT)
|
||||
# endif
|
||||
|
|
Loading…
Reference in a new issue