Contents
The newer two of my heavily modified keyboards. This time having Teensy 3.1 (or 3.2) as microcontroller with a tiny 1″ monochrome OLED display. Firmware was based on Kiibohd, it was a fork with my extensions. I added display support (with a library), menu for editing e.g. macros/sequences, few demos and a game.
I did improve them further in my newer firmware, with bigger display.
The first operation I did, was cutting off most of all rubber domes. This makes the keys much softer to press, so needs less effort or fatigue. The result is minimized pressing (actuation) force and distance. Simply more pleasant and comfortable. Also healthier, since the risk of keyboard injuries decreases. I already did that earlier on my two oldest keyboards in 2005 and 2006.
Originally most keyboards need about 50 gram force needed to press keys, and probably 4 mm distance. After cutting, the distance is about 1-2mm, the force is at 23 gram for CK3 (top), 33g for CK4 (bottom) and 9-18g for CK5. This can also be varied per key (more detail can be seen on pictures (galleries below), but ultimately the lowest value depends on keyboard’s foil thickness.
For CK4 there are also few small extra keys. Which were present already in my earliest keyboards CK1 and CK2. Those are glued on top and are made from lightest 0,5N switches available. The row above numpad is used for my audio player control. Rest is custom. This part is optional and I didn’t do it for CK3. The disadvantage is the difference in pressing those switches and much lighter normal keyboard keys. They are smaller so you can fit more, but are less convenient to press. Lastly, regular keys can be used to switch layers instead.
The second step was replacing the keyboard controller board, with my own. The hardware is composed of Teensy 3.1 (or 3.2) with a tiny 1 inch OLED display (SSD1306, monochrome, 128×64) and a bunch of wires to connect to the original keyboard’s matrix.
The reason for this was to take advantage of already made open source Kiibohd controller allowing any imaginable keys assigned and layers. Also possible are macros, key combinations and even mouse buttons and movement simulation. But changing any of this required rebuilding controller software and uploading to controller, through already present USB.
It was a bit simpler to start at the time, instead of writing my own later.
After getting it to work, I implemented my own menu where you can edit sequences, stored in memory (remembered after power off). The sequences are very useful for not typing passwords or simply binding some useful macro combinations or commands dynamically. Which needed a display and menu for entering.
Once I’ve done the useful stuff, I got carried away and implemented several demos on display and even a falling blocks game.
I also wrote about it in this forum post.
The code is in my fork here with some more detail.
There are picture galleries below, also from assembly and videos.▶
All galleries up to now, from my keyboards are as follows (newest first):
Most pictures have some description text (explaining what I did there).
And the older ones:
For reference, here is a table with current status of all my keyboards, since start until present day:
Name | Assembly year | Original keyboard | Keys actuation [gram force] | Notes |
---|---|---|---|---|
CK3 > CK6 > CK9 | 2016 > 2018 > 2020 | A4 Tech KX-100 | 23 g | Cheaper, bit wobbly, but more keys |
CK2 > CK4 > CK7 | 2005 > 2016 > 2018 | Logitech Ultra X Flat | 33 g | Stiff foil, old, extra keys |
CK5, CK5b | 2015, 2020 | A4 Tech KV-300H | 9-18 g | The lightest foil |
CK1 | 2004 | Logitech Ultra X Flat | 25 g | First, old, had extra keys, now only for testing, 1 row dead 💀 |