algernon's Keyboardio Model01 firmware
This is a reasonably complete example of how to work with the firmware and surrounding libraries to extend it, to compose the various components, to have something useful in the end.
It is a heavy work in progress, with some awful hacks and workarounds here and there. Eventually these will be cleaned up.
It is based on my previous ErgoDox EZ layout, a lot of things are common between the two.
Table of Contents
- Special features
- Plugins used
This is a Dvorak-inspired layout, with some changes here and there, to make it more suited for programming, and for a non-traditional keyboard.
- Keys with blue front-prints are activated by tapping or holding the left palm key (also colored blue).
- Keys with red front-prints are activated by tapping or holding the right palm key (also colored red).
Shiftmodifiers are all one-shot, and so are the two palm keys.
- The LED colors are governed by the Colormap plugin for the most part:
- By default, the modifiers and palm keys are highlighted with different colors.
- On different layers, the keys that have changed behaviour, are colored differently.
- When a modifier is active, the LED-ActiveModColor plugin turns it white.
- Additional LED effects are provided by LED-Stalker, and LEDEffect-DigitalRain. All of these are conditional.
- One can also switch LEDs off.
- The top row was inspired by Programmer Dvorak, but the symbols are arranged so that the most used ones are easier to access. The numbers are available in a numpad-like layout on a separate layer.
R0C9keys are to control
screen, and are dependent on my tmux setup.
R1C9keys are tap-dance keys. Tapped once, they input
}](without and with
Shift, respectively). Tapped twice, they input
). Tapped three times, they input Japanese brackets,
LEADkeys is a leader key, with the following sequences built-in:
LEAD ustarts the symbolic unicode input method.
LEAD sdoes a lot of magic to type a shruggy:
¯ \_(ツ )_/¯.
LEAD LEADswitches to the next LED mode.
R2C9key) does an
M-x butterfly RET y, in honor of xkcd#378.
LEAD GUIswitches to a special
APPSELlayer where a few (highlighted) keys on the right side can be used to select an application to switch to.
LEAD Enter GUIlaunches an application selector on the host side.
Right Alt, my
Composekey of choice.
R2C6key is also a tap-dance key, which inputs
:on a single tap,
R0C0key acts as
F11, but triggers only on release. This is so that it can be held to go into programmable mode when re-flashing, without sending way too many
- There are a few other actions one can trigger with magic combos:
PALMS + AD: Switch to the ADORE layer.
- We are also using mouse keys, and macros for some of the features.
- The keyboard can also communicate with the host bidirectionally, thanks to the FocusSerial plugin. See Chrysalis for a simple client.
A heavy work in progress. The main difference is in the layout of alphanumerics, but most other things work as on the base layer.
Symbolic Unicode Input
Once in the Symbolic Unicode Input mode (implemented by using the Syster plugin), one is able to type in symbol names, press
Space, and get the Unicode symbol itself back. When in the mode,
⌨ is printed first. Once the sequence is finished, all of it is erased by sending enough
Backspace taps, and the firmware starts the OS-specific unicode input sequence. Then, it looks up the symbol name, and enters the associated code.
For the list of supported symbols, please see the source.
This is an experimental feature, and may or may not work reliably.
The repository and its build system is set up in a way that allows one to download Arduino only, and let the repository handle the rest. For an initial setup, simply type
make setup, and it will clone every other repository one needs. From that point on,
make (compile the firmware without flashing) and
make flash (compile & flash) will work as in the case of the factory firmware. The rest of the targets supported by the official sketch will also work here.
To update the repositories this sketch depends on, use
This sketch makes use of a fair amount of plugins, most of them have been listed above, but below, you'll find a list of all plugins used (directly, or transitively), in alphabetical order:
The code is released under the terms of the GNU GPL, version 3 or later. See the COPYING file for details.