<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qmk_firmware/quantum/debounce.h, branch master</title>
<subtitle>QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)</subtitle>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/'/>
<entry>
<title>Debounce: Deprecate num_rows parameter (#25632)</title>
<updated>2025-10-19T02:14:37+00:00</updated>
<author>
<name>フィルターペーパー</name>
<email>76888457+filterpaper@users.noreply.github.com</email>
</author>
<published>2025-10-19T02:14:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=81df54308687713371ed5fbf4947e38963c7867b'/>
<id>81df54308687713371ed5fbf4947e38963c7867b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor debounce algorithm with static allocation (#25515)</title>
<updated>2025-09-07T12:34:05+00:00</updated>
<author>
<name>フィルターペーパー</name>
<email>76888457+filterpaper@users.noreply.github.com</email>
</author>
<published>2025-09-07T12:34:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=4bd5c033c3135576010baded53c44720d8030d32'/>
<id>4bd5c033c3135576010baded53c44720d8030d32</id>
<content type='text'>
* 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 &lt;git@zvecr.com&gt;

* Update change log to new breaking change date

---------

Co-authored-by: Joel Challis &lt;git@zvecr.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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 &lt;git@zvecr.com&gt;

* Update change log to new breaking change date

---------

Co-authored-by: Joel Challis &lt;git@zvecr.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>debounce: remove direct `quantum.h` includes (#21480)</title>
<updated>2023-07-09T01:05:20+00:00</updated>
<author>
<name>Ryan</name>
<email>fauxpark@gmail.com</email>
</author>
<published>2023-07-09T01:05:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=7457e90887acecc6aea82a4ca738dd85cb25d939'/>
<id>7457e90887acecc6aea82a4ca738dd85cb25d939</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make debounce() signal changes in the cooked matrix as return value (#17554)</title>
<updated>2022-07-07T08:00:40+00:00</updated>
<author>
<name>Stefan Kerkmann</name>
<email>karlk90@pm.me</email>
</author>
<published>2022-07-07T08:00:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=8224f62806b66f0825b68fd8c00436ee57a28e9a'/>
<id>8224f62806b66f0825b68fd8c00436ee57a28e9a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[Core] Remove matrix_is_modified() and debounce_is_active() (#15349)</title>
<updated>2021-11-29T16:22:10+00:00</updated>
<author>
<name>Stefan Kerkmann</name>
<email>karlk90@pm.me</email>
</author>
<published>2021-11-29T16:22:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=c1297ceb972d45407cc1f518fd0527efda7ee796'/>
<id>c1297ceb972d45407cc1f518fd0527efda7ee796</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid 8-bit timer overflows in debounce algorithms (#12240)</title>
<updated>2021-06-09T07:23:21+00:00</updated>
<author>
<name>Simon Arlott</name>
<email>70171+nomis@users.noreply.github.com</email>
</author>
<published>2021-06-09T07:23:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=b829a1d2648abd0751e9d3505554547faf643425'/>
<id>b829a1d2648abd0751e9d3505554547faf643425</id>
<content type='text'>
* Add fast_timer_t that is 16-bit or 32-bit based on architecture

A 16-bit timer will overflow sooner but be faster to compare on AVR.

* Avoid 8-bit timer overflows in debounce algorithms

Count down remaining elapsed time instead of trying to do 8-bit timer
comparisons.

Add a "none" implementation that is automatically used if DEBOUNCE is
0 otherwise it will break the _pk/_pr count down.

* Avoid unnecessary polling of the entire matrix in sym_eager_pk

The matrix only needs to be updated when a debounce timer expires.

* Avoid unnecessary polling of the entire matrix in sym_eager_pr

The matrix only needs to be updated when a debounce timer expires.

The use of the "needed_update" variable is trying to do what
"matrix_need_update" was added to fix but didn't work because it only
applied when all keys finished debouncing.

* Fix sym_defer_g timing inconsistency compared to other debounce algorithms

DEBOUNCE=5 should process the key after 5ms, not 6ms

* Add debounce tests</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Add fast_timer_t that is 16-bit or 32-bit based on architecture

A 16-bit timer will overflow sooner but be faster to compare on AVR.

* Avoid 8-bit timer overflows in debounce algorithms

Count down remaining elapsed time instead of trying to do 8-bit timer
comparisons.

Add a "none" implementation that is automatically used if DEBOUNCE is
0 otherwise it will break the _pk/_pr count down.

* Avoid unnecessary polling of the entire matrix in sym_eager_pk

The matrix only needs to be updated when a debounce timer expires.

* Avoid unnecessary polling of the entire matrix in sym_eager_pr

The matrix only needs to be updated when a debounce timer expires.

The use of the "needed_update" variable is trying to do what
"matrix_need_update" was added to fix but didn't work because it only
applied when all keys finished debouncing.

* Fix sym_defer_g timing inconsistency compared to other debounce algorithms

DEBOUNCE=5 should process the key after 5ms, not 6ms

* Add debounce tests</pre>
</div>
</content>
</entry>
<entry>
<title>Removed #include "matrix.h" from debounce.h</title>
<updated>2019-01-26T11:44:33+00:00</updated>
<author>
<name>Alex Ong</name>
<email>the.onga@gmail.com</email>
</author>
<published>2019-01-26T11:44:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=b5b119544a4e943b3eb56f6a32f350c428f532f7'/>
<id>b5b119544a4e943b3eb56f6a32f350c428f532f7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Restored debounce.h since there wasnt any real change.</title>
<updated>2019-01-26T06:46:27+00:00</updated>
<author>
<name>alex-ong</name>
<email>the.onga@gmail.com</email>
</author>
<published>2019-01-26T06:46:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=5b7fc758d7b0d0ef24bc2861c4b2ba6708fbd367'/>
<id>5b7fc758d7b0d0ef24bc2861c4b2ba6708fbd367</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>DO NOT USE Revert back to original API to support split_keyboards.</title>
<updated>2019-01-26T06:10:27+00:00</updated>
<author>
<name>alex-ong</name>
<email>the.onga@gmail.com</email>
</author>
<published>2019-01-26T06:10:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=123608fb318a42500d64d29aa46c7d08140033fd'/>
<id>123608fb318a42500d64d29aa46c7d08140033fd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>DO NOT USE - debounce successfully compiled.</title>
<updated>2019-01-26T06:03:46+00:00</updated>
<author>
<name>alex-ong</name>
<email>the.onga@gmail.com</email>
</author>
<published>2019-01-26T06:03:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/qmk_firmware/commit/?id=d0b691df0ee74863ca54ca697aa4d4212cf401a7'/>
<id>d0b691df0ee74863ca54ca697aa4d4212cf401a7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
