No description
Find a file
2022-07-18 17:44:07 -07:00
.github
.vscode
builddefs Merge dnaq's HID protocol changes 2022-07-18 17:26:25 -07:00
data
docs [Docs] Add Encoder requirements to PR Checklist doc (#17634) 2022-07-12 20:50:26 -07:00
drivers
keyboards Merge dnaq's HID protocol changes 2022-07-18 17:26:25 -07:00
layouts TKL Community Layout Additions (#17563) 2022-07-04 13:48:44 -07:00
lib Add line to multibuild output log showing the actual build target. (#17606) 2022-07-09 22:32:43 +10:00
platforms
quantum Merge dnaq's HID protocol changes 2022-07-18 17:26:25 -07:00
tests
tmk_core
users [Userspace] Add support for additional Mechlovin Adelais PCB version to my userspace (#17547) 2022-07-03 14:25:09 -07:00
util MSYS2 install: use MinGW python-qmk package (#17302) 2022-07-02 15:08:05 +01:00
.clang-format
.editorconfig
.gitattributes
.gitignore Add .orig to .gitignore (#17626) 2022-07-17 04:38:56 +10:00
.gitmodules
Dockerfile
Doxyfile
doxygen-todo
LICENSE
license_GPLv2.md
license_GPLv3.md
license_Modified_BSD.md
Makefile
nose2.cfg
paths.mk
readme.md Add steno protocols to readme 2022-07-18 17:44:07 -07:00
requirements-dev.txt
requirements.txt
setup.cfg
shell.nix Remove Nixpkgs-provided poetry from the environment (#17673) 2022-07-18 22:52:55 +03:00
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,
),