Flash for pro micro-based builds
qmk flash -kb crkbd/rev1/common -km neoncorneghost -bl avrdude-split-left
qmk flash -kb crkbd/rev1/common -km neoncorneghost -bl avrdude-split-rightFlash for Elite C or dfu bootloader builds
qmk flash -kb crkbd/rev1/common -km neoncorneghost -bl dfu-split-left
qmk flash -kb crkbd/rev1/common -km neoncorneghost -bl dfu-split-rightThese commands can be mixed if, for example, you have an Elite C on the left and a pro micro on the right.
Note: its not recommended to try to use QMK Toolbox
A few quick notes to build, edit, and flash this keymap.
Prerequisites
- Install QMK (qmk_firmware) and the toolchain for your platform. Make sure
qmkis on your PATH.
Build (compile only)
- Compile the firmware without flashing to check for errors:
qmk compile -kb crkbd/rev1/common -km neoncorneghostFlash (example)
- The repo already includes examples for Pro Micro and Elite C/DFU flashing. Example using
qmk flash:
qmk flash -kb crkbd/rev1/common -km neoncorneghost -bl avrdude-split-left
qmk flash -kb crkbd/rev1/common -km neoncorneghost -bl avrdude-split-rightEditing the keymap
- The layer definitions are moved into
keymap.hto make layout edits easier. Edit that file to change layer contents. keymap.ccontains runtime logic and delegates OLED/RGB behavior tooled.candrgb.c. Keep big bitmap assets in the animation headers described below.- After changing
keymap.h, run the formatter tool to tidy the grid alignment so the keyboard layout is easier to read in code:
./tools/tidy_keymap_layers.py ./keymap.hOLED animations and assets
- Large PROGMEM bitmaps are stored in:
oled_anims_master.h— animation frames used by the master OLEDoled_anims_slave.h— animation frames used by the slave OLED
- Edit these files if you want to change or add animations. They are included inside the OLED-rendering functions so arrays remain function-local.
Troubleshooting
- If the build fails with missing headers, ensure the files above are present in the same directory as
keymap.c. - If flashing fails, check bootloader mode for the controller (Pro Micro / Elite C) and use the corresponding
-bloption shown above.
You can export your current layout by generating keymap.json:
qmk c2json -kb crkbd/rev1/common -km neoncorneghost ./keymap.h > keymap.jsonThis watcher changes your desktop wallpaper whenever the active keyboard layer changes.
The goal is to make layer state visible at a glance, so you always know which layout is active without guessing.
It also watches keymap.h and automatically runs ./tools/tidy_keymap_layers.py ./keymap.h plus ./tools/generate_keymap_assets.sh when the file changes.
On startup, it performs one immediate asset refresh and then applies the default wallpaper.
Use it after generating the keymap wallpapers:
./tools/layer_state_daemon.shWith background merge enabled for auto-regenerated assets:
BACKGROUND_WALLPAPER_IMAGE=./tools/keymap/wallpaper_base.jpg ./tools/layer_state_daemon.shThis script generates wallpaper images from your current keymap layers (keymap.h).
Each generated image represents one layer and is used by the watcher script.
You can optionally merge the keyboard layer image on top of a background wallpaper image.
Typical workflow:
- Edit
keymap.h - Reformat with
./tools/tidy_keymap_layers.py ./keymap.h - Generate updated wallpapers with:
./tools/generate_keymap_assets.shOptional background merge:
BACKGROUND_WALLPAPER_IMAGE=./tools/keymap/wallpaper_base.jpg ./tools/generate_keymap_assets.sh- Run
./tools/layer_state_daemon.shto switch wallpapers automatically as layers change