FAK user configuration repository.
FAK is a keyboard firmware for the CH55x series of microcontrollers.
CH55x microcontrollers are both cheap, and very simple to design keyboards for.
FAK uses the Nickel configuration language (a "JSON + functions + types" language) for defining keyboard and keymap definitions. Nickel is a pleasant and expressive language to use for this.
This repository includes definitions for my keyboards and keymaps.
-
shared/lib
- Nickel code which may be shared across keymaps/keyboard Nickel code.-
layouts.ncl - helper code for various Alphabetical layouts. (QWERTY, Dvorak, etc.).
-
keymaps/split_3x5_3/ - keymaps for a "split 3x5 + 3" layout.
- rgoulter - my split 3x5 + 3 keymap, a miryoku-inspired keymap.
-
keyboards/
- FAK keyboard definitions.-
ch552-36-rhs - definition for using RHS-only as central. Useful for checking the RHS is soldered correctly.
-
- layouts - supports implementing keymaps in other layouts. (e.g. using split_3x5_3 on the ch552-44).
-
- layouts - supports implementing keymaps in other layouts. (e.g. using split_3x5_3 on the ch552-44).
-
Design files for PCBs, plates, 3DP/CNC from rgoulter's Keyboard Labs.
Designation | Summary/Keywords | Image |
---|---|---|
CH552-44 | 44-key ortholinear, MX, BM40/JJ40-compatible, no frills | |
CH552-48 | 48-key ortholinear (4x12), MX, BM40/JJ40-compatible, no frills | |
CH552-48-LPR | 48-key ortholinear (4x12), low profile redragon, no frills | |
CH552-36 | 36 key (2x3x5+3), split, column-staggered, MX, sub-100x100, no frills |
Refer to upstream documentation for setting up fak-config.
If you have Nix installed on your system, a Nix flake is provided.
With direnv, allow the .envrc
using direnv allow
.
Now that you have your development environment set up and ready, compiling is as easy as fak compile -kb [keyboard] -km [keymap]
. You may omit -km [keymap]
if keymap is "default" (e.g., fak compile -kb [keyboard]
). This will also print the path(s) where it put the firmware files in, which is helpful in a remote setup.
If you're using a local setup, you can flash directly with fak flash -kb [keyboard] -km [keymap]
. Then if you have a split, flash the peripheral side with fak flash_p -kb [keyboard] -km [keymap]
. Likewise, you may omit -km [keymap]
if keymap is "default".
If something's off, wrong, or not working, cleaning your build files might help with fak clean
.
To compile every keyboard with its every keymap, enter fak compile_all
. Whenever you push, this is what GitHub Actions actually does behind the scenes to update the latest release with all ready-to-flash .ihx
files.