aboutsummaryrefslogtreecommitdiff
path: root/quantum/process_keycode/process_ucis.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/process_keycode/process_ucis.c')
-rw-r--r--quantum/process_keycode/process_ucis.c79
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}