How to define macros in Chrysalis?

Have received my brand new keyboard model 100, excellent quality and I love it from all aspects.
I have configured my custom layout and led color with Chrysalis, but seems there’s no way to define macros such as LED on/off directly in this software. Also, I find some great LED plugins in the forum. How can I import those plugins without touching my currently set layout and led color configurations?

The editable macros in Chrysalis are quite limited at the moment, turning leds on and off for example is not a functionality available through it. Macros implemented in firmware can do that - and more - however.

You will need to compile custom firmware to add new plugins. You can start with the official firmware, and add or remove plugins as you wish. The configuration you set with Chrysalis will not be affected, as long as you flash your new firmware with Chrysalis (Chrysalis saves & restores the settings saved on your keyboard during flashing).

Using custom firmware is 100% supported, and even encouraged, so you can go wild freely!

The only thing to pay attention is to not remove plugins essential for Chrysalis.There is some documentation about that, too.

3 Likes

Great! Very detailed reply. Thank you very much for helping me a lot from startup.

Can’t help getting hands dirty with coding stuff. :+1:

1 Like

It would be great if you could open issues against Chrysalis for the macro functions you’d like but which are currently missing.

2 Likes

Sorry, I have some new troubles and back again.
I’ve followed documents and instructions and found some difficulties because they were compatible to Model01 and Model100’s current situation is different. So my current environment is not totally instruction followed and maybe a bit … weird.

I’ve downloaded the default firmware from here.
First. I tried to compile it in Arduino IDE(just for making a check), and the error log is:

Arduino: 1.8.13 (Mac OS X), Board: "Keyboardio Model 100, dfu-util (DFU - Keyboardio DAPBoot bootloader)"

Model100:27:10: fatal error: Kaleidoscope-FirmwareVersion.h: No such file or directory
   27 | #include "Kaleidoscope-FirmwareVersion.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Kaleidoscope-FirmwareVersion.h: No such file or directory


This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I don’t know where the headers file search path is, but I’m sure there’s no Kaleidoscope-FirmwareVersion.h in my file system.

Then. I tried to compile the firmware directly from Arduino CLI. But I got a different error:

Using Kaleidoscope from ~/Documents/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope
Building in quiet mode. For a lot more information, add 'VERBOSE=1' to the beginning of your call to /Applications/Xcode.app/Contents/Developer/usr/bin/make
Error during build: Platform 'keyboardio:gd32' not found: platform not installed
Platform keyboardio:gd32 is not found in any known index
Maybe you need to add a 3rd party URL?
*************************************************************** 

Arduino couldn't figure out what kind of device this sketch 
is for. Usually, Arduino looks in a file called `sketch.json` 
to figure this out. 

I'm unable to detect your keyboard, you may need to manually 
edit your `sketch.json` file or run 

ARDUINO_DIRECTORIES_USER=~/Documents/Arduino/ ARDUINO_DIRECTORIES_DATA=~/Documents/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope/.arduino/data /usr/local/bin/arduino-cli board attach 

manually, specifying the FQBN for your keyboard. 

*************************************************************** 
~/Documents/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope/etc/makefiles/sketch.mk:92: *** .  Stop.

But I have directly reinstalled beyboardio:gd32 board from Arduino CLI.

$ arduino-cli core install keyboardio:gd32
Platform keyboardio:gd32@1.99.5 already installed

I’ve no idea what’s going wrong.

I was only just now able to build the stock firmware.
Notes of what I tried. What eventually worked (nicely formatted at the above link :slight_smile: ):

Setup prerequisites

  1. Add udev rules for the Model100 per https://community.keyboard.io/t/model-100-firmware-update-to-fix-corruption-issues/5553/9 .
  • chown root:root the new rules file or it won’t be used (ask me how I know! :wink: )
  1. Install the latest dfu-util from source
  1. Confirm that the keyboard is accessible:
  2. Hold prog while plugging in the keyboard
  3. Run ./src/dfu-util -lv and make sure Model 100 (bootloader) appears
  4. Install the latest firmware using Chrysalis per Model 100 firmware update to fix corruption issues

Setup Chrysalis-Firmware-Bundle

  1. Clone GitHub - keyboardio/Chrysalis-Firmware-Bundle: Firmware sketches for boards supported by Chrysalis and cd into the clone dir.
  2. Run ./tools/bootstrap. This will create .arduino/ and .kaleidoscope/ and download lots of files into them.
  3. export KALEIDOSCOPE_DIR="$(realpath .kaleidoscope/)"
  4. export ARDUINO_DIRECTORIES_USER="$(realpath .kaleidoscope/.arduino/user)"
  5. make -C .kaleidoscope setup

Build the firmware

  1. make Keyboardio/Model100 VERBOSE=1. This should leave output in output/Keyboardio/Model100/default.bin.
  2. Unplug the Model100, hold Prog, and plug the Model100 back in. The prog key should light steady red.
  3. Run dfu-util -d 3496:0005 -D ./output/Keyboardio/Model100/default.bin -R — use your locally-built dfu-util. You should see something like the below “Sample dfu-util output”. The first column of keys will cycle green while this is happening.
  4. When the programming is done, the keyboard should reset. If it doesn’t, unplug and replug it.
1 Like