F.A. Keyboard Firmware. Contribute to semickolon/fak development by creating an account on GitHub.
Hey all! I'm excited to share and announce my open-source keyboard firmware project. FAK exclusively supports very cheap CH55x chips. You can get a CH552 for half a dollar or maybe even cheaper. No need for external flash, LDOs, or oscillators. The chip's basically a whole MCU on its own.
So far it has layers, hold-tap, and tap-dance. Split support, combos, macros, etc. and more to come. It's based on Nickel, a purely (almost) functional programming language, so FP folk can go crazy on their config and parameterize everything or whatever. But hey, you only need that kind of power if you want it. For beginners, you can start simple and it looks almost like JSON.
Home-row mods are a first-class citizen with very customizable hold-tap behaviors. There's global quick tap from ZMK. There's hold-tap flavors too, but settable per key per behavior. There's eager decision, quick tap, and more.
I've also been experimenting with other matrix scanning methods like the Cheapino's (forgot the name) and round-robin/charlieplexing. This means less pins required, so you can get away with a CH552T (instead of a CH558L with more pins, twice the price) and keep your build very cheap.
Please check it out! If you have CH552 chips around, I'd appreciate your feedback. I've yet to write better docs and a website, but feel free to DM me and I'd be happy to help you get it running!
Thanks! No CH55x chip supports Bluetooth so it's USB only. I thought of possibly adding a Bluetooth module, but that's almost always a SoC and you're much better off using that as the main (and only) microcontroller instead.
There's this: https://forum.arduino.cc/t/jdy-23-bluetooth-module/672581
Could work as a "dumb" BT module but even so, it can't do HID over BT directly so have to translate that to HID with another chip. Not so power efficient too.
Basically, I've been through this path and it always led me to: just use one MCU with BT. Fortunately, CH582 is a cheap one. RISC-V with BLE. And it's been recently ported to QMK as well: https://github.com/O-H-M2/qmk_port_ch582
Hmm actually, FAK could be extended to CH582. It would have to be a complete rewrite on the hardware code, but I could keep the Nickel config mostly compatible between CH55x and CH58x.
You just gave me an idea. Sounds like I can make a FAK spec and then there'd be compliant hardware-specific implementation for different chips 🤯
Yep, and I think they're even working on dongle mode. They call it "triple 2.4G" on the readme.