diff options
Diffstat (limited to 'keyboards/converter/xmk/xmk_matrix.c')
-rw-r--r-- | keyboards/converter/xmk/xmk_matrix.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/keyboards/converter/xmk/xmk_matrix.c b/keyboards/converter/xmk/xmk_matrix.c new file mode 100644 index 0000000000..7327ad5cfe --- /dev/null +++ b/keyboards/converter/xmk/xmk_matrix.c @@ -0,0 +1,35 @@ +// Copyright 2022 Manna Harbour (@manna-harbour) +// https://github.com/manna-harbour/xmk + +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "xmk_matrix.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); + } + } +} |