Dynamic Macros keep getting erased

Just had this happen for the fourth time and decided it was time to reach out for help.
I have around 20 dynamic macros that I am getting tired of having to reprogram in Chrysalis.

macOS 11.6.1 / Chrysalis 0.11.8 / 0.90.6-snapshot.58

Chrysalis is always open when it happens with some kind of error, this time it was:

Next time this happens, can you please go to the “Report a Problem” menu item in Chrysalis, create a bundle, and upload it here? (or DM it to me)

The debug bundle contains a lot more information that can help us figure out why certain bugs manifest. Sadly, just from the screenshot above, I have no idea what could lead to this error. We only use .trimEnd() in one place, when reading macros from the keyboard, and it shouldn’t happen if your dynamic macros are otherwise functional.

1 Like

No worries, will do!

Follow up question, is there a way to backup macros? I’ve tried exporting my layouts and then importing them after an incident like this but the dynamic macros are always empty when the layout is reloaded.

Not with Chrysalis, not yet. For the time being, I’d recommend using the focus tool from kaleidoscope-focus.rs. It can do full backups, which you can then restore, or you can individually backup & restore parts of your settings.

To use it, download the pre-built binary for macOS (amd64 or aarch64, depending on the type of hardware you have), unpack it somewhere, and then you can do the following from a terminal:

## To back things up:
./focus backup >backup.json
## To restore them:
./focus restore <backup.json
## To save macros only:
./focus send macros.map >macros.txt
## To restore macros only:
./focus send macros.map $(cat macros.txt)

Chrysalis should not be connected to the keyboard while you do this. The tool will also automatically detect your Model100, so you don’t need to tell it where to find it. If you have multiple Keyboardio keyboards connected, you can tell the tool which one to connect to with the --device option, and giving in a path, the same /dev/.... path Chrysalis displays for the device, such as:

./focus send --device /dev/cu.usbmodemCkbio01E
1 Like

Amazing, thank you for such a helpful and detailed reply @algernon !!