* Refactor debounce counters with direct indexing * Refactor code to use array indexing for debounce_counters * Use global MATRIX_ROW_SHIFTER macro * Refactor debounce algorithm with static allocation * Converted arrays to static allocation * Standardised use of MATRIX_ROWS_PER_HAND for array sizing * Added Doxygen comments for primary debounce functions * Removed debounce_free() * Rewrite sym_defer_pr * Modernise code using sym_defer_pk as template * Format consistency with other current algorithms * Use shorter SPDX-License-Identifier * Remove ChibiOS core memory manager guard * Keep type definition within DEBOUNCE guard * Add change log * Minor optimisation refactor * Pre-calculate row_offset in per-key matrix loops * Add inline compiler hints * Improve readability with blank lines * Limit elapsed time to the maximum debounce value * Apply suggestions from code review Declare counters with "DEBOUNCE_ELAPSED" Co-authored-by: Joel Challis <git@zvecr.com> * Update change log to new breaking change date --------- Co-authored-by: Joel Challis <git@zvecr.com>
19 lines
588 B
C
19 lines
588 B
C
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include "matrix.h"
|
|
|
|
/**
|
|
* @brief Debounce raw matrix events according to the choosen debounce algorithm.
|
|
*
|
|
* @param raw The current key state
|
|
* @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);
|