mirror of
https://github.com/qmk/qmk_firmware.git
synced 2026-09-07 10:53:17 +02:00
Initial rework of steno feature (#26273)
This commit is contained in:
@@ -111,7 +111,7 @@ More details can be found here: https://github.com/dnaq/plover-machine-hid
|
||||
|
||||
### Switching protocols on the fly {#switching-protocols-on-the-fly}
|
||||
|
||||
If you wish to switch the serial protocol used to transfer the steno chords without having to recompile your keyboard firmware every time, you can press the `QK_STENO_BOLT` and `QK_STENO_GEMINI` keycodes in order to switch protocols on the fly.
|
||||
If you wish to switch the serial protocol used to transfer the steno chords without having to recompile your keyboard firmware every time, you can press one of the [mode keycodes](#keycode-reference-mode) in order to switch protocols on the fly.
|
||||
|
||||
To enable these special keycodes, add the following lines to your `rules.mk`:
|
||||
```make
|
||||
@@ -123,6 +123,13 @@ If you want to switch protocols programmatically, as part of a custom macro for
|
||||
|
||||
The default protocol is Gemini PR but the last protocol used is stored in non-volatile memory so QMK will remember your choice between reboots of your keyboard — assuming that your keyboard features (emulated) EEPROM.
|
||||
|
||||
To configure the default, add one of the following lines to your `config.h`:
|
||||
|
||||
```c
|
||||
#define STENO_DEFAULT_MODE STENO_MODE_GEMINI
|
||||
#define STENO_DEFAULT_MODE STENO_MODE_BOLT
|
||||
```
|
||||
|
||||
Naturally, this option takes the most amount of firmware space as it needs to compile the code for all the available stenography protocols. In most cases, compiling a single stenography protocol is sufficient.
|
||||
|
||||
The default value for `STENO_PROTOCOL` is `all`.
|
||||
@@ -143,7 +150,7 @@ To test your keymap, you can chord keys on your keyboard and either look at the
|
||||
|
||||
## Learning Stenography {#learning-stenography}
|
||||
|
||||
* [Learn Plover!](https://sites.google.com/site/learnplover/)
|
||||
* [Learn Plover!](https://opensteno.org/learn-plover/)
|
||||
* [Steno Jig](https://joshuagrams.github.io/steno-jig/)
|
||||
* More resources at the Plover [Learning Stenography](https://github.com/openstenoproject/plover/wiki/Learning-Stenography) wiki
|
||||
|
||||
@@ -161,7 +168,7 @@ This function is called when a chord is about to be sent. Mode will be one of `S
|
||||
bool process_steno_user(uint16_t keycode, keyrecord_t *record) { return true; }
|
||||
```
|
||||
|
||||
This function is called when a keypress has come in, before it is processed. The keycode should be one of `QK_STENO_BOLT`, `QK_STENO_GEMINI`, or one of the `STN_*` key values.
|
||||
This function is called when a keypress has come in, before it is processed. The keycode should be one of `QK_STENO_MODE_BOLT`, `QK_STENO_MODE_GEMINI`, or one of the `ST_*` key values.
|
||||
|
||||
```c
|
||||
bool post_process_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE], int8_t n_pressed_keys);
|
||||
@@ -171,7 +178,7 @@ This function is called after a key has been processed, but before any decision
|
||||
|
||||
If `record->event.pressed` is false, and `n_pressed_keys` is 0 or 1, the chord will be sent shortly, but has not yet been sent. This relieves you of the need of keeping track of where a packet ends and another begins.
|
||||
|
||||
The `chord` argument contains the packet of the current chord as specified by the protocol in use. This is *NOT* simply a list of chorded steno keys of the form `[STN_E, STN_U, STN_BR, STN_GR]`. Refer to the appropriate protocol section of this document to learn more about the format of the packets in your steno protocol/mode of choice.
|
||||
The `chord` argument contains the packet of the current chord as specified by the protocol in use. This is *NOT* simply a list of chorded steno keys of the form `[ST_E, ST_U, ST_BR, ST_GR]`. Refer to the appropriate protocol section of this document to learn more about the format of the packets in your steno protocol/mode of choice.
|
||||
|
||||
The `n_pressed_keys` argument is the number of physical keys actually being held down.
|
||||
This is not always equal to the number of bits set to 1 (aka the [Hamming weight](https://en.wikipedia.org/wiki/Hamming_weight)) in `chord` because it is possible to simultaneously press down four keys, then release three of those four keys and then press yet another key while the fourth finger is still holding down its key.
|
||||
@@ -180,67 +187,82 @@ At the end of this scenario given as an example, `chord` would have five bits se
|
||||
|
||||
## Keycode Reference {#keycode-reference}
|
||||
|
||||
### Mode {#keycode-reference-mode}
|
||||
|
||||
When more than one protocol is enabled, the following keycodes are available:
|
||||
|
||||
| Key | Aliases | Description |
|
||||
|---------------------------|---------|---------------------------------------------------------------------------|
|
||||
|`QK_STENO_MODE_BOLT` |`ST_BOLT`| Set mode to `STENO_MODE_BOLT` (when multiple protocols are enabled) |
|
||||
|`QK_STENO_MODE_GEMINI` |`ST_GEMI`| Set mode to `STENO_MODE_GEMINI` (when multiple protocols are enabled) |
|
||||
|`QK_STENO_MODE_NEXT` |`ST_NEXT`| Cycle through modes (when multiple protocols are enabled) |
|
||||
|`QK_STENO_MODE_PREVIOUS` |`ST_PREV`| Cycle through modes in reverse (when multiple protocols are enabled) |
|
||||
|
||||
### General {#keycode-reference-general}
|
||||
|
||||
::: info
|
||||
TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both.
|
||||
:::
|
||||
|
||||
|GeminiPR|TX Bolt|Steno Key|
|
||||
|--------|-------|-----------|
|
||||
|`STN_N1`|`STN_NUM`|Number bar #1|
|
||||
|`STN_N2`|`STN_NUM`|Number bar #2|
|
||||
|`STN_N3`|`STN_NUM`|Number bar #3|
|
||||
|`STN_N4`|`STN_NUM`|Number bar #4|
|
||||
|`STN_N5`|`STN_NUM`|Number bar #5|
|
||||
|`STN_N6`|`STN_NUM`|Number bar #6|
|
||||
|`STN_N7`|`STN_NUM`|Number bar #7|
|
||||
|`STN_N8`|`STN_NUM`|Number bar #8|
|
||||
|`STN_N9`|`STN_NUM`|Number bar #9|
|
||||
|`STN_NA`|`STN_NUM`|Number bar #A|
|
||||
|`STN_NB`|`STN_NUM`|Number bar #B|
|
||||
|`STN_NC`|`STN_NUM`|Number bar #C|
|
||||
|`STN_S1`|`STN_SL`| `S-` upper|
|
||||
|`STN_S2`|`STN_SL`| `S-` lower|
|
||||
|`STN_TL`|`STN_TL`| `T-`|
|
||||
|`STN_KL`|`STN_KL`| `K-`|
|
||||
|`STN_PL`|`STN_PL`| `P-`|
|
||||
|`STN_WL`|`STN_WL`| `W-`|
|
||||
|`STN_HL`|`STN_HL`| `H-`|
|
||||
|`STN_RL`|`STN_RL`| `R-`|
|
||||
|`STN_A`|`STN_A`| `A` vowel|
|
||||
|`STN_O`|`STN_O`| `O` vowel|
|
||||
|`STN_ST1`|`STN_STR`| `*` upper-left |
|
||||
|`STN_ST2`|`STN_STR`| `*` lower-left|
|
||||
|`STN_ST3`|`STN_STR`| `*` upper-right|
|
||||
|`STN_ST4`|`STN_STR`| `*` lower-right|
|
||||
|`STN_E`|`STN_E`| `E` vowel|
|
||||
|`STN_U`|`STN_U`| `U` vowel|
|
||||
|`STN_FR`|`STN_FR`| `-F`|
|
||||
|`STN_RR`|`STN_RR`| `-R`|
|
||||
|`STN_PR`|`STN_PR`| `-P`|
|
||||
|`STN_BR`|`STN_BR`| `-B`|
|
||||
|`STN_LR`|`STN_LR`| `-L`|
|
||||
|`STN_GR`|`STN_GR`| `-G`|
|
||||
|`STN_TR`|`STN_TR`| `-T`|
|
||||
|`STN_SR`|`STN_SR`| `-S`|
|
||||
|`STN_DR`|`STN_DR`| `-D`|
|
||||
|`STN_ZR`|`STN_ZR`| `-Z`|
|
||||
|`STN_FN`|| (Function)|
|
||||
|`STN_RES1`||(Reset 1)|
|
||||
|`STN_RES2`||(Reset 2)|
|
||||
|`STN_PWR`||(Power)|
|
||||
| Key | GeminiPR | TX Bolt | Description |
|
||||
|---------------------|-----------|----------|-----------------|
|
||||
| `QK_STENO_N1` | `ST_N1` | `ST_NUM` | Number bar #1 |
|
||||
| `QK_STENO_N2` | `ST_N2` | `ST_NUM` | Number bar #2 |
|
||||
| `QK_STENO_N3` | `ST_N3` | `ST_NUM` | Number bar #3 |
|
||||
| `QK_STENO_N4` | `ST_N4` | `ST_NUM` | Number bar #4 |
|
||||
| `QK_STENO_N5` | `ST_N5` | `ST_NUM` | Number bar #5 |
|
||||
| `QK_STENO_N6` | `ST_N6` | `ST_NUM` | Number bar #6 |
|
||||
| `QK_STENO_N7` | `ST_N7` | `ST_NUM` | Number bar #7 |
|
||||
| `QK_STENO_N8` | `ST_N8` | `ST_NUM` | Number bar #8 |
|
||||
| `QK_STENO_N9` | `ST_N9` | `ST_NUM` | Number bar #9 |
|
||||
| `QK_STENO_NA` | `ST_NA` | `ST_NUM` | Number bar #A |
|
||||
| `QK_STENO_NB` | `ST_NB` | `ST_NUM` | Number bar #B |
|
||||
| `QK_STENO_NC` | `ST_NC` | `ST_NUM` | Number bar #C |
|
||||
| `QK_STENO_S1` | `ST_S1` | `ST_SL` | `S-` upper |
|
||||
| `QK_STENO_S2` | `ST_S2` | `ST_SL` | `S-` lower |
|
||||
| `QK_STENO_TL` | `ST_TL` | `ST_TL` | `T-` |
|
||||
| `QK_STENO_KL` | `ST_KL` | `ST_KL` | `K-` |
|
||||
| `QK_STENO_PL` | `ST_PL` | `ST_PL` | `P-` |
|
||||
| `QK_STENO_WL` | `ST_WL` | `ST_WL` | `W-` |
|
||||
| `QK_STENO_HL` | `ST_HL` | `ST_HL` | `H-` |
|
||||
| `QK_STENO_RL` | `ST_RL` | `ST_RL` | `R-` |
|
||||
| `QK_STENO_A` | `ST_A` | `ST_A` | `A` vowel |
|
||||
| `QK_STENO_O` | `ST_O` | `ST_O` | `O` vowel |
|
||||
| `QK_STENO_ST1` | `ST_ST1` | `ST_STR` | `*` upper-left |
|
||||
| `QK_STENO_ST2` | `ST_ST2` | `ST_STR` | `*` lower-left |
|
||||
| `QK_STENO_ST3` | `ST_ST3` | `ST_STR` | `*` upper-right |
|
||||
| `QK_STENO_ST4` | `ST_ST4` | `ST_STR` | `*` lower-right |
|
||||
| `QK_STENO_E` | `ST_E` | `ST_E` | `E` vowel |
|
||||
| `QK_STENO_U` | `ST_U` | `ST_U` | `U` vowel |
|
||||
| `QK_STENO_FR` | `ST_FR` | `ST_FR` | `-F` |
|
||||
| `QK_STENO_RR` | `ST_RR` | `ST_RR` | `-R` |
|
||||
| `QK_STENO_PR` | `ST_PR` | `ST_PR` | `-P` |
|
||||
| `QK_STENO_BR` | `ST_BR` | `ST_BR` | `-B` |
|
||||
| `QK_STENO_LR` | `ST_LR` | `ST_LR` | `-L` |
|
||||
| `QK_STENO_GR` | `ST_GR` | `ST_GR` | `-G` |
|
||||
| `QK_STENO_TR` | `ST_TR` | `ST_TR` | `-T` |
|
||||
| `QK_STENO_SR` | `ST_SR` | `ST_SR` | `-S` |
|
||||
| `QK_STENO_DR` | `ST_DR` | `ST_DR` | `-D` |
|
||||
| `QK_STENO_ZR` | `ST_ZR` | `ST_ZR` | `-Z` |
|
||||
| `QK_STENO_FUNCTION` | `ST_FN` | | (Function) |
|
||||
| `QK_STENO_RESET1` | `ST_RES1` | | (Reset 1) |
|
||||
| `QK_STENO_RESET2` | `ST_RES2` | | (Reset 2) |
|
||||
| `QK_STENO_POWER` | `ST_PWR` | | (Power) |
|
||||
|
||||
### Combined Map {#keycode-reference-combinedmap}
|
||||
|
||||
If you do not want to hit two keys with one finger combined keycodes can be used. These cause both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file.
|
||||
|
||||
|Combined key | Key1 | Key 2 |
|
||||
|---------------|--------|----------|
|
||||
|STN_S3 | STN_S1 | STN_S2 |
|
||||
|STN_TKL | STN_TL | STN_KL |
|
||||
|STN_PWL | STN_PL | STN_WL |
|
||||
|STN_HRL | STN_HL | STN_RL |
|
||||
|STN_FRR | STN_FR | STN_RR |
|
||||
|STN_PBR | STN_PR | STN_BR |
|
||||
|STN_LGR | STN_LR | STN_GR |
|
||||
|STN_TSR | STN_TR | STN_SR |
|
||||
|STN_DZR | STN_DR | STN_ZR |
|
||||
|STN_AO | STN_A | STN_O |
|
||||
|STN_EU | STN_E | STN_U |
|
||||
| Combined key | Aliases | Key 1 | Key 2 |
|
||||
|----------------|----------|---------|---------|
|
||||
| `QK_STENO_S3` | `ST_S3` | `ST_S1` | `ST_S2` |
|
||||
| `QK_STENO_TKL` | `ST_TKL` | `ST_TL` | `ST_KL` |
|
||||
| `QK_STENO_PWL` | `ST_PWL` | `ST_PL` | `ST_WL` |
|
||||
| `QK_STENO_HRL` | `ST_HRL` | `ST_HL` | `ST_RL` |
|
||||
| `QK_STENO_FRR` | `ST_FRR` | `ST_FR` | `ST_RR` |
|
||||
| `QK_STENO_PBR` | `ST_PBR` | `ST_PR` | `ST_BR` |
|
||||
| `QK_STENO_LGR` | `ST_LGR` | `ST_LR` | `ST_GR` |
|
||||
| `QK_STENO_TSR` | `ST_TSR` | `ST_TR` | `ST_SR` |
|
||||
| `QK_STENO_DZR` | `ST_DZR` | `ST_DR` | `ST_ZR` |
|
||||
| `QK_STENO_AO` | `ST_AO` | `ST_A` | `ST_O` |
|
||||
| `QK_STENO_EU` | `ST_EU` | `ST_E` | `ST_U` |
|
||||
|
||||
@@ -728,6 +728,96 @@ See also: [Mod-Tap](mod_tap)
|
||||
|`MEH_T(kc)` | |Left Control, Left Shift and Left Alt when held, `kc` when tapped |
|
||||
|`HYPR_T(kc)` | |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped|
|
||||
|
||||
## Stenography {#stenography}
|
||||
|
||||
See also: [Stenography](features/stenography)
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|------------------------|-------------------|---------------------------------------------------------------------|
|
||||
|`QK_STENO_FUNCTION` |`ST_FN` |(Function) |
|
||||
|`QK_STENO_N1` |`ST_N1`, `ST_NUM` |Number bar #1 |
|
||||
|`QK_STENO_N2` |`ST_N2` |Number bar #2 |
|
||||
|`QK_STENO_N3` |`ST_N3` |Number bar #3 |
|
||||
|`QK_STENO_N4` |`ST_N4` |Number bar #4 |
|
||||
|`QK_STENO_N5` |`ST_N5` |Number bar #5 |
|
||||
|`QK_STENO_N6` |`ST_N6` |Number bar #6 |
|
||||
|`QK_STENO_S1` |`ST_S1`, `ST_SL` |`S-` upper |
|
||||
|`QK_STENO_S2` |`ST_S2` |`S-` lower |
|
||||
|`QK_STENO_TL` |`ST_TL` |`T-` |
|
||||
|`QK_STENO_KL` |`ST_KL` |`K-` |
|
||||
|`QK_STENO_PL` |`ST_PL` |`P-` |
|
||||
|`QK_STENO_WL` |`ST_WL` |`W-` |
|
||||
|`QK_STENO_HL` |`ST_HL` |`H-` |
|
||||
|`QK_STENO_RL` |`ST_RL` |`R-` |
|
||||
|`QK_STENO_A` |`ST_A` |`A` vowel |
|
||||
|`QK_STENO_O` |`ST_O` |`O` vowel |
|
||||
|`QK_STENO_ST1` |`ST_ST1`, `ST_STR` |`*` upper-left |
|
||||
|`QK_STENO_ST2` |`ST_ST2` |`*` lower-left |
|
||||
|`QK_STENO_RESET1` |`ST_RE1`, `ST_RES1`|(Reset 1) |
|
||||
|`QK_STENO_RESET2` |`ST_RE2`, `ST_RES2`|(Reset 2) |
|
||||
|`QK_STENO_POWER` |`ST_PWR` |(Power) |
|
||||
|`QK_STENO_ST3` |`ST_ST3` |`*` upper-right |
|
||||
|`QK_STENO_ST4` |`ST_ST4` |`*` lower-right |
|
||||
|`QK_STENO_E` |`ST_E` |`E` vowel |
|
||||
|`QK_STENO_U` |`ST_U` |`U` vowel |
|
||||
|`QK_STENO_FR` |`ST_FR` |`-F` |
|
||||
|`QK_STENO_RR` |`ST_RR` |`-R` |
|
||||
|`QK_STENO_PR` |`ST_PR` |`-P` |
|
||||
|`QK_STENO_BR` |`ST_BR` |`-B` |
|
||||
|`QK_STENO_LR` |`ST_LR` |`-L` |
|
||||
|`QK_STENO_GR` |`ST_GR` |`-G` |
|
||||
|`QK_STENO_TR` |`ST_TR` |`-T` |
|
||||
|`QK_STENO_SR` |`ST_SR` |`-S` |
|
||||
|`QK_STENO_DR` |`ST_DR` |`-D` |
|
||||
|`QK_STENO_N7` |`ST_N7` |Number bar #7 |
|
||||
|`QK_STENO_N8` |`ST_N8` |Number bar #8 |
|
||||
|`QK_STENO_N9` |`ST_N9` |Number bar #9 |
|
||||
|`QK_STENO_NA` |`ST_NA` |Number bar #A |
|
||||
|`QK_STENO_NB` |`ST_NB` |Number bar #B |
|
||||
|`QK_STENO_NC` |`ST_NC` |Number bar #C |
|
||||
|`QK_STENO_ZR` |`ST_ZR` |`-Z` |
|
||||
|`QK_STENO_X1` |`ST_X1` |Extra button 1 (Protocol specific) |
|
||||
|`QK_STENO_X2` |`ST_X2` |Extra button 2 (Protocol specific) |
|
||||
|`QK_STENO_X3` |`ST_X3` |Extra button 3 (Protocol specific) |
|
||||
|`QK_STENO_X4` |`ST_X4` |Extra button 4 (Protocol specific) |
|
||||
|`QK_STENO_X5` |`ST_X5` |Extra button 5 (Protocol specific) |
|
||||
|`QK_STENO_X6` |`ST_X6` |Extra button 6 (Protocol specific) |
|
||||
|`QK_STENO_X7` |`ST_X7` |Extra button 7 (Protocol specific) |
|
||||
|`QK_STENO_X8` |`ST_X8` |Extra button 8 (Protocol specific) |
|
||||
|`QK_STENO_X9` |`ST_X9` |Extra button 9 (Protocol specific) |
|
||||
|`QK_STENO_X10` |`ST_X10` |Extra button 10 (Protocol specific) |
|
||||
|`QK_STENO_X11` |`ST_X11` |Extra button 11 (Protocol specific) |
|
||||
|`QK_STENO_X12` |`ST_X12` |Extra button 12 (Protocol specific) |
|
||||
|`QK_STENO_X13` |`ST_X13` |Extra button 13 (Protocol specific) |
|
||||
|`QK_STENO_X14` |`ST_X14` |Extra button 14 (Protocol specific) |
|
||||
|`QK_STENO_X15` |`ST_X15` |Extra button 15 (Protocol specific) |
|
||||
|`QK_STENO_X16` |`ST_X16` |Extra button 16 (Protocol specific) |
|
||||
|`QK_STENO_X17` |`ST_X17` |Extra button 17 (Protocol specific) |
|
||||
|`QK_STENO_X18` |`ST_X18` |Extra button 18 (Protocol specific) |
|
||||
|`QK_STENO_X19` |`ST_X19` |Extra button 19 (Protocol specific) |
|
||||
|`QK_STENO_X20` |`ST_X20` |Extra button 20 (Protocol specific) |
|
||||
|`QK_STENO_X21` |`ST_X21` |Extra button 21 (Protocol specific) |
|
||||
|`QK_STENO_X22` |`ST_X22` |Extra button 22 (Protocol specific) |
|
||||
|`QK_STENO_X23` |`ST_X23` |Extra button 23 (Protocol specific) |
|
||||
|`QK_STENO_X24` |`ST_X24` |Extra button 24 (Protocol specific) |
|
||||
|`QK_STENO_X25` |`ST_X25` |Extra button 25 (Protocol specific) |
|
||||
|`QK_STENO_X26` |`ST_X26` |Extra button 26 (Protocol specific) |
|
||||
|`QK_STENO_S3` |`ST_S3` |Trigger `ST_S1` and `ST_S2` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_TKL` |`ST_TKL` |Trigger `ST_TL` and `ST_KL` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_PWL` |`ST_PWL` |Trigger `ST_PL` and `ST_WL` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_HRL` |`ST_HRL` |Trigger `ST_HL` and `ST_RL` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_FRR` |`ST_FRR` |Trigger `ST_FR` and `ST_RR` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_PBR` |`ST_PBR` |Trigger `ST_PR` and `ST_BR` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_LGR` |`ST_LGR` |Trigger `ST_LR` and `ST_GR` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_TSR` |`ST_TSR` |Trigger `ST_TR` and `ST_SR` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_DZR` |`ST_DZR` |Trigger `ST_DR` and `ST_ZR` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_AO` |`ST_AO` |Trigger `ST_A` and `ST_O` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_EU` |`ST_EU` |Trigger `ST_E` and `ST_U` (when *Combined Map* is enabled) |
|
||||
|`QK_STENO_MODE_BOLT` |`ST_BOLT` |Set mode to `STENO_MODE_BOLT` (when multiple protocols are enabled) |
|
||||
|`QK_STENO_MODE_GEMINI` |`ST_GEMI` |Set mode to `STENO_MODE_GEMINI` (when multiple protocols are enabled)|
|
||||
|`QK_STENO_MODE_NEXT` |`ST_NEXT` |Cycle through modes (when multiple protocols are enabled) |
|
||||
|`QK_STENO_MODE_PREVIOUS`|`ST_PREV` |Cycle through modes in reverse (when multiple protocols are enabled) |
|
||||
|
||||
## Tapping Term Keys {#tapping-term-keys}
|
||||
|
||||
See also: [Dynamic Tapping Term](tap_hold#dynamic-tapping-term)
|
||||
|
||||
@@ -866,6 +866,13 @@ Configures the [Stenography](features/stenography) feature.
|
||||
* `enabled` <Badge type="info">Boolean</Badge>
|
||||
* Enable the Stenography feature.
|
||||
* Default: `false`
|
||||
* `combined_map` <Badge type="info">Boolean</Badge>
|
||||
* Enable the Stenography Combined Map sub-feature.
|
||||
* Default: `false`
|
||||
* `default`
|
||||
* `mode` <Badge type="info">String</Badge>
|
||||
* The default mode. Must be one of `geminipr`, `txbolt`.
|
||||
* Default: `"geminipr"` when available, otherwise `"txbolt"`
|
||||
* `protocol` <Badge type="info">String</Badge>
|
||||
* The Steno protocol to use. Must be one of `all`, `geminipr`, `txbolt`.
|
||||
* Default: `"all"`
|
||||
|
||||
Reference in New Issue
Block a user