aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--quantum/matrix.c7
-rw-r--r--quantum/matrix.h2
-rw-r--r--quantum/matrix_common.c2
3 files changed, 7 insertions, 4 deletions
diff --git a/quantum/matrix.c b/quantum/matrix.c
index 235b16769..d22817bf4 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -182,7 +182,7 @@ __attribute__((weak)) void matrix_read_cols_on_row(matrix_row_t current_matrix[]
182 182
183 // Unselect row 183 // Unselect row
184 unselect_row(current_row); 184 unselect_row(current_row);
185 matrix_output_unselect_delay(); // wait for all Col signals to go HIGH 185 matrix_output_unselect_delay(current_row, current_row_value != 0); // wait for all Col signals to go HIGH
186 186
187 // Update the matrix 187 // Update the matrix
188 current_matrix[current_row] = current_row_value; 188 current_matrix[current_row] = current_row_value;
@@ -222,6 +222,8 @@ __attribute__((weak)) void matrix_init_pins(void) {
222} 222}
223 223
224__attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { 224__attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
225 bool key_pressed = false;
226
225 // Select col 227 // Select col
226 if (!select_col(current_col)) { // select col 228 if (!select_col(current_col)) { // select col
227 return; // skip NO_PIN col 229 return; // skip NO_PIN col
@@ -234,6 +236,7 @@ __attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[]
234 if (readMatrixPin(row_pins[row_index]) == 0) { 236 if (readMatrixPin(row_pins[row_index]) == 0) {
235 // Pin LO, set col bit 237 // Pin LO, set col bit
236 current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col); 238 current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
239 key_pressed = true;
237 } else { 240 } else {
238 // Pin HI, clear col bit 241 // Pin HI, clear col bit
239 current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); 242 current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
@@ -242,7 +245,7 @@ __attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[]
242 245
243 // Unselect col 246 // Unselect col
244 unselect_col(current_col); 247 unselect_col(current_col);
245 matrix_output_unselect_delay(); // wait for all Row signals to go HIGH 248 matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
246} 249}
247 250
248# else 251# else
diff --git a/quantum/matrix.h b/quantum/matrix.h
index 3fe691aae..5c696622f 100644
--- a/quantum/matrix.h
+++ b/quantum/matrix.h
@@ -56,7 +56,7 @@ matrix_row_t matrix_get_row(uint8_t row);
56void matrix_print(void); 56void matrix_print(void);
57/* delay between changing matrix pin state and reading values */ 57/* delay between changing matrix pin state and reading values */
58void matrix_output_select_delay(void); 58void matrix_output_select_delay(void);
59void matrix_output_unselect_delay(void); 59void matrix_output_unselect_delay(uint8_t line, bool key_pressed);
60/* only for backwards compatibility. delay between changing matrix pin state and reading values */ 60/* only for backwards compatibility. delay between changing matrix pin state and reading values */
61void matrix_io_delay(void); 61void matrix_io_delay(void);
62 62
diff --git a/quantum/matrix_common.c b/quantum/matrix_common.c
index efbad6a5f..66c89970b 100644
--- a/quantum/matrix_common.c
+++ b/quantum/matrix_common.c
@@ -88,7 +88,7 @@ uint8_t matrix_key_count(void) {
88__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } 88__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); }
89 89
90__attribute__((weak)) void matrix_output_select_delay(void) { waitInputPinDelay(); } 90__attribute__((weak)) void matrix_output_select_delay(void) { waitInputPinDelay(); }
91__attribute__((weak)) void matrix_output_unselect_delay(void) { matrix_io_delay(); } 91__attribute__((weak)) void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { matrix_io_delay(); }
92 92
93// CUSTOM MATRIX 'LITE' 93// CUSTOM MATRIX 'LITE'
94__attribute__((weak)) void matrix_init_custom(void) {} 94__attribute__((weak)) void matrix_init_custom(void) {}