/* matrix state */
#if DIODE_DIRECTION == COL2ROW
static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t debouncing_matrix[MATRIX_ROWS];
#else
static matrix_col_t matrix[MATRIX_COLS];
-static matrix_col_t debouncing_matrix[MATRIX_COLS];
#endif
static int8_t debouncing_delay = -1;
#if DIODE_DIRECTION == COL2ROW
uint8_t matrix_scan(void) {
+ static matrix_row_t debouncing_matrix[MATRIX_ROWS];
for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) {
toggle_row(r);
matrix_row_t state = read_cols();
#else
uint8_t matrix_scan(void) {
+ static matrix_col_t debouncing_matrix[MATRIX_COLS];
for (int8_t c = MATRIX_COLS - 1; c >= 0; --c) {
toggle_col(c);
matrix_col_t state = read_rows();
/* does routine keyboard jobs */
void keyboard_task(void) {
- static matrix_row_t previous_matrix[MATRIX_ROWS];
-#ifdef MATRIX_HAS_GHOST
- static matrix_row_t deghosting_matrix[MATRIX_ROWS];
-#endif
- static uint8_t led_status = 0;
+ static uint8_t led_status;
matrix_scan();
for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) {
+ static matrix_row_t previous_matrix[MATRIX_ROWS];
matrix_row_t state = matrix_get_row(r);
matrix_row_t changes = state ^ previous_matrix[r];
if (changes) {
#ifdef MATRIX_HAS_GHOST
+ static matrix_row_t deghosting_matrix[MATRIX_ROWS];
if (is_row_ghosting(r)) {
/* debugs the deghosting mechanism */
/* doesn't update previous_matrix until the ghosting has stopped