@@ 205,7 205,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
# endif
if (MATRIX_IO_DELAY_ALWAYS || current_row + 1 < MATRIX_ROWS) {
MATRIX_DEBUG_DELAY_START();
- matrix_output_unselect_delay(current_row, current_row_value != 0);
+ matrix_output_unselect_delay(current_row, current_row_value != 0); // wait for col signal to go HIGH
MATRIX_DEBUG_DELAY_END();
}
@@ 238,6 238,7 @@ static void init_pins(void) {
static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
bool matrix_changed = false;
+ bool key_pressed = false;
// Select col
select_col(current_col);
@@ 253,6 254,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
if (readPin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_row_value |= (MATRIX_ROW_SHIFTER << current_col);
+ key_pressed = true;
} else {
// Pin HI, clear col bit
current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col);
@@ 268,7 270,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// Unselect col
unselect_col(current_col);
if (MATRIX_IO_DELAY_ALWAYS || current_col + 1 < MATRIX_COLS) {
- matrix_output_unselect_delay(current_row, current_row_value != 0);
+ matrix_output_unselect_delay(current_col, key_pressed); // wait for col signal to go HIGH
}
return matrix_changed;