aboutsummaryrefslogtreecommitdiff
path: root/quantum/process_keycode/process_unicode.h
diff options
context:
space:
mode:
authorGergely Nagy <algernon@madhouse-project.org>2016-08-13 10:46:38 +0200
committerGergely Nagy <algernon@madhouse-project.org>2016-08-15 10:08:53 +0200
commitfa06a163607e8c6c4bd0968c2de96a9a298b777c (patch)
tree47ddc21952c9319163bb74d4d89ac72d5c56a0fe /quantum/process_keycode/process_unicode.h
parent63e5782d2cdf0ee282ad434c773463d9da9db6b3 (diff)
downloadqmk_firmware-fa06a163607e8c6c4bd0968c2de96a9a298b777c.tar.gz
qmk_firmware-fa06a163607e8c6c4bd0968c2de96a9a298b777c.zip
process_unicode: Add a way to enter unicode symbols by name
The purpose of this change is to allow keymaps to specify a dictionary of unicode symbol name to code mappings, and let the person at the keyboard enter unicode symbols by name. This is done by having a way to trigger unicode symbol input mode, when all keys are cached until Esc, Enter or Space are pressed. Once that happens, we try to look up the symbol from our lookup table. If found, we erase back, and type the unicode magic in to get that symbol. If not found, we still erase back, start unicode input mode, and replay what the user typed in. Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Diffstat (limited to 'quantum/process_keycode/process_unicode.h')
-rw-r--r--quantum/process_keycode/process_unicode.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/quantum/process_keycode/process_unicode.h b/quantum/process_keycode/process_unicode.h
index f719a1226..372ea2f0d 100644
--- a/quantum/process_keycode/process_unicode.h
+++ b/quantum/process_keycode/process_unicode.h
@@ -15,6 +15,33 @@ void register_hex(uint16_t hex);
15 15
16bool process_unicode(uint16_t keycode, keyrecord_t *record); 16bool process_unicode(uint16_t keycode, keyrecord_t *record);
17 17
18#ifdef UCIS_ENABLE
19#ifndef UCIS_MAX_SYMBOL_LENGTH
20#define UCIS_MAX_SYMBOL_LENGTH 32
21#endif
22
23typedef struct {
24 char *symbol;
25 uint16_t codes[4];
26} qk_ucis_symbol_t;
27
28struct {
29 uint8_t count;
30 uint16_t codes[UCIS_MAX_SYMBOL_LENGTH];
31 bool in_progress:1;
32} qk_ucis_state;
33
34#define UCIS_TABLE(...) {__VA_ARGS__, {NULL, {}}}
35#define UCIS_SYM(name, ...) {name, {__VA_ARGS__, 0}}
36
37extern const qk_ucis_symbol_t ucis_symbol_table[];
38
39void qk_ucis_start(void);
40void qk_ucis_symbol_fallback (void);
41bool process_record_ucis (uint16_t keycode, keyrecord_t *record);
42
43#endif
44
18#define UC_BSPC UC(0x0008) 45#define UC_BSPC UC(0x0008)
19 46
20#define UC_SPC UC(0x0020) 47#define UC_SPC UC(0x0020)
@@ -122,4 +149,4 @@ bool process_unicode(uint16_t keycode, keyrecord_t *record);
122#define UC_TILD UC(0x007E) 149#define UC_TILD UC(0x007E)
123#define UC_DEL UC(0x007F) 150#define UC_DEL UC(0x007F)
124 151
125#endif \ No newline at end of file 152#endif