opensteno_qmk/readme.md
2022-07-18 17:44:07 -07:00

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