mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Refactor debounce algorithm with static allocation (#25515)
* 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>
This commit is contained in:
3
docs/ChangeLog/20251130/PR25515.md
Normal file
3
docs/ChangeLog/20251130/PR25515.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Refactor debounce algorithm with static allocation [#25515](https://github.com/qmk/qmk_firmware/pull/25515)
|
||||
|
||||
Removed dynamic memory allocation (malloc, free) from all debounce implementations for improved efficiency on embedded systems and to avoid runtime allocation overhead. Refactored state arrays to use direct indexing, simplifying code and eliminating pointer arithmetic. Standardized usage of MATRIX_ROWS_PER_HAND throughout the codebase to ensure consistent support for split keyboards.
|
||||
Reference in New Issue
Block a user