diff options
| author | Jason Laqua <jlaqua118@gmail.com> | 2020-06-18 02:07:34 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-18 08:07:34 +0100 |
| commit | f7eb030e917a8fa360ad7cc7bb26d804cf4c5f6c (patch) | |
| tree | 8415ddb70ed9fa1cfea2651a6ef950483648d851 /quantum/process_keycode/process_ucis.h | |
| parent | aae1814319c4992471d074ed18b8b7b4842b0a66 (diff) | |
| download | qmk_firmware-f7eb030e917a8fa360ad7cc7bb26d804cf4c5f6c.tar.gz qmk_firmware-f7eb030e917a8fa360ad7cc7bb26d804cf4c5f6c.zip | |
Standardize how unicode is processed (fixes #8768) (#8770)
Co-authored-by: Konstantin Đorđević <vomindoraan@gmail.com>
Diffstat (limited to 'quantum/process_keycode/process_ucis.h')
| -rw-r--r-- | quantum/process_keycode/process_ucis.h | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/quantum/process_keycode/process_ucis.h b/quantum/process_keycode/process_ucis.h index 0f93a198b..a667430bd 100644 --- a/quantum/process_keycode/process_ucis.h +++ b/quantum/process_keycode/process_ucis.h | |||
| @@ -22,10 +22,13 @@ | |||
| 22 | #ifndef UCIS_MAX_SYMBOL_LENGTH | 22 | #ifndef UCIS_MAX_SYMBOL_LENGTH |
| 23 | # define UCIS_MAX_SYMBOL_LENGTH 32 | 23 | # define UCIS_MAX_SYMBOL_LENGTH 32 |
| 24 | #endif | 24 | #endif |
| 25 | #ifndef UCIS_MAX_CODE_POINTS | ||
| 26 | # define UCIS_MAX_CODE_POINTS 3 | ||
| 27 | #endif | ||
| 25 | 28 | ||
| 26 | typedef struct { | 29 | typedef struct { |
| 27 | char *symbol; | 30 | char * symbol; |
| 28 | char *code; | 31 | uint32_t code_points[UCIS_MAX_CODE_POINTS]; |
| 29 | } qk_ucis_symbol_t; | 32 | } qk_ucis_symbol_t; |
| 30 | 33 | ||
| 31 | typedef struct { | 34 | typedef struct { |
| @@ -36,12 +39,17 @@ typedef struct { | |||
| 36 | 39 | ||
| 37 | extern qk_ucis_state_t qk_ucis_state; | 40 | extern qk_ucis_state_t qk_ucis_state; |
| 38 | 41 | ||
| 39 | #define UCIS_TABLE(...) \ | 42 | // clang-format off |
| 40 | { \ | 43 | |
| 41 | __VA_ARGS__, { NULL, NULL } \ | 44 | #define UCIS_TABLE(...) \ |
| 45 | { \ | ||
| 46 | __VA_ARGS__, \ | ||
| 47 | { NULL, {} } \ | ||
| 42 | } | 48 | } |
| 43 | #define UCIS_SYM(name, code) \ | 49 | #define UCIS_SYM(name, ...) \ |
| 44 | { name, #code } | 50 | { name, {__VA_ARGS__} } |
| 51 | |||
| 52 | // clang-format on | ||
| 45 | 53 | ||
| 46 | extern const qk_ucis_symbol_t ucis_symbol_table[]; | 54 | extern const qk_ucis_symbol_t ucis_symbol_table[]; |
| 47 | 55 | ||
| @@ -49,5 +57,7 @@ void qk_ucis_start(void); | |||
| 49 | void qk_ucis_start_user(void); | 57 | void qk_ucis_start_user(void); |
| 50 | void qk_ucis_symbol_fallback(void); | 58 | void qk_ucis_symbol_fallback(void); |
| 51 | void qk_ucis_success(uint8_t symbol_index); | 59 | void qk_ucis_success(uint8_t symbol_index); |
| 52 | void register_ucis(const char *hex); | 60 | |
| 61 | void register_ucis(const uint32_t *code_points); | ||
| 62 | |||
| 53 | bool process_ucis(uint16_t keycode, keyrecord_t *record); | 63 | bool process_ucis(uint16_t keycode, keyrecord_t *record); |
