diff options
author | SjB <steve@sagacity.ca> | 2017-01-15 23:12:42 -0500 |
---|---|---|
committer | SjB <steve@sagacity.ca> | 2017-01-15 23:29:24 -0500 |
commit | 6f44ca7a59d60e20c1d35e8edc916571f5fe40ef (patch) | |
tree | 079ec44f9e6160870d39e800f9a48224334d0b0c /tmk_core | |
parent | 6f448856151572f5bee329e68842cdda867fa66b (diff) |
oneshot timeout would only timeout after an event.
After setting a ONESHOT_TIMEOUT value, the oneshot layer state would
not expire without an event being triggered (key pressed). The reason
was that in the process_record function we would return priort to
execute the process_action function if it detected a NOEVENT cycle. The
process_action contained the codes to timeout the oneshot layer state.
The codes to clear the oneshot layer state have been move just in
front of where we check for the NOEVENT cycle in the process_record
function.
Diffstat (limited to 'tmk_core')
-rw-r--r-- | tmk_core/common/action.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index d485b46c77..a77177240b 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -102,6 +102,13 @@ bool process_record_quantum(keyrecord_t *record) { void process_record(keyrecord_t *record) { +#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) + if (has_oneshot_layer_timed_out()) { + dprintf("Oneshot layer: timeout\n"); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } +#endif + if (IS_NOEVENT(record->event)) { return; } if(!process_record_quantum(record)) @@ -126,13 +133,6 @@ void process_action(keyrecord_t *record, action_t action) uint8_t tap_count = record->tap.count; #endif -#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) - if (has_oneshot_layer_timed_out()) { - dprintf("Oneshot layer: timeout\n"); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } -#endif - if (event.pressed) { // clear the potential weak mods left by previously pressed keys clear_weak_mods(); |