2016 Keyboards CK3,4 ⌨️

    • C++➕, Electronics📱, Firmware⚙️, Forks, Gallery🖼️, Keyboards⌨️, Modding🛠️, New, Open Source, Video▶️

⏱️Overview

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.

🛠️Modifications

Light press

Rubber domes reduction for minimized pressing (actuation) force and distance. Simply more pleasant and comfortable. Also healthier, since the risk of keyboard injuries decreases. I do it always for all my keyboards. Process with info shown here and in gallery below at end.

⌨️Additional keys

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.

⚙️Microcontroller (MCU)

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.

📊Features

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.

📂Sources

The code is in my fork here with some more detail.

✅Summary

For reference, here is a table with current status of all my keyboards, since start until present day:

NameAssembly yearOriginal keyboardKeys actuation
[gram force]
Notes
CK3 > CK6 > CK92016 > 2018 > 2020A4 Tech KX-10023 gCheaper, bit wobbly, but more keys
CK2 > CK4 > CK72005 > 2016 > 2018Logitech Ultra X Flat33 gStiff foil, old, extra keys
CK5, CK5b2015, 2020A4 Tech KV-300H9-18 gThe lightest foil
CK12004Logitech Ultra X Flat25 gFirst, old, had extra keys,
now only for testing, 1 row dead 💀

▶️Videos

CK3 demos, CK4 demos – showing all demos on display, it is only 128×64 resolution

Plasma – uses dithering, since display is mono, 1 color only

Game – blocks falling, shortly played on each preset

Features – menu with all configuration possible back then and options, also keyboard view

Keyboard View CK4 – shows view at CK4 keyboard

📷Galleries

Pictures from my keyboards are as follows (newest first) of final result and assembly for CK4 and CK3:

CK4 final (18 Apr 2016)

CK4 assembly (Apr 2016)

CK3 final (11 Apr 2016)

CK3 assembly (Apr 2016)

CK3 rubbers cut and glued (Apr 2016)