diff options
author | Eric Tang <e_l_tang@outlook.com> | 2016-05-23 20:42:21 -0700 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2016-05-23 23:42:21 -0400 |
commit | aaa758f1d3f97dda39879f2b055ad2da9680adfe (patch) | |
tree | cb0749cda23c0507dd2b230af3eb0ca81a97b8af /tmk_core/common/bootmagic.c | |
parent | d66aa0abf96b5e887250cf0a7fa5e575f18c5a91 (diff) | |
download | qmk_firmware-aaa758f1d3f97dda39879f2b055ad2da9680adfe.tar.gz qmk_firmware-aaa758f1d3f97dda39879f2b055ad2da9680adfe.zip |
Optimize matrix scanning (#343)
Diffstat (limited to 'tmk_core/common/bootmagic.c')
-rw-r--r-- | tmk_core/common/bootmagic.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c index 2c1b1adfc5..30e8a0f20f 100644 --- a/tmk_core/common/bootmagic.c +++ b/tmk_core/common/bootmagic.c @@ -105,15 +105,13 @@ void bootmagic(void) } } -static bool scan_keycode(uint8_t keycode) -{ - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { +static bool scan_keycode(uint8_t keycode) { + for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { matrix_row_t matrix_row = matrix_get_row(r); - for (uint8_t c = 0; c < MATRIX_COLS; c++) { - if (matrix_row & ((matrix_row_t)1<<c)) { - if (keycode == keymap_key_to_keycode(0, (keypos_t){ .row = r, .col = c })) { - return true; - } + for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) { + if (matrix_row & (matrix_row_t)1 << c) { + keypos_t key = (keypos_t){ .row = r, .col = c }; + if (keycode == keymap_key_to_keycode(0, key)) return true; } } } |