I saw the FAK firmware that @semickolon wrote / shared here, and thought it’d be fun to try to write firmware for.
Nickel is one of these “JSON + functions” languages.
I found it pretty fun to write declarations for the keymaps. I’ve shared my code at https://github.com/rgoulter/fak but here are some things I thought were neat:
-
Using multiline strings to declare the alphas layer (and then mapping this to keycodes) is very tidy: in ncl/layouts.ncl
-
Supporting different layouts for a keyboard, e.g. ncl/keyboards/rgoulter/ch552-44/layouts.ncl, so the CH552-44 can have a split 3x5-3 keymap.
-
Using tap-dance to allow for ‘tap’/‘home row mods’ alphas, e.g. ncl/keymaps/ch552-48/default/keymap.ncl
The PCB design files (and other useful files, like plate files, 3DP case files, etc.) can be found at https://github.com/rgoulter/keyboard-labs (there’s also a design which uses the CH552T directly).
That doesn’t look very ergonomic
Sure.
One of the neat things about mechanical keyboards (broadly) is that there are all sorts of avenues for creativity that people find interesting. Some people are enthusiastic about making their keyboard look good, or sound good. Some people like designing PCBs.
I saw the FAK firmware was quite constrained… it’s well suited to small keyboards, and it’s got a low cost microcontroller. I’m sharing here about an example of a keyboard designed to use that, and some of the firmware using that. I figured some people here might find it useful or interesting.
For the keyboard in the image posted, there are different decisions which could be made which could perhaps improve comfort. Different decisions would come with different advantages and costs.
It might not be “hand-shaped”, but the use of layers (and tap-dance/home-row mods) will minimize hand-movement, which is another way to approach ergonomics.
Yeah, minimizing hand movement, and reducing use of the pinky fingers, and letting the thumbs use at least 2-3 keys each are all things that improve comfort.