diff options
Diffstat (limited to 'tmk_core')
-rw-r--r-- | tmk_core/common/keyboard.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index fd2cf74f57..c962a721cb 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -177,6 +177,9 @@ void keyboard_task(void) static uint8_t led_status = 0; matrix_row_t matrix_row = 0; matrix_row_t matrix_change = 0; +#ifdef QMK_KEYS_PER_SCAN + uint8_t keys_processed = 0; +#endif matrix_scan(); if (is_keyboard_master()) { @@ -208,6 +211,10 @@ void keyboard_task(void) }); // record a processed key matrix_prev[r] ^= ((matrix_row_t)1<<c); +#ifdef QMK_KEYS_PER_SCAN + // only jump out if we have processed "enough" keys. + if (++keys_processed >= QMK_KEYS_PER_SCAN) +#endif // process a key per task call goto MATRIX_LOOP_END; } @@ -216,6 +223,10 @@ void keyboard_task(void) } } // call with pseudo tick event when no real key event. +#ifdef QMK_KEYS_PER_SCAN + // we can get here with some keys processed now. + if (!keys_processed) +#endif action_exec(TICK); MATRIX_LOOP_END: |