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 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.
- 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(
/)
. Tapped three times, they input Japanese brackets,「
/」
. - 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 LEAD
switches to the next LED mode.LEAD BUTTERFLY
(whereBUTTERFLY
is theR2C9
key) does anM-x butterfly RET y
, in honor of xkcd#378.LEAD GUI
switches to a specialAPPSEL
layer where a few (highlighted) keys on the right side can be used to select an application to switch to.LEAD Enter GUI
launches an application selector on the host side.LEAD r
inputsRight Alt
, myCompose
key of choice.
- The
R2C6
key is also a tap-dance key, which inputs:
on a single tap,;
otherwise. - The
R0C0
key acts asF11
, 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 manyF11
held events. - 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.
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 make update
.
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
- CycleTimeReport
- EEPROM-Keymap
- EEPROM-Settings
- Escape-OneShot
- FocusSerial
- Focus-Version
- Hardware-Model01
- HostOS
- IdleLEDs
- LED-ActiveModColor
- LED-Palette-Theme
- LEDControl
- LangPack-Hungarian
- Leader
- Macros
- MagicCombos
- 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.