aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common/bootmagic.c
diff options
context:
space:
mode:
authorEric Tang <e_l_tang@outlook.com>2016-05-23 20:42:21 -0700
committerJack Humbert <jack.humb@gmail.com>2016-05-23 23:42:21 -0400
commitaaa758f1d3f97dda39879f2b055ad2da9680adfe (patch)
treecb0749cda23c0507dd2b230af3eb0ca81a97b8af /tmk_core/common/bootmagic.c
parentd66aa0abf96b5e887250cf0a7fa5e575f18c5a91 (diff)
downloadqmk_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.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c
index 2c1b1adfc..30e8a0f20 100644
--- a/tmk_core/common/bootmagic.c
+++ b/tmk_core/common/bootmagic.c
@@ -105,15 +105,13 @@ void bootmagic(void)
105 } 105 }
106} 106}
107 107
108static bool scan_keycode(uint8_t keycode) 108static bool scan_keycode(uint8_t keycode) {
109{ 109 for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) {
110 for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
111 matrix_row_t matrix_row = matrix_get_row(r); 110 matrix_row_t matrix_row = matrix_get_row(r);
112 for (uint8_t c = 0; c < MATRIX_COLS; c++) { 111 for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) {
113 if (matrix_row & ((matrix_row_t)1<<c)) { 112 if (matrix_row & (matrix_row_t)1 << c) {
114 if (keycode == keymap_key_to_keycode(0, (keypos_t){ .row = r, .col = c })) { 113 keypos_t key = (keypos_t){ .row = r, .col = c };
115 return true; 114 if (keycode == keymap_key_to_keycode(0, key)) return true;
116 }
117 } 115 }
118 } 116 }
119 } 117 }