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).
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.