~ruther/qmk_firmware

85f4c3ebb456c2d6feebf8934ab014436d7f8f17 — Drashna Jaelre 5 years ago 853b999
[Core] Optimize matrix processing (#7621)

Backport of tmk/tmk_keyboard@ad6059adc7039a54d1db75da783068654906a679
1 files changed, 5 insertions(+), 4 deletions(-)

M tmk_core/common/keyboard.c
M tmk_core/common/keyboard.c => tmk_core/common/keyboard.c +5 -4
@@ 297,13 297,14 @@ void keyboard_task(void) {
                }
#endif
                if (debug_matrix) matrix_print();
                for (uint8_t c = 0; c < MATRIX_COLS; c++) {
                    if (matrix_change & ((matrix_row_t)1 << c)) {
                matrix_row_t col_mask = 1;
                for (uint8_t c = 0; c < MATRIX_COLS; c++, col_mask <<= 1) {
                    if (matrix_change & col_mask) {
                        action_exec((keyevent_t){
                            .key = (keypos_t){.row = r, .col = c}, .pressed = (matrix_row & ((matrix_row_t)1 << c)), .time = (timer_read() | 1) /* time should not be 0 */
                            .key = (keypos_t){.row = r, .col = c}, .pressed = (matrix_row & col_mask), .time = (timer_read() | 1) /* time should not be 0 */
                        });
                        // record a processed key
                        matrix_prev[r] ^= ((matrix_row_t)1 << c);
                        matrix_prev[r] ^= col_mask;
#ifdef QMK_KEYS_PER_SCAN
                        // only jump out if we have processed "enough" keys.
                        if (++keys_processed >= QMK_KEYS_PER_SCAN)