|
@@ -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:
|