mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 13:22:31 +01:00 
			
		
		
		
	Make debounce() signal changes in the cooked matrix as return value (#17554)
This commit is contained in:
		
							parent
							
								
									cca5d35321
								
							
						
					
					
						commit
						8224f62806
					
				| @ -81,17 +81,17 @@ void matrix_init(void) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| uint8_t matrix_scan(void) { | uint8_t matrix_scan(void) { | ||||||
|     bool matrix_has_changed = false; |     bool changed = false; | ||||||
| 
 | 
 | ||||||
|     // TODO: add matrix scanning routine here |     // TODO: add matrix scanning routine here | ||||||
| 
 | 
 | ||||||
|     // Unless hardware debouncing - use the configured debounce routine |     // Unless hardware debouncing - use the configured debounce routine | ||||||
|     debounce(raw_matrix, matrix, MATRIX_ROWS, changed); |     changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed); | ||||||
| 
 | 
 | ||||||
|     // This *must* be called for correct keyboard behavior |     // This *must* be called for correct keyboard behavior | ||||||
|     matrix_scan_quantum(); |     matrix_scan_quantum(); | ||||||
| 
 | 
 | ||||||
|     return matrix_has_changed; |     return changed; | ||||||
| } | } | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -87,17 +87,17 @@ void matrix_init(void) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| uint8_t matrix_scan(void) { | uint8_t matrix_scan(void) { | ||||||
|     bool matrix_has_changed = false; |     bool changed = false; | ||||||
| 
 | 
 | ||||||
|     // TODO: ここにマトリックススキャンルーチンを追加します |     // TODO: ここにマトリックススキャンルーチンを追加します | ||||||
| 
 | 
 | ||||||
|     // ハードウェアによるデバウンスがない場合 - 設定されているデバウンスルーチンを使用します |     // ハードウェアによるデバウンスがない場合 - 設定されているデバウンスルーチンを使用します | ||||||
|     debounce(raw_matrix, matrix, MATRIX_ROWS, changed); |     changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed); | ||||||
| 
 | 
 | ||||||
|     // 正しいキーボード動作のためにこれを呼び出す*必要があります* |     // 正しいキーボード動作のためにこれを呼び出す*必要があります* | ||||||
|     matrix_scan_quantum(); |     matrix_scan_quantum(); | ||||||
| 
 | 
 | ||||||
|     return matrix_has_changed; |     return changed; | ||||||
| } | } | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,10 +1,16 @@ | |||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| // raw is the current key state
 | /**
 | ||||||
| // on entry cooked is the previous debounced state
 |  * @brief Debounce raw matrix events according to the choosen debounce algorithm. | ||||||
| // on exit cooked is the current debounced state
 |  * | ||||||
| // changed is true if raw has changed since the last call
 |  * @param raw The current key state | ||||||
| void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed); |  * @param cooked The debounced key state | ||||||
|  |  * @param num_rows Number of rows to debounce | ||||||
|  |  * @param changed True if raw has changed since the last call | ||||||
|  |  * @return true Cooked has new keychanges after debouncing | ||||||
|  |  * @return false Cooked is the same as before | ||||||
|  |  */ | ||||||
|  | bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed); | ||||||
| 
 | 
 | ||||||
| void debounce_init(uint8_t num_rows); | void debounce_init(uint8_t num_rows); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -55,6 +55,7 @@ static debounce_counter_t *debounce_counters; | |||||||
| static fast_timer_t        last_time; | static fast_timer_t        last_time; | ||||||
| static bool                counters_need_update; | static bool                counters_need_update; | ||||||
| static bool                matrix_need_update; | static bool                matrix_need_update; | ||||||
|  | static bool                cooked_changed; | ||||||
| 
 | 
 | ||||||
| #    define DEBOUNCE_ELAPSED 0 | #    define DEBOUNCE_ELAPSED 0 | ||||||
| 
 | 
 | ||||||
| @ -77,8 +78,9 @@ void debounce_free(void) { | |||||||
|     debounce_counters = NULL; |     debounce_counters = NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | ||||||
|     bool updated_last = false; |     bool updated_last = false; | ||||||
|  |     cooked_changed    = false; | ||||||
| 
 | 
 | ||||||
|     if (counters_need_update) { |     if (counters_need_update) { | ||||||
|         fast_timer_t now          = timer_read_fast(); |         fast_timer_t now          = timer_read_fast(); | ||||||
| @ -102,6 +104,8 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool | |||||||
| 
 | 
 | ||||||
|         transfer_matrix_values(raw, cooked, num_rows); |         transfer_matrix_values(raw, cooked, num_rows); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     return cooked_changed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time) { | static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time) { | ||||||
| @ -123,7 +127,9 @@ static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], | |||||||
|                         matrix_need_update = true; |                         matrix_need_update = true; | ||||||
|                     } else { |                     } else { | ||||||
|                         // key-up: defer
 |                         // key-up: defer
 | ||||||
|                         cooked[row] = (cooked[row] & ~col_mask) | (raw[row] & col_mask); |                         matrix_row_t cooked_next = (cooked[row] & ~col_mask) | (raw[row] & col_mask); | ||||||
|  |                         cooked_changed |= cooked_next ^ cooked[row]; | ||||||
|  |                         cooked[row] = cooked_next; | ||||||
|                     } |                     } | ||||||
|                 } else { |                 } else { | ||||||
|                     debounce_pointer->time -= elapsed_time; |                     debounce_pointer->time -= elapsed_time; | ||||||
| @ -152,6 +158,7 @@ static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], ui | |||||||
|                     if (debounce_pointer->pressed) { |                     if (debounce_pointer->pressed) { | ||||||
|                         // key-down: eager
 |                         // key-down: eager
 | ||||||
|                         cooked[row] ^= col_mask; |                         cooked[row] ^= col_mask; | ||||||
|  |                         cooked_changed = true; | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             } else if (debounce_pointer->time != DEBOUNCE_ELAPSED) { |             } else if (debounce_pointer->time != DEBOUNCE_ELAPSED) { | ||||||
|  | |||||||
| @ -17,13 +17,16 @@ | |||||||
| #include "matrix.h" | #include "matrix.h" | ||||||
| #include "quantum.h" | #include "quantum.h" | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
| 
 | 
 | ||||||
| void debounce_init(uint8_t num_rows) {} | void debounce_init(uint8_t num_rows) {} | ||||||
| 
 | 
 | ||||||
| void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | ||||||
|     for (int i = 0; i < num_rows; i++) { |     bool cooked_changed = memcmp(raw, cooked, sizeof(matrix_row_t) * num_rows) != 0; | ||||||
|         cooked[i] = raw[i]; | 
 | ||||||
|     } |     memcpy(cooked, raw, sizeof(matrix_row_t) * num_rows); | ||||||
|  | 
 | ||||||
|  |     return cooked_changed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void debounce_free(void) {} | void debounce_free(void) {} | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ When no state changes have occured for DEBOUNCE milliseconds, we push the state. | |||||||
| #include "matrix.h" | #include "matrix.h" | ||||||
| #include "timer.h" | #include "timer.h" | ||||||
| #include "quantum.h" | #include "quantum.h" | ||||||
|  | #include <string.h> | ||||||
| #ifndef DEBOUNCE | #ifndef DEBOUNCE | ||||||
| #    define DEBOUNCE 5 | #    define DEBOUNCE 5 | ||||||
| #endif | #endif | ||||||
| @ -30,18 +31,23 @@ static fast_timer_t debouncing_time; | |||||||
| 
 | 
 | ||||||
| void debounce_init(uint8_t num_rows) {} | void debounce_init(uint8_t num_rows) {} | ||||||
| 
 | 
 | ||||||
| void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | ||||||
|  |     bool cooked_changed = false; | ||||||
|  | 
 | ||||||
|     if (changed) { |     if (changed) { | ||||||
|         debouncing      = true; |         debouncing      = true; | ||||||
|         debouncing_time = timer_read_fast(); |         debouncing_time = timer_read_fast(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (debouncing && timer_elapsed_fast(debouncing_time) >= DEBOUNCE) { |     if (debouncing && timer_elapsed_fast(debouncing_time) >= DEBOUNCE) { | ||||||
|         for (int i = 0; i < num_rows; i++) { |         if (memcmp(cooked, raw, sizeof(matrix_row_t) * num_rows) != 0) { | ||||||
|             cooked[i] = raw[i]; |             memcpy(cooked, raw, sizeof(matrix_row_t) * num_rows); | ||||||
|  |             cooked_changed = true; | ||||||
|         } |         } | ||||||
|         debouncing = false; |         debouncing = false; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     return cooked_changed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void debounce_free(void) {} | void debounce_free(void) {} | ||||||
|  | |||||||
| @ -48,6 +48,7 @@ typedef uint8_t debounce_counter_t; | |||||||
| static debounce_counter_t *debounce_counters; | static debounce_counter_t *debounce_counters; | ||||||
| static fast_timer_t        last_time; | static fast_timer_t        last_time; | ||||||
| static bool                counters_need_update; | static bool                counters_need_update; | ||||||
|  | static bool                cooked_changed; | ||||||
| 
 | 
 | ||||||
| #    define DEBOUNCE_ELAPSED 0 | #    define DEBOUNCE_ELAPSED 0 | ||||||
| 
 | 
 | ||||||
| @ -70,8 +71,9 @@ void debounce_free(void) { | |||||||
|     debounce_counters = NULL; |     debounce_counters = NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | ||||||
|     bool updated_last = false; |     bool updated_last = false; | ||||||
|  |     cooked_changed    = false; | ||||||
| 
 | 
 | ||||||
|     if (counters_need_update) { |     if (counters_need_update) { | ||||||
|         fast_timer_t now          = timer_read_fast(); |         fast_timer_t now          = timer_read_fast(); | ||||||
| @ -95,6 +97,8 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool | |||||||
| 
 | 
 | ||||||
|         start_debounce_counters(raw, cooked, num_rows); |         start_debounce_counters(raw, cooked, num_rows); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     return cooked_changed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time) { | static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time) { | ||||||
| @ -104,8 +108,10 @@ static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], | |||||||
|         for (uint8_t col = 0; col < MATRIX_COLS; col++) { |         for (uint8_t col = 0; col < MATRIX_COLS; col++) { | ||||||
|             if (*debounce_pointer != DEBOUNCE_ELAPSED) { |             if (*debounce_pointer != DEBOUNCE_ELAPSED) { | ||||||
|                 if (*debounce_pointer <= elapsed_time) { |                 if (*debounce_pointer <= elapsed_time) { | ||||||
|                     *debounce_pointer = DEBOUNCE_ELAPSED; |                     *debounce_pointer        = DEBOUNCE_ELAPSED; | ||||||
|                     cooked[row]       = (cooked[row] & ~(ROW_SHIFTER << col)) | (raw[row] & (ROW_SHIFTER << col)); |                     matrix_row_t cooked_next = (cooked[row] & ~(ROW_SHIFTER << col)) | (raw[row] & (ROW_SHIFTER << col)); | ||||||
|  |                     cooked_changed |= cooked[row] ^ cooked_next; | ||||||
|  |                     cooked[row] = cooked_next; | ||||||
|                 } else { |                 } else { | ||||||
|                     *debounce_pointer -= elapsed_time; |                     *debounce_pointer -= elapsed_time; | ||||||
|                     counters_need_update = true; |                     counters_need_update = true; | ||||||
|  | |||||||
| @ -46,11 +46,12 @@ void debounce_free(void) { | |||||||
|     last_raw = NULL; |     last_raw = NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | ||||||
|     uint16_t now       = timer_read(); |     uint16_t now           = timer_read(); | ||||||
|     uint16_t elapsed16 = TIMER_DIFF_16(now, last_time); |     uint16_t elapsed16     = TIMER_DIFF_16(now, last_time); | ||||||
|     last_time          = now; |     last_time              = now; | ||||||
|     uint8_t elapsed    = (elapsed16 > 255) ? 255 : elapsed16; |     uint8_t elapsed        = (elapsed16 > 255) ? 255 : elapsed16; | ||||||
|  |     bool    cooked_changed = false; | ||||||
| 
 | 
 | ||||||
|     uint8_t* countdown = countdowns; |     uint8_t* countdown = countdowns; | ||||||
| 
 | 
 | ||||||
| @ -63,10 +64,13 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool | |||||||
|         } else if (*countdown > elapsed) { |         } else if (*countdown > elapsed) { | ||||||
|             *countdown -= elapsed; |             *countdown -= elapsed; | ||||||
|         } else if (*countdown) { |         } else if (*countdown) { | ||||||
|  |             cooked_changed |= cooked[row] ^ raw_row; | ||||||
|             cooked[row] = raw_row; |             cooked[row] = raw_row; | ||||||
|             *countdown  = 0; |             *countdown  = 0; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     return cooked_changed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool debounce_active(void) { | bool debounce_active(void) { | ||||||
|  | |||||||
| @ -49,6 +49,7 @@ static debounce_counter_t *debounce_counters; | |||||||
| static fast_timer_t        last_time; | static fast_timer_t        last_time; | ||||||
| static bool                counters_need_update; | static bool                counters_need_update; | ||||||
| static bool                matrix_need_update; | static bool                matrix_need_update; | ||||||
|  | static bool                cooked_changed; | ||||||
| 
 | 
 | ||||||
| #    define DEBOUNCE_ELAPSED 0 | #    define DEBOUNCE_ELAPSED 0 | ||||||
| 
 | 
 | ||||||
| @ -71,8 +72,9 @@ void debounce_free(void) { | |||||||
|     debounce_counters = NULL; |     debounce_counters = NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | ||||||
|     bool updated_last = false; |     bool updated_last = false; | ||||||
|  |     cooked_changed    = false; | ||||||
| 
 | 
 | ||||||
|     if (counters_need_update) { |     if (counters_need_update) { | ||||||
|         fast_timer_t now          = timer_read_fast(); |         fast_timer_t now          = timer_read_fast(); | ||||||
| @ -96,6 +98,8 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool | |||||||
| 
 | 
 | ||||||
|         transfer_matrix_values(raw, cooked, num_rows); |         transfer_matrix_values(raw, cooked, num_rows); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     return cooked_changed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // If the current time is > debounce counter, set the counter to enable input.
 | // If the current time is > debounce counter, set the counter to enable input.
 | ||||||
| @ -132,6 +136,7 @@ static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], ui | |||||||
|                     *debounce_pointer    = DEBOUNCE; |                     *debounce_pointer    = DEBOUNCE; | ||||||
|                     counters_need_update = true; |                     counters_need_update = true; | ||||||
|                     existing_row ^= col_mask; // flip the bit.
 |                     existing_row ^= col_mask; // flip the bit.
 | ||||||
|  |                     cooked_changed = true; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             debounce_pointer++; |             debounce_pointer++; | ||||||
|  | |||||||
| @ -48,6 +48,7 @@ static bool matrix_need_update; | |||||||
| static debounce_counter_t *debounce_counters; | static debounce_counter_t *debounce_counters; | ||||||
| static fast_timer_t        last_time; | static fast_timer_t        last_time; | ||||||
| static bool                counters_need_update; | static bool                counters_need_update; | ||||||
|  | static bool                cooked_changed; | ||||||
| 
 | 
 | ||||||
| #    define DEBOUNCE_ELAPSED 0 | #    define DEBOUNCE_ELAPSED 0 | ||||||
| 
 | 
 | ||||||
| @ -67,8 +68,9 @@ void debounce_free(void) { | |||||||
|     debounce_counters = NULL; |     debounce_counters = NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { | ||||||
|     bool updated_last = false; |     bool updated_last = false; | ||||||
|  |     cooked_changed    = false; | ||||||
| 
 | 
 | ||||||
|     if (counters_need_update) { |     if (counters_need_update) { | ||||||
|         fast_timer_t now          = timer_read_fast(); |         fast_timer_t now          = timer_read_fast(); | ||||||
| @ -92,6 +94,8 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool | |||||||
| 
 | 
 | ||||||
|         transfer_matrix_values(raw, cooked, num_rows); |         transfer_matrix_values(raw, cooked, num_rows); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     return cooked_changed; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // If the current time is > debounce counter, set the counter to enable input.
 | // If the current time is > debounce counter, set the counter to enable input.
 | ||||||
| @ -123,8 +127,9 @@ static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], ui | |||||||
|         // determine new value basd on debounce pointer + raw value
 |         // determine new value basd on debounce pointer + raw value
 | ||||||
|         if (existing_row != raw_row) { |         if (existing_row != raw_row) { | ||||||
|             if (*debounce_pointer == DEBOUNCE_ELAPSED) { |             if (*debounce_pointer == DEBOUNCE_ELAPSED) { | ||||||
|                 *debounce_pointer    = DEBOUNCE; |                 *debounce_pointer = DEBOUNCE; | ||||||
|                 cooked[row]          = raw_row; |                 cooked[row]       = raw_row; | ||||||
|  |                 cooked_changed |= cooked[row] ^ raw[row]; | ||||||
|                 counters_need_update = true; |                 counters_need_update = true; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -125,11 +125,15 @@ void DebounceTest::runDebounce(bool changed) { | |||||||
|     std::copy(std::begin(input_matrix_), std::end(input_matrix_), std::begin(raw_matrix_)); |     std::copy(std::begin(input_matrix_), std::end(input_matrix_), std::begin(raw_matrix_)); | ||||||
|     std::copy(std::begin(output_matrix_), std::end(output_matrix_), std::begin(cooked_matrix_)); |     std::copy(std::begin(output_matrix_), std::end(output_matrix_), std::begin(cooked_matrix_)); | ||||||
| 
 | 
 | ||||||
|     debounce(raw_matrix_, cooked_matrix_, MATRIX_ROWS, changed); |     bool cooked_changed = debounce(raw_matrix_, cooked_matrix_, MATRIX_ROWS, changed); | ||||||
| 
 | 
 | ||||||
|     if (!std::equal(std::begin(input_matrix_), std::end(input_matrix_), std::begin(raw_matrix_))) { |     if (!std::equal(std::begin(input_matrix_), std::end(input_matrix_), std::begin(raw_matrix_))) { | ||||||
|         FAIL() << "Fatal error: debounce() modified raw matrix at " << strTime() << "\ninput_matrix: changed=" << changed << "\n" << strMatrix(input_matrix_) << "\nraw_matrix:\n" << strMatrix(raw_matrix_); |         FAIL() << "Fatal error: debounce() modified raw matrix at " << strTime() << "\ninput_matrix: changed=" << changed << "\n" << strMatrix(input_matrix_) << "\nraw_matrix:\n" << strMatrix(raw_matrix_); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     if (std::equal(std::begin(output_matrix_), std::end(output_matrix_), std::begin(cooked_matrix_)) && cooked_changed) { | ||||||
|  |         FAIL() << "Fatal error: debounce() did detect a wrong cooked matrix change at " << strTime() << "\noutput_matrix: cooked_changed=" << cooked_changed << "\n" << strMatrix(output_matrix_) << "\ncooked_matrix:\n" << strMatrix(cooked_matrix_); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DebounceTest::checkCookedMatrix(bool changed, const std::string &error_message) { | void DebounceTest::checkCookedMatrix(bool changed, const std::string &error_message) { | ||||||
|  | |||||||
| @ -337,10 +337,9 @@ uint8_t matrix_scan(void) { | |||||||
|     if (changed) memcpy(raw_matrix, curr_matrix, sizeof(curr_matrix)); |     if (changed) memcpy(raw_matrix, curr_matrix, sizeof(curr_matrix)); | ||||||
| 
 | 
 | ||||||
| #ifdef SPLIT_KEYBOARD | #ifdef SPLIT_KEYBOARD | ||||||
|     debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed); |     changed = debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed) | matrix_post_scan(); | ||||||
|     changed = (changed || matrix_post_scan()); |  | ||||||
| #else | #else | ||||||
|     debounce(raw_matrix, matrix, ROWS_PER_HAND, changed); |     changed = debounce(raw_matrix, matrix, ROWS_PER_HAND, changed); | ||||||
|     matrix_scan_quantum(); |     matrix_scan_quantum(); | ||||||
| #endif | #endif | ||||||
|     return (uint8_t)changed; |     return (uint8_t)changed; | ||||||
|  | |||||||
| @ -169,10 +169,9 @@ __attribute__((weak)) uint8_t matrix_scan(void) { | |||||||
|     bool changed = matrix_scan_custom(raw_matrix); |     bool changed = matrix_scan_custom(raw_matrix); | ||||||
| 
 | 
 | ||||||
| #ifdef SPLIT_KEYBOARD | #ifdef SPLIT_KEYBOARD | ||||||
|     debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed); |     changed = debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed) | matrix_post_scan(); | ||||||
|     changed = (changed || matrix_post_scan()); |  | ||||||
| #else | #else | ||||||
|     debounce(raw_matrix, matrix, ROWS_PER_HAND, changed); |     changed = debounce(raw_matrix, matrix, ROWS_PER_HAND, changed); | ||||||
|     matrix_scan_quantum(); |     matrix_scan_quantum(); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Stefan Kerkmann
						Stefan Kerkmann