aboutsummaryrefslogtreecommitdiffstats
path: root/tmk_core
diff options
context:
space:
mode:
authorGravatar SjB <steve@sagacity.ca>2017-01-15 23:12:42 -0500
committerGravatar SjB <steve@sagacity.ca>2017-01-15 23:29:24 -0500
commit6f44ca7a59d60e20c1d35e8edc916571f5fe40ef (patch)
tree079ec44f9e6160870d39e800f9a48224334d0b0c /tmk_core
parent6f448856151572f5bee329e68842cdda867fa66b (diff)
downloadqmk_firmware-6f44ca7a59d60e20c1d35e8edc916571f5fe40ef.tar.gz
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.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index d485b46c7..a77177240 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();