summaryrefslogtreecommitdiffstats
path: root/tmk_core/common/bootmagic.c
diff options
context:
space:
mode:
authorEric Tang <e_l_tang@outlook.com>2016-05-24 05:42:21 +0200
committerJack Humbert <jack.humb@gmail.com>2016-05-24 05:42:21 +0200
commitaaa758f1d3f97dda39879f2b055ad2da9680adfe (patch)
treecb0749cda23c0507dd2b230af3eb0ca81a97b8af /tmk_core/common/bootmagic.c
parentd66aa0abf96b5e887250cf0a7fa5e575f18c5a91 (diff)
downloadqmk_firmware-aaa758f1d3f97dda39879f2b055ad2da9680adfe.tar.gz
qmk_firmware-aaa758f1d3f97dda39879f2b055ad2da9680adfe.tar.xz
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)
}
}
-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;
}
}
}