summaryrefslogtreecommitdiffstats
path: root/keyboards/converter/xmk/xmk_matrix.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/converter/xmk/xmk_matrix.c')
-rw-r--r--keyboards/converter/xmk/xmk_matrix.c35
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);
+ }
+ }
+}