xmk_matrix.c (917B)
1 // Copyright 2022 Manna Harbour (@manna-harbour) 2 // https://github.com/manna-harbour/xmk 3 4 // SPDX-License-Identifier: GPL-2.0-or-later 5 6 #include "xmk_matrix.h" 7 #include "matrix.h" 8 #include "debug.h" 9 10 bool xmk_changed = false; 11 matrix_row_t xmk_rows[MATRIX_ROWS]; 12 13 bool matrix_scan_custom(matrix_row_t current_matrix[]) { 14 if (xmk_changed) { 15 for (uint8_t row = 0; row < MATRIX_ROWS; row++) { 16 current_matrix[row] = xmk_rows[row]; 17 } 18 xmk_changed = false; 19 return true; 20 } else { 21 return false; 22 } 23 } 24 25 void xmk_matrix_key(bool press, uint8_t key) { 26 dprintf("xmk_matrix_key: press: %s, key: %u\n", press?"true":"false", key); 27 uint8_t row = key / MATRIX_COLS; 28 if (row < MATRIX_ROWS) { 29 uint8_t col = key % MATRIX_COLS; 30 xmk_changed = true; 31 if (press) { 32 xmk_rows[row] |= (MATRIX_ROW_SHIFTER << col); 33 } else { 34 xmk_rows[row] &= ~(MATRIX_ROW_SHIFTER << col); 35 } 36 } 37 }