diff options
Diffstat (limited to 'quantum/process_keycode/process_ucis.c')
-rw-r--r-- | quantum/process_keycode/process_ucis.c | 79 |
1 files changed, 39 insertions, 40 deletions
diff --git a/quantum/process_keycode/process_ucis.c b/quantum/process_keycode/process_ucis.c index 2541d6eb2..12b0aba9b 100644 --- a/quantum/process_keycode/process_ucis.c +++ b/quantum/process_keycode/process_ucis.c | |||
@@ -72,8 +72,7 @@ bool process_ucis(uint16_t keycode, keyrecord_t *record) { | |||
72 | return true; | 72 | return true; |
73 | } | 73 | } |
74 | 74 | ||
75 | bool special = keycode == KC_SPC || keycode == KC_ENT || | 75 | bool special = keycode == KC_SPC || keycode == KC_ENT || keycode == KC_ESC || keycode == KC_BSPC; |
76 | keycode == KC_ESC || keycode == KC_BSPC; | ||
77 | if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH && !special) { | 76 | if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH && !special) { |
78 | return false; | 77 | return false; |
79 | } | 78 | } |
@@ -82,49 +81,49 @@ bool process_ucis(uint16_t keycode, keyrecord_t *record) { | |||
82 | qk_ucis_state.count++; | 81 | qk_ucis_state.count++; |
83 | 82 | ||
84 | switch (keycode) { | 83 | switch (keycode) { |
85 | case KC_BSPC: | 84 | case KC_BSPC: |
86 | if (qk_ucis_state.count >= 2) { | 85 | if (qk_ucis_state.count >= 2) { |
87 | qk_ucis_state.count -= 2; | 86 | qk_ucis_state.count -= 2; |
88 | return true; | 87 | return true; |
89 | } else { | 88 | } else { |
90 | qk_ucis_state.count--; | 89 | qk_ucis_state.count--; |
91 | return false; | 90 | return false; |
92 | } | 91 | } |
93 | 92 | ||
94 | case KC_SPC: | 93 | case KC_SPC: |
95 | case KC_ENT: | 94 | case KC_ENT: |
96 | case KC_ESC: | 95 | case KC_ESC: |
97 | for (uint8_t i = 0; i < qk_ucis_state.count; i++) { | 96 | for (uint8_t i = 0; i < qk_ucis_state.count; i++) { |
98 | register_code(KC_BSPC); | 97 | register_code(KC_BSPC); |
99 | unregister_code(KC_BSPC); | 98 | unregister_code(KC_BSPC); |
100 | wait_ms(UNICODE_TYPE_DELAY); | 99 | wait_ms(UNICODE_TYPE_DELAY); |
101 | } | 100 | } |
102 | 101 | ||
103 | if (keycode == KC_ESC) { | 102 | if (keycode == KC_ESC) { |
104 | qk_ucis_state.in_progress = false; | 103 | qk_ucis_state.in_progress = false; |
105 | qk_ucis_cancel(); | 104 | qk_ucis_cancel(); |
106 | return false; | 105 | return false; |
107 | } | 106 | } |
108 | 107 | ||
109 | uint8_t i; | 108 | uint8_t i; |
110 | bool symbol_found = false; | 109 | bool symbol_found = false; |
111 | for (i = 0; ucis_symbol_table[i].symbol; i++) { | 110 | for (i = 0; ucis_symbol_table[i].symbol; i++) { |
112 | if (is_uni_seq(ucis_symbol_table[i].symbol)) { | 111 | if (is_uni_seq(ucis_symbol_table[i].symbol)) { |
113 | symbol_found = true; | 112 | symbol_found = true; |
114 | register_ucis(ucis_symbol_table[i].code_points); | 113 | register_ucis(ucis_symbol_table[i].code_points); |
115 | break; | 114 | break; |
115 | } | ||
116 | } | ||
117 | if (symbol_found) { | ||
118 | qk_ucis_success(i); | ||
119 | } else { | ||
120 | qk_ucis_symbol_fallback(); | ||
116 | } | 121 | } |
117 | } | ||
118 | if (symbol_found) { | ||
119 | qk_ucis_success(i); | ||
120 | } else { | ||
121 | qk_ucis_symbol_fallback(); | ||
122 | } | ||
123 | 122 | ||
124 | qk_ucis_state.in_progress = false; | 123 | qk_ucis_state.in_progress = false; |
125 | return false; | 124 | return false; |
126 | 125 | ||
127 | default: | 126 | default: |
128 | return true; | 127 | return true; |
129 | } | 128 | } |
130 | } | 129 | } |