keychron_qmk_firmware/keyboards/converter/xmk/xmk_matrix.c

38 lines
917 B
C

// 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);
}
}
}