This is my work in progress firmware Sketch for the Keyboardio Model 01, using Kaleidoscope together with a fair amount of plugins.
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.
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).
- The
Alt
,Control
,Shift
modifiers are all one-shot, and so are the two palm keys. - The LED colors are governed by the Colormap/EEPROM-Colormap plugins 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.
- A blazing trail effect is provided by LED-Stalker.
- 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.
- The
R0C6
andR0C9
keys are to controltmux
andscreen
, and are dependent on my tmux setup. - The
R1C6
andR1C9
keys are tap-dance keys. Tapped once, they input[{
/}]
(without and withShift
, respectively). Tapped twice, they input(
/)
. - The
LEAD
keys is a leader key, with the following sequences built-in:LEAD u
starts the symbolic unicode input method.LEAD s
does a lot of magic to type a shruggy:¯ \_(ツ )_/¯
.LEAD r
enters keymap remapping mode, using the EEPROM-Keymap-Programmer plugin.LEAD LEAD
switches to the next LED mode.LEAD BUTTERFLY
(whereBUTTERFLY
is theR2C9
key) does anM-x butterfly RET y
, in honor of xkcd#378.
- The
R0C7
key is also a tap-dance key, which inputs:
on a single tap,;
otherwise. - The
R3C8
key (another tap-dance key) acts as aGUI
key when tapped once. When tapped twice, it swithes to a specialAPPSEL
layer, where the number row on the left half can be used to select an application to switch to. This needs a helper program on the host side. - The
R0C0
key acts asF11
on a single tap, and if tapped more than one time, does nothing. This is so that it can be double tapped and held to go into programmable mode when re-flashing. - There are a few other actions one can trigger with magic combos:
PALMS + A
: Switch to the ADORE layer.
- We are also using mouse keys, mouse gears, and macros for some of the features.
- The keyboard can also communicate with the host bidirectionally, thanks to the Focus 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.
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.
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:
- Colormap
- EEPROM-Colormap
- EEPROM-Keymap
- EEPROM-Keymap-Programmer
- EEPROM-Settings
- Escape-OneShot
- Focus
- Hardware-Model01
- HostOS
- LED-ActiveModColor
- LED-AlphaSquare
- LED-Stalker
- LEDControl
- LangPack-Hungarian
- Leader
- Macros
- MagicCombos
- MouseGears
- MouseKeys
- OneShot
- Syster
- TapDance
- Unicode
The code is released under the terms of the GNU GPL, version 3 or later. See the COPYING file for details.