xmk_matrix.c (917B)
- // Copyright 2022 Manna Harbour (@manna-harbour)
- // https://github.com/manna-harbour/xmk
- // SPDX-License-Identifier: GPL-2.0-or-later
- #include "xmk_matrix.h"
- #include "matrix.h"
- #include "debug.h"
- bool xmk_changed = false;
- matrix_row_t xmk_rows[MATRIX_ROWS];
- bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- if (xmk_changed) {
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- current_matrix[row] = xmk_rows[row];
- }
- xmk_changed = false;
- return true;
- } else {
- return false;
- }
- }
- void xmk_matrix_key(bool press, uint8_t key) {
- dprintf("xmk_matrix_key: press: %s, key: %u\n", press?"true":"false", key);
- uint8_t row = key / MATRIX_COLS;
- if (row < MATRIX_ROWS) {
- uint8_t col = key % MATRIX_COLS;
- xmk_changed = true;
- if (press) {
- xmk_rows[row] |= (MATRIX_ROW_SHIFTER << col);
- } else {
- xmk_rows[row] &= ~(MATRIX_ROW_SHIFTER << col);
- }
- }
- }