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!
May 03, 2021
Mar 30, 2021
https://gcialisk.com/ – where to buy cialis online
Dec 14, 2020
Taglich Levitra 20mg meadiadior best place to buy cialis online Teemnapare Comprare Cialis Con Paypal
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.
Jan 23, 2016
Perhaps there is a silly mistake in the firmware I am using as well. I should check my code more thoroughly.