Keyboard Firmware for Low-Budget CH552 MCU using Nickel-lang with FAK Firmware
Channel: Richard Goulter
Date: 08/12/2023

The CH552 MCUs are *really* cheap.

Nickel-lang is pretty neat.

semickolon wrote a keyboard firmware framework for CH55x MCUs, which uses Nickel-lang to define keyboards and keymaps.

I designed a couple of keyboards for this, and will walk through a keyboard definition & a keymap definition.

Links:

https://github.com/semickolon/fak

https://nickel-lang.org/

https://sicp.sourceacademy.org/chapters/1.1.html

https://mikehadlow.blogspot.com/2012/05/configuration-complexity-clock.html

PCB designs & supporting files available at https://github.com/rgoulter/keyboard-labs

My FAK implementations of keyboards and keymaps are in my fork: https://github.com/rgoulter/fak

Chapters:

0:00 Intro
0:21 CH552 is really cheap
0:37 and Nickel is interesting
0:53 CH552-44
1:11 CH552-48
1:27 Preview of a keymap
1:50 Nickel
3:00 Keyboard Definition
4:07 Trivial Keymap
5:10 Tangent: Elements of Programming
5:49 Tangent: Configuration Complexity Clock
6:56 Keymap Diagram
8:18 keymap.ncl: the keymap object
9:11 keymap.ncl: the alphas
9:29 layouts.ncl
11:36 fak keycodes
11:51 USB HID Usage codes
11:58 keymap.ncl: make_base_layer
13:28 adding tap-hold mods to keys
14:28 tap-dance keys