Skip to content

rgoulter/fak-config

 
 

Repository files navigation

fak-config

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.

Overview

  • 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

      • ch552-36-rhs - definition for using RHS-only as central. Useful for checking the RHS is soldered correctly.

      • ch552-44

        • layouts - supports implementing keymaps in other layouts. (e.g. using split_3x5_3 on the ch552-44).
      • ch552-48

        • layouts - supports implementing keymaps in other layouts. (e.g. using split_3x5_3 on the ch552-44).

Keyboards

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

Setup

Refer to upstream documentation for setting up fak-config.

Using Nix

If you have Nix installed on your system, a Nix flake is provided.

With direnv, allow the .envrc using direnv allow.

Commands

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.

About

FAK user configuration repository

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • NCL 80.7%
  • Python 14.4%
  • Nix 4.6%
  • Other 0.3%