keyboardio / Kaleidoscope

Firmware for Keyboardio keyboards and other keyboards with AVR or ARM MCUs.
http://keyboard.io
GNU General Public License v3.0
756 stars 259 forks source link

lower latency debounce algorithm #1435

Open e00E opened 2 months ago

e00E commented 2 months ago

There are several ways you can do debouncing. This page outlines some of them.

The way Kaleidoscope currently does debouncing is called "defer" in the link. (I determined this by glancing at the code in the file keyscanner/ATmega.h.) The downside of this approach is that it incurs a fixed a latency. The latency is around 5 ms according to a comment in the code.

I would like to use a lower latency way of debouncing. The one called "eager" in the link. This mode has no extra latency.

obra commented 2 months ago

In the past, when we've played with eager, engineers have reported phantom press issues related to faint electrical noise on a circuit board design, which has definitely made me skittish. I'd love to see it become configurable, though. In the keyscanner we use for the Model 100, we actually built out support for state-machine based keyscanner designs, along with a ton of recorded test data from questionable switches.

On Mon, Aug 26, 2024 at 9:37 AM Valentin @.***> wrote:

There are several ways you can do debouncing. This https://docs.qmk.fm/feature_debounce_type page outlines some of them.

The way Kaleidoscope currently does debouncing is called "defer" in the link. (I determined this by glancing at the code in the file keyscanner/ATmega.h.) The downside of this approach is that it incurs a fixed a latency. The latency is around 5 ms according to a comment in the code.

I would like to use a lower latency way of debouncing. The one called "eager" in the link. This mode has no extra latency.

— Reply to this email directly, view it on GitHub https://github.com/keyboardio/Kaleidoscope/issues/1435, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAALC2EOOPUTOLLPM2TMV5DZTNKS3AVCNFSM6AAAAABNELOWSWVHI2DSMVQWIX3LMV43ASLTON2WKOZSGQ4DOMRXHA2DGOA . You are receiving this because you are subscribed to this thread.Message ID: @.***>