~ruther/qmk_firmware

d700447ddac307ab6b1e39b0485ddef76ed1fe7f — Pete Sevander 3 years ago 8c1c377
Combo `TAP_CODE_DELAY` and `clear_weak_mods` (#15866)

1 files changed, 13 insertions(+), 0 deletions(-)

M quantum/process_keycode/process_combo.c
M quantum/process_keycode/process_combo.c => quantum/process_keycode/process_combo.c +13 -0
@@ 17,6 17,7 @@
#include "print.h"
#include "process_combo.h"
#include "action_tapping.h"
#include "action.h"

#ifdef COMBO_COUNT
__attribute__((weak)) combo_t key_combos[COMBO_COUNT];


@@ 193,6 194,9 @@ void clear_combos(void) {
static inline void dump_key_buffer(void) {
    /* First call start from 0 index; recursive calls need to start from i+1 index */
    static uint8_t key_buffer_next = 0;
#if TAP_CODE_DELAY > 0
    bool delay_done = false;
#endif

    if (key_buffer_size == 0) {
        return;


@@ 218,6 222,15 @@ static inline void dump_key_buffer(void) {
#endif
        }
        record->event.time = 0;
        clear_weak_mods();

#if TAP_CODE_DELAY > 0
        // only delay once and for a non-tapping key
        if (!delay_done && !is_tap_record(record)) {
            delay_done = true;
            wait_ms(TAP_CODE_DELAY);
        }
#endif
    }

    key_buffer_next = key_buffer_size = 0;