Typing some significant text was pretty unbearable. The keys still have the best feel of any modern keyboard, but they're suffering from bouncing or missing presses. The problem is it has to wait 50us after exciting a ground pin, then takes just 1 sample of the key pins. 50us was the minimum for the voltages to settle. To defeat the dropped keys, it needs to integrate more than 1 sample. 1 way is to sample continuously during the 50us, detect all the points when only 1 key is down, & pick the key that's down the longest. It's not clear what the best integrator algorithm is. This algorithm can only see 1 ground pin at a time, so a key that's pressed elsewhere during the 50us is still going to get dropped. It might need full ADCs for the sense pins.
Then, it needs to accumulate several passes of the entire keyboard to debounce. It needs to scan as fast as possible to not miss any keypresses.
Some other ideas are driving the ground pins in push pull, scanning continuously instead of once per millisecond, trying to sense the last keypress when multiple are pressed simultaneously.
Noted it's currently grounding 17 pins & using 8 as sense pins. If it grounded the 8 & used the 17 for sensing, it could scan a lot faster.
Finally, noted when it's over the part of the desk with motor wires, it picks up spurious keypresses when the desk moves. It might need stronger pullups or a big heavy shield. This seems to be the end of the story. Discrete pullups would be a major fabrication job. It would require sending the sense pins through resistor packs, probably an expensive multilayer board. By that price point, you're better off burning $150 on a unicomp.
This project might be a useful boilerplate for a custom input device but a full, reliable laptop keyboard is a bigger deal than lion paygrade. It really dashes hopes for the custom laptop. Lions might be stuck with the big boys.
https://www.instructables.com/How-to-Make-a-USB-Laptop-Keyboard-Controller/
https://hackaday.com/2018/12/04/teensy-liberates-the-thinkpad-keyboard/
The goog buffered up a few more hits in the last week.
They might have better scanning examples. They're all using the internal pullups in a variety of microcontrollers. Good luck finding any resistance values or part numbers. 1 commenter guessed they were using 33k. The STM32 is rated for 50k. The problem is the reliability of all these projects in different RF conditions, style of typing.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.