summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSjB <steve@sagacity.ca>2017-01-15 23:12:42 -0500
committerSjB <steve@sagacity.ca>2017-01-15 23:29:24 -0500
commit6f44ca7a59d60e20c1d35e8edc916571f5fe40ef (patch)
tree079ec44f9e6160870d39e800f9a48224334d0b0c
parent6f448856151572f5bee329e68842cdda867fa66b (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.
-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 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();