diff options
-rw-r--r-- | keyboards/crkbd/rev1/legacy/matrix.c | 18 | ||||
-rw-r--r-- | keyboards/crkbd/rev1/legacy/split_util.h | 2 |
2 files changed, 12 insertions, 8 deletions
diff --git a/keyboards/crkbd/rev1/legacy/matrix.c b/keyboards/crkbd/rev1/legacy/matrix.c index 46dead369f..8eb028137b 100644 --- a/keyboards/crkbd/rev1/legacy/matrix.c +++ b/keyboards/crkbd/rev1/legacy/matrix.c @@ -155,6 +155,7 @@ void matrix_init(void) uint8_t _matrix_scan(void) { + bool changed = false; // Right hand is stored after the left in the matirx so, we need to offset it int offset = isLeftHand ? 0 : (ROWS_PER_HAND); @@ -163,6 +164,7 @@ uint8_t _matrix_scan(void) _delay_us(30); // without this wait read unstable value. matrix_row_t cols = read_cols(); if (matrix_debouncing[i+offset] != cols) { + changed = true; matrix_debouncing[i+offset] = cols; debouncing = DEBOUNCE; } @@ -179,7 +181,7 @@ uint8_t _matrix_scan(void) } } - return 1; + return changed; } #ifdef USE_MATRIX_I2C @@ -237,16 +239,17 @@ int serial_transaction(int master_changed) { uint8_t matrix_scan(void) { + bool changed = false; if (is_master) { - matrix_master_scan(); + changed |= matrix_master_scan(); }else{ - matrix_slave_scan(); + changed |= matrix_slave_scan(); int offset = (isLeftHand) ? ROWS_PER_HAND : 0; memcpy(&matrix[offset], (void *)serial_master_buffer, SERIAL_MASTER_BUFFER_LENGTH); matrix_scan_quantum(); } - return 1; + return (uint8_t) changed; } @@ -297,8 +300,8 @@ uint8_t matrix_master_scan(void) { return ret; } -void matrix_slave_scan(void) { - _matrix_scan(); +uint8_t matrix_slave_scan(void) { + int ret = _matrix_scan(); int offset = (isLeftHand) ? 0 : ROWS_PER_HAND; @@ -314,7 +317,7 @@ void matrix_slave_scan(void) { for (int i = 0; i < ROWS_PER_HAND; ++i) { #ifdef SERIAL_USE_MULTI_TRANSACTION if( serial_slave_buffer[i] != matrix[offset+i] ) - change = 1; + change = 1; #endif serial_slave_buffer[i] = matrix[offset+i]; } @@ -322,6 +325,7 @@ void matrix_slave_scan(void) { slave_buffer_change_count += change; #endif #endif + return ret; } bool matrix_is_modified(void) diff --git a/keyboards/crkbd/rev1/legacy/split_util.h b/keyboards/crkbd/rev1/legacy/split_util.h index 414763bff2..b2ddc1f97a 100644 --- a/keyboards/crkbd/rev1/legacy/split_util.h +++ b/keyboards/crkbd/rev1/legacy/split_util.h @@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. extern volatile bool isLeftHand; // slave version of matix scan, defined in matrix.c -void matrix_slave_scan(void); +uint8_t matrix_slave_scan(void); void split_keyboard_setup(void); bool has_usb(void); |