Reactor
Reactor is the firmware generator part of Fusion.
It takes the JSON's exported by the Fusion project and process them in to ready-to-be-downloaded firmware.
Reactor uses the awesome qmk_firmware by Jack Humbert. The firmware is included through a git subtree. To update the firmware, check out updating the firmware.
General process
- Take JSON input
- Generate a .c template file based on the JSON and the liquid template. Name it something unique
- Create a hex file by compiling that c file. Name it something unique too
- Read .hex file and return it
Local development
You can run the tests with be guard
- which will watch for changes in ruby files and run whenever they do.
Testing is done in ruby 2.2.2
Updating the firmware
The qmk_firmware is included in this repository as a git subtree. Any changes to qmk_firmware should be made to the qmk_firmware repository not this repository.
To update the subtree from the qmk_firmware repository, pull the updates from qmk_firmware into this repository.
If you don't have the remote and the subtree setup:
-
Add the remote for qmk_firmware
git remote add -f qmk_firmware git@github.com:jackhumbert/qmk_firmware.git
-
Add the subtree
git subtree add --prefix lib/firmware qmk_firmware master --squash
If you have the remote and subtree setup:
-
Fetch the updates
git fetch qmk_firmware master
-
Update the subtree
git subtree pull --prefix lib/firmware qmk_firmware master --squash
Read more about git subtrees here
Compiling firmware
Linux
Using the instructions from the teensy loader build environment:
sudo apt-get install gcc-avr binutils-avr avr-libc
Mac OSX
Using homebrew it's easy to compile the firmware:
brew tap osx-cross/avr
brew install avr-libc
Next cd into the appropriate folder of the qmk_firmware, say keyboard/ergodox_ez
cd keyboard/ergodox_ez
Then run make
for the default keymap, or
make KEYMAP="yourown"
for your own keymap. This requires a files keymap_yourown.c in the subfolder keymaps.
You should end up with a ergodox_ez.hex
file, which you can use with the Teensy loader or Teensy GUI