]> git.friedersdorff.com Git - max/tmk_keyboard.git/commitdiff
core: Saved 60~ bytes (and possible performance) by storing col_mask when iterating...
authorAlex Ong <the.onga@gmail.com>
Wed, 24 Jan 2018 03:15:56 +0000 (14:15 +1100)
committerhasu@tmk <tmk@users.noreply.github.com>
Wed, 24 Jan 2018 03:15:56 +0000 (12:15 +0900)
tmk_core/common/keyboard.c

index 864db2b295f6f2f7b1127da9a7cac9688cfde857..929b862af36b33374c8a14f8daa24350647acc4a 100644 (file)
@@ -126,17 +126,18 @@ void keyboard_task(void)
             matrix_ghost[r] = matrix_row;
 #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) {
                     keyevent_t e = (keyevent_t){
                         .key = (keypos_t){ .row = r, .col = c },
-                        .pressed = (matrix_row & ((matrix_row_t)1<<c)),
+                        .pressed = (matrix_row & col_mask),
                         .time = (timer_read() | 1) /* time should not be 0 */
                     };
                     action_exec(e);
                     hook_matrix_change(e);
                     // record a processed key
-                    matrix_prev[r] ^= ((matrix_row_t)1<<c);
+                    matrix_prev[r] ^= col_mask;
 
                     // This can miss stroke when scan matrix takes long like Topre
                     // process a key per task call