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 | } |
