Once I reposition a few keys, what else could I want from a re-programmable keyboard? Not much, I used to think. Then I received my long-awaited Keyboardio Model 01, and my perspective quickly reversed. Once I started thinking of a keyboard as programmable, my perspective of a keyboard as a static piece of hardware was replaced by all sorts of possibilities I had never imagined. As I write, I am aware of over fifty plugins, many of which extend the functionality of the keyboard in ways that I never imagined — and, as a bonus, I’m learning the programming of Arduino devices through their example.
Not all these plugins survive long in my firmware. Many plugins for the LED backlights, such as LED-Wavepool and Digital Rain strikes me more as eye-candy than anything practical — although the idea that a keyboard can serve as a light organ is certainly (forgive me) illuminating. Others, like Unicode, I’ve bookmarked against the day I venture into writing my own plugins or macros. However, that still leave a number of plugins that have everyday uses — many of which are designed to make room for further customizations within the limited resources of the keyboard.
All plugins require the installation of the Arduino IDE and a copy of the Model 01 firmware on a computer. Many follow a standard set of instructions that involve calling them as libraries and, often, configuring options, although some require special instructions. To use a plugin, you must flash the modified firmware that includes it on to the keyboard.
Here, in no particular order, are the nine Model 01 plugins that I have found most promising. I may not be able to use all of them together, but I suspect that many of them might be useful as my needs evolve. Note that the full names of plugins are prefaced with “Kaleidoscope-“, the name of the Model 01 firmware, but that I have omitted the preface here for convenience:
One limitation of a programmable keyboard is that you may have no convenient way to indicate custom keymappings. You could use paper labels, but they can make your fingers slip, and often need replacing. FunctionalColor is a partial solution to this problem, allowing you to backlight keys according to their functions, giving, for instance a different color to modifiers, arrow keys, punctation keys, mice-related keys, and a default color for other keys.
The result is gaudy but functional. However, I would suggest reducing the number of different colors, both to reduce the required memory and to make the color-coded categories easy to remember. Use all the categories, and you risk reducing the keyboard to a light organ.
Adding a keyboard binding for a standard shortcut is simple. For example, assigning Ctrl+C (Copy) to a key is a matter of mapping it to LCTRL(Key_C). However, there is a shortage of available keys on a keymap intended for everyday typing. OneShot gets around this shortage by turning a key into a modifier that affects the keys pressed after it. Press the modifier key once, followed by a C, and you get Ctrl+C; follow it by a V, and you get Ctrl+V (Paste). Press the modifier key twice, followed by Shift and C, and you get Ctrl+Shift+C, the Copy command inside a virtual terminal — in fact, until you press the modifier again, keys continue to be added. The modifer can even access the keybindings on another keymap. As a result, other keys are freed to assign to other plugins and macros.
TapDance is another economical resource. It assigns a different function according to the number of times it is pressed. For example, you might assign a key to print è when pressed once, é when pressed twice, and ë when pressed three times.
TopsyTurvy gives users another way to modify their keyboard. It inverts what happens when you use the shift-key with selected keys. For example, the plus and the equal signs are on the same key. If you find that you use the plus character more than the equal sign, you could set their key so that its default behavior is to print the plus sign. To print the equals sign with TopsyTurvey, you would need to press the Shift key first. Obviously, TopsyTurvy’s usefulness is idiosyncratic, but it can be convenient.
AlphaSquare is installed by default. It is one of the LED effects that the Model 01 toggles through when the led key is pressed. I mention it here because it is an example of a practical use of the keyboard’s backlights.
When a key is pressed, AlphaSquare displays a four-pixel high version of the character, using the four rows of the standard letters and numbers as pixels. Although the display can be crude, it acts as an accessibility control, allowing those with limited eyesight to see more easily what they are typing. It’s a simple but practical plugin for those who need it.
ShapeShifter provides a substitution table replacing the default glyphs assigned to a key with another. For example, you might choose to substitute the Euro sign (€) for the caret (^) on Key_6 key. You might also want to look up Unshifter, which offers similar results but in a different way.
Qukeys allows assigned keys to serve two purposes. For example, a key could be set to act as the Ctrl key when tapped, and as the Esc key when held down. If another key is pressed before a specified time limit, the key can act as a modifier.
The functionality is similar to that of DualUse, an earlier plugin, but slightly more extensive. If the firmware also uses DualUse, Qukey can work with its key assignments as well as its own.
Since the Model 01 is an ergonomic keyboard, TypingBreaks is a natural plugin to install. It sets a time that the keyboard will stop working, and the length of time before it becomes functional. Like all such applications, it can be annoying in the short run, but your wrists and hands might be grateful in the long run.
Inspired by a Vim plugin, MacrosOnTheFly requires two keys: one to record a macro and assign it to a key, and one to play back the macro. Since almost all keys can be assigned a macro, dozens of macros suddenly become possible, making the plugin ideal for use with any application with a large number of keyboard shortcuts. Users also have the option of color-coding actions to keep track of what is happening.
Unfortunately, MacrosOnTheFly is constrained by the keymap’s memory, and all recorded macros are lost if the keyboard is disconnected. Still, the plugin is useful for temporary macros, such as snippets of code and text that are used in a specific project.
A New View of the Keyboard
One plugin I have not included in the list is Chrysalis, the long-awaited graphical interface for constructing keymaps. It is the plugin that should have shipped with the Model 01, but different. Rumor is that although it is moderately functional, it is still under heavy development — a combination that will probably discourage all except the hardiest pioneer.
Meanwhile, the existing ones are more than enough to be going on with. Deciding which plugins to use, and learning which are compatible with each other is a slow process. To be honest, it is a process with which I am still playing.
However, one thing I can say for certain: already, my view of a keyboard as a simple, fixed object has disappeared and been replaced with a more complex perspective. It’s an experience comparable to the time when, as a new Linux user, I discovered that more than one desktop was available: hard to grasp at first, and full of seemingly endless possibilities