The Core of Voodoo

Joystick Layer-switching Keyboards

In Brief:

A Voodoo is a Keyboard which uses an analog device, usually a 2-axis joystick, as a layer switching mechanism.

In Slightly Less Brief:

What is a Layer?

There are roughly 100 printable ASCII characters, yet many keyboards have fewer than 100 keys, including many non-ASCII keys, like function, navigation, arrow keys, etc, but we can comfortably type any ASCII we like with the help of modifiers like shift, and even non ASCII characters with something like Fn. "a" and "A" are seperate characters, but they are the same physical key modfied by the shift key, this is called a "Layer". Thanks to layers minimalist keyboards can have anywhere between 32 and 60 physical keys, while retaining their full functionality.

How do we Switch Layers?

On a "normal" minimalist keyboards, layers are swapped one of a few ways, but generally they function much like our traditional shift key, where holding down some key will change the layer. Minimalist, ergonomic boards will generally have these layer keys assigned to the thumbs, which makes them comfortable to use as the thumbs are dexterous and strong, however this has limitations. The primary limitation is when the number of keys drops dramatically and the number of layers required grows to compensate. Another limitation is that having keys on separate layers can become problematic for shortcuts, as holding key combinations across layers can be either difficult on the hands or impossible outright, depending on the keymap.

How does a Voodoo Switch Layers?

The title feature of a Voodoo is the use of joysticks as an input device, specifically to shoulder the burden of switching layers. Theoretically the input doesn't have to be a 2-axis joystick, but for now we'll stick to that. A 2-axis joystick will give a position on a plane. We can simplify this position mathematically into a discreet number of states, these states are then associated to our layers. A simple and effective model is to say that a joystick has five positions: centered, down, up, right and left. This would give us five layers which we can switch between with only the slight angling of a thumb. If we assign each thumb such a joystick, we now have a massive 25 layers to work with, as the state is defined by the positions of both sticks. This allows us to trim the number of keys to the 4 (1 hand, 1 key per digit) to 20 (2 hands, three rows for the 3 forefingers, 1 key for the pinky) range. This opens up numerous possibilities, including (but not limited to): digits being reponsible for only one key (4 or 8 keys variants), keyboards for those missing fingers or limbs keyboards with massive space for shortcuts and macros and keyboards that enable new input systems for non-latin scripts.

Additionally, the use of a 2D analog input means we are already equipped with a pointing device, allowing for the total abandonment of the mouse. Combining that with the fact that we can trim keys to a radical degree opens opportunities for portable input devices which may even exceed the efficiency and comfort of what we consider standard for desk-based use today.

Example

As of now the convention is that stick movement increases counter-clockwise from the down value, resulting in the order: none, down, right, up, left. The right stick is little-endian (so to speak) and so it loops as the layer number goes up, each loop incrementing the position of the left stick according to the order above.

Layer 1 would be: left stick none, right stick none
Voodoo layer 1
Layer 3 would be: left stick none, right stick right
Voodoo layer 3
Layer 6 would be: left stick down, right stick none
Voodoo layer 6
Layer 24 would be: left stick left, right stick up
Voodoo layer 24

Conclusion

There is enormous potential in the joystick layer-switching mechanism and I'm immensely excited to explore the possibilities and develop an awesome keyboard. If you're interest in following the development of the "original" Voodoo, I will be regularly updating this page with my progress on both hardware design and the firmware which will be fully open-source for anyone to build their own version of the Voodoo concept! Finally, if you do implement the Voodoo layer-switching idea into a personal project, please let me know! I'm super excited to see what people come up with and how people can optimize the idea in practice, so drop me a line here (that's: jeremy@jloulou.com) or find me on one of the contact platforms, I'm so excited to hear about it!