3.9 KiB
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,
),