Animus Firmware

Release Build Firmware Downloads:


UniKeyboard’s in-house firmware, Animus, is an Arduino based firmware for use by devices compatible with the Arduino Leonardo firmware, it is hosted on github with more technical documents and is open source under a permissive license (Apache 2.0). Key rebinding is done by changing the onboard EEPROM via the use of serial communication from the host PC to the microcontroller, this means that no firmware reflash is necessary to rebind keys. The official GUI rebinder, Arbites is available over here.

Key Features

  • NKRO
  • Live key layout editing (no need to reupload layout)
  • Persistent key layout (keyboard layout is remembered across computers)
  • Split keyboard compatible via I2C (works on stuff like ergodox/diverge)
  • Up to 256 FN layers limited by EEPROM
  • Up to 256 layers limited by EEPROM
  • FN keys, spaceFN, toggleFN
  • “Dual-keys” functionality (commaShift, etc)
  • Complex macros (settings for key up/down order, etc)
  • Media keys
  • Serial communication (for editing layout, layers, name, etc)
  • Device embedded unique id
  • Modular modding system (plugins could be added to provide additional functionality)
  • Low ROM usage (currently uses less than 500 bytes)

Design Philosophy

I am a software developer by training and I have always felt the need to understand what is going on with my devices, as such all of UniKeyboard’s kits utilise an in-house firmware known as Animus, the soul.

Animus is revolutionary in a lot of ways, it utilises EEPROM to allow live layout editing, this means that there is no need to reflash the microcontroller every time someone wishes to rebind their keys, as far as I know, Animus is the first and only custom keyboard firmware to utilise such a function.

The main design principles of Animus is the following:

  • Simple core code
  • Modular design
  • Expandable
  • Readable


By following the above design principles, we (several people contributed to the Animus project) were able to create a firmware with plug-in support. The base Animus code does not support functions such as media keys, split keyboard communications, macros, etc by design, instead, such functions are modularly implemented utilising Animus plug-ins. This prevents code clutter and feature creep as users of the firmware are able to select what features they need to keep the code clean and to save space.