Refactor steno and add STENO_PROTOCOL = [all|txbolt|geminipr] (#17065)

* Refactor steno into STENO_ENABLE_[ALL|GEMINI|BOLT]

* Update stenography documentation

* STENO_ENABLE_TXBOLT → STENO_ENABLE_BOLT

TXBOLT is a better name but BOLT is more consistent with the
pre-existing TX Bolt related constants, which all drop the "TX " prefix

* Comments

* STENO_ENABLE_[GEMINI|BOLT|ALL] → STENO_PROTOCOL = [geminipr|txbolt|all]

* Add note on lacking V-USB support

* Clear chord at the end of the switch(mode){send_steno_chord} block

* Return true if NOEVENT

* update_chord_xxx → add_xxx_key_to_chord

* Enable the defines for all the protocols if STENO_PROTOCOL = all

* Mention how to use `steno_set_mode`

* Set the default steno protocol to "all"

This is done so that existing keymaps invoking `steno_set_mode` don't
all suddenly break

* Add data driver equivalents for stenography feature

* Document format of serial steno packets

(Thanks dnaq)

* Add missing comma
This commit is contained in:
precondition 2022-06-23 20:43:24 +02:00 committed by GitHub
parent 2239527871
commit 7060cb7b26
Failed to generate hash of commit
9 changed files with 353 additions and 183 deletions

View file

@ -18,10 +18,22 @@
#include "quantum.h"
typedef enum { STENO_MODE_BOLT, STENO_MODE_GEMINI } steno_mode_t;
#define BOLT_STROKE_SIZE 4
#define GEMINI_STROKE_SIZE 6
bool process_steno(uint16_t keycode, keyrecord_t *record);
void steno_init(void);
void steno_set_mode(steno_mode_t mode);
uint8_t *steno_get_state(void);
uint8_t *steno_get_chord(void);
#ifdef STENO_ENABLE_GEMINI
# define MAX_STROKE_SIZE GEMINI_STROKE_SIZE
#else
# define MAX_STROKE_SIZE BOLT_STROKE_SIZE
#endif
typedef enum {
STENO_MODE_GEMINI,
STENO_MODE_BOLT,
} steno_mode_t;
bool process_steno(uint16_t keycode, keyrecord_t *record);
#ifdef STENO_ENABLE_ALL
void steno_init(void);
void steno_set_mode(steno_mode_t mode);
#endif // STENO_ENABLE_ALL