Early Release Key Bounce

January 05, 2016 Scott Urueta

When a keyswitch makes contact, it has a tendency to bounce open and closed repeatedly in a few milliseconds as it settles into place. When this is uncontrolled by software or hardware, it can cause keystrokes to be pressed multiple times.

The firmware currently being used with the early release version (based on StenoFW, originally for Stenoboard) has a section of code specifically to counter this issue by placing a tiny gap of time between when the switch first connects and when it can be pressed again to allow it to settle down into position over those first few milliseconds. The setting is at 20 ms by default, which should be more than enough for any typical mechanical keyswitch to function well. However, I have a report of issues with some keyswitches recording multiple keypresses per hit after about a week of use.

I have four keyboards in the second batch being assembled (and three more keyboards in a third batch printed and waiting to be assembled), so I am going to put these on hold for a short time (days, not weeks) and focus some time on rooting out what the issue is. I am temporarily removing assembled keyboard availability from the storefront until this is solved, since it is an issue that directly affects functionality.

If you encounter any bounce on your keyboard, please let me know and detail if it occurs intermittently on all keys, consistently on a specific set of keys, etc.

Thanks for sticking with the project!


  • annuark

    May 03, 2021

    viagra prescription

  • annuark

    Mar 30, 2021 – where to buy cialis online

  • annuark

    Dec 14, 2020

    Taglich Levitra 20mg meadiadior best place to buy cialis online Teemnapare Comprare Cialis Con Paypal

  • Carl Hauser

    Sep 05, 2016

    Scott and Charles,
    I’m also using the Stenoboard StenoFW with a homemade keyboard. For my second build I switched to a Teensy LC from a Teensy 2++ and saw much greater amounts of multiple keystrokes. Looking at the debounce code I spotted what appears to be an error in the line: if (debouncingKeys[i][j] == true && micros() – debouncingMicros[i][j])/ 1000 > debounceMillis)
    — there need to be parens around the subtraction:
    if (debouncingKeys[i][j] == true && (micros() – debouncingMicros[i][j]) / 1000 > debounceMillis)
    if this is to make sense. I put them in and all multiple-keypresses went away.

    Interestingly, two switches were much more prone to bounce than others — I’m using Matias Quiet Linear switches. I can’t explain why some switches would be more likely to bounce but it does seem to be the case. Once the debounce code was fixed, though, it was no longer an issue so I guess it’s nothing to worry about. Given the per-switch differences it may be that the change from the Teensy 2++ to the LC really had nothing to do with observing the problem and that it is all due to differences between switches in the two builds.

  • Scott Urueta

    Jan 23, 2016

    Perhaps there is a silly mistake in the firmware I am using as well. I should check my code more thoroughly.

Leave a comment