What Influences Keyboard Input Speed
blog.wooting.nl
blog.wooting.nl
https://userinterfaces.aalto.fi/136Mkeystrokes/
An interesting conclusion is that "non-standard typists" are catching up to touch typists on standard keyboards. This matches my personal experience as someone whose teachers thought cursive would forever remain more relevant than typing...
https://www.sciencedaily.com/releases/2019/10/191002075925.h... https://news.vanderbilt.edu/2016/10/18/todays-self-taught-ty...
My findings: the scan rate is around 200-2000hz (number of times a single key is checked per second). Having a split does lower this number, so does enabling i2c for either split communication or RGB.
I measured latency with an oscilloscope by checking the speed from having a key scan to a NumLock LED lighting up on the keyboard. It is variable, from 5ms all the way to 30.
I hear that ARM is way better in this regard. And ZMK might be better, too.
Do you have the full data for each QMK feature written out anywhere? Or is just roughly something like, more features turned = more lag.
Did you get faster input when you only used one side of the split?
Main refers to the left half of the keyboard connected to USB. "Other" refers to the right half, connected via a TRRS cable to the left half.
Serial for comms, measurement on main half, other half disconnected. 7-13ms
Serial, measurement on main half, other half connected. 8-16ms
Serial, measurement on other half, main connected. 9-19ms
i2c, measurement on main, other not connected, 5-15ms
i2c, measurement on main, other connected, 6-16ms
i2c, measurement on other, 10-20ms
Not sure if any of the above is stat-sig. Measurement methodology - hook up one probe to the key and trigger on having the key scan seeing "key down". The other probe went to two pins I designated as a NumLock LED.
In terms of matrix refresh rate - I remember that enabling reporting to console slowed things down significantly, i2c slowed things down, enabling features slowed things down. No hard numbers unfortunately.
ZMK - just because it's a fresher codebase & support for 32-bit only. I did no measurements of ZMK.
The key touted advantage of the Wooting one keyboard seems to be optical switches with an adjustable actuation point. It also uses a multiplexer for each row of keys, which is somehow faster than a scan matrix.
I don't see an actual test result for the keyboard that includes all of the latency factors discussed. The closest is a link to a tweet by Sunjun Kim. Unlike Dan Luu's measurements, which actually pressed a key, Sunjun triggered the optical switch using an LED, resulting in latency of 4.2 to 9.6 ms, depending on the firmware.
According to this post, key travel can add up to 10 ms, which the adjustable actuation is supposed to minimize. That would put the total latency at 10 to 15 ms, which is around what Dan Luu measured for Apple's Magic Keyboard.
What a weird opener; if there's a topic that's plagued by anecdotal evidence it's this.
Bit of an odd opener, but at least the author backs it up.
The big reason why gaming may look terrible at 30 fps mostly has to do with temporal aliasing, in other words, the lack of proper motion blur. For example if you look at a car going quickly from left to right in most games, you will see multiple copies of the car instead of a smooth trail, as if it was shot with a strobe light. Modern graphics engines can do motion blur but it is a hack. As an experiment, I tried doing it properly with very simple objects and it definitely looked smooth even at low FPS.
But there is a caveat. While it may look good if you are just staring at the screen, things start to fall apart when you start tracking objects with your eyes. The blur becomes apparent. You then have the option to trade blurriness for smoothness by adjusting shutter speed. It is the same kind of trade-off you can have when resizing an image: blurry or pixelated.
And then, there are jitter, tearing, artistic considerations, etc...
It's probably a fairly fitting opener given that it then dives into perception of input latency, which is a less common or discussed topic.