.github | ||
.vscode | ||
builddefs | ||
data | ||
docs | ||
drivers | ||
keyboards | ||
layouts | ||
lib | ||
platforms | ||
quantum | ||
tests | ||
tmk_core | ||
users | ||
util | ||
.clang-format | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
Dockerfile | ||
Doxyfile | ||
doxygen-todo | ||
LICENSE | ||
license_GPLv2.md | ||
license_GPLv3.md | ||
license_Modified_BSD.md | ||
Makefile | ||
nose2.cfg | ||
paths.mk | ||
readme.md | ||
requirements-dev.txt | ||
requirements.txt | ||
setup.cfg | ||
shell.nix | ||
Vagrantfile |
QMK Steno Firmware
This repository is a fork of the QMK firmware containing changes specific to hobbyist steno keyboards that are not currently merged into upstream QMK:
- Support for protocols like Plover HID
- New keyboards, such as Ecosteno
- Optional behavior changes such as first-up chord send and chord repeat
See the QMK firmware repository and documentation for more information on QMK itself.
Keyboards Supported
Keyboard | Source | Binaries |
---|---|---|
Georgi | gboards/georgi |
|
Splitography | splitography |
|
The Uni (v2) | the_uni/pro_micro |
StenoKeyboards |
The Uni (v3) | the_uni/usb_c |
StenoKeyboards |
Ecosteno | noll/ecosteno |
Nolltronics |
Multisteno | Nolltronics |
Steno Protocols
Serial (TX Bolt, Gemini PR)
The industry-standard TX Bolt and Gemini PR steno protocols are included in upstream QMK, and QMK's steno docs go into more detail on how to set that up, but in summary:
Add the following definitions to your keymap's rules.mk
file:
VIRTSER_ENABLE = yes
STENO_ENABLE = yes
And use the constants with the STN_
prefix
to specify what steno key each key on your board should send. For example, the
base layer for the Uni looks as follows:
#include "keymap_steno.h"
LAYOUT(
STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2,
),
Plover HID
The Plover HID protocol is an in-development protocol that relies on the standard HID protocol rather than USB serial, resulting in more customizability and a better user experience.
To use Plover HID, add the following definitions to your keymap's rules.mk
:
STENO_ENABLE = no
PLOVER_HID_ENABLE = yes
The keycodes for Plover HID are the same as the TX Bolt constants for serial,
but use the PLV_
prefix instead of STN_
:
#include "keymap_plover_hid.h"
LAYOUT(
PLV_SL, PLV_TL, PLV_PL, PLV_HL, PLV_STR, PLV_STR, PLV_FR, PLV_PR, PLV_LR, PLV_TR, PLV_DR ,
PLV_SL, PLV_KL, PLV_WL, PLV_RL, PLV_STR, PLV_STR, PLV_RR, PLV_BR, PLV_GR, PLV_SR, PLV_ZR ,
PLV_NUM, PLV_A, PLV_O, PLV_E, PLV_U, PLV_NUM,
),