Hey, haven’t done a software dev blog in a while so I thought this is a good time, as part of the preparations for shipping of the September batch (which starts tomorrow), I bring you Animus Innova 2.3.
Version 2.3 brings along several quality of life improvements as well as some features additions, let’s go through the feature additions first:
As per this reddit post, I’ve replicated the tap dance functionality from QMK within Animus, for those that are not familiar with the concept, tap dance allows one to assign multiple keys to a physical button, for example, press once to output “a,” press twice to output “b,” etc. Tap dance in Animus is saved in EEPROM as well and fully configurable.
Diving more into the more technical side of things, the default firmware configuration allows up to 20 tap dance keys and each key could hold up to 3 taps, I would have preferred it to be able to hold more taps but the 1024 bytes (of which 601 bytes are reserved for the keyboard layout) of EEPROM onboard the controllers is quite restrictive on how much data I could allocate for this, of course, one could custom bake their copy of Animus to allocate more space for tap dance just like any other modules within Animus. You could find the source file for tap dance here.
Modular dual role keys (such as commaShift, spaceCtrl, etc) have always existed in Animus since 2.0 but it used an approach similar to the macro module where additional EEPROM was used for data binding where some of the bytes “wasted” in EEPROM acted as pointers, anyway, the new Dual Roles module has been completely rewritten and now does not take up any EEPROM, instead, it now utilises 20 out of the 256 keytype slots available instead, keytypes are an ample resource so I think this approach is better.
The dual roles keys are now normal “key” data structs taking up only 2 bytes instead of the previous 4, they are much easier to configure, functionally they are identical as before.
You could find the new source code over here.
Sticky keys are nothing new, gamers all over the world hate it when they rapidly tap shift multiple times and that thing pops up and takes you out of the fullscreen application. Anyway, sticky keys were also actually in Animus Innova 2.0, but it also utilised EEPROM, a similar rewrite to the Dual Roles module was made, now sticky key only takes 1 keytype and no EEPROM to do its job.
Sticky keys allows you to tap your shift key, then tap your ctrl key, then press delete to perform the ctrl+shift+del combo, etc, basically it acts as a sort of toggle until a key is pressed for modifiers, in Animus, stickFn keys are also here to allow combinations of modifiers and layer switching.
You could find the source code to the sticky key module here.
Quality of Life Improvements
Bug from this thread fixed, now there’s consistent behaviour over modifiers and layer switching.
Layer stuck if the EEPROM layout is misconfigured bug fixed.