diff --git a/readme.md b/readme.md index f8f37e0506..a807b67289 100644 --- a/readme.md +++ b/readme.md @@ -21,3 +21,58 @@ documentation for more information on QMK itself. | The Uni (v3) | [`the_uni/usb_c`](https://github.com/openstenoproject/qmk/tree/main/keyboards/the_uni/usb_c) | [StenoKeyboards](https://github.com/petercpark/stenokeyboards-firmware) | | Ecosteno | [`noll/ecosteno`](https://github.com/openstenoproject/qmk/tree/main/keyboards/noll/ecosteno) | [Nolltronics](https://github.com/nkotech/EcoSteno-Firmware/tree/main/keyboards/noll) | | Multisteno | | [Nolltronics](https://github.com/nkotech/EcoSteno-Firmware/tree/main/keyboards/noll) | + +## 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](https://docs.qmk.fm/#/feature_stenography) +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](https://docs.qmk.fm/#/feature_stenography?id=keycode-reference) +to specify what steno key each key on your board should send. For example, the +base layer for the Uni looks as follows: + +```c +#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](https://github.com/dnaq/plover-machine-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_`: + +```c +#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, +), +```