void matrix_init_quantum() { #ifdef BOOTMAGIC_LITE bootmagic_lite(); #endif if (!eeconfig_is_enabled()) { eeconfig_init(); } #ifdef BACKLIGHT_ENABLE backlight_init_ports(); #endif #ifdef AUDIO_ENABLE audio_init(); #endif #ifdef RGB_MATRIX_ENABLE rgb_matrix_init(); #endif #ifdef ENCODER_ENABLE encoder_init(); #endif #if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) unicode_input_mode_init(); #endif matrix_init_kb(); }
bool process_ucis (uint16_t keycode, keyrecord_t *record) { unicode_input_mode_init(); if (!qk_ucis_state.in_progress) return true; if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH && !(keycode == KC_BSPC || keycode == KC_ESC || keycode == KC_SPC || keycode == KC_ENT)) { return false; } if (!record->event.pressed) return true; qk_ucis_state.codes[qk_ucis_state.count] = keycode; qk_ucis_state.count++; if (keycode == KC_BSPC) { if (qk_ucis_state.count >= 2) { qk_ucis_state.count -= 2; return true; } else { qk_ucis_state.count--; return false; } } if (keycode == KC_ENT || keycode == KC_SPC || keycode == KC_ESC) { bool symbol_found = false; for (uint8_t i = qk_ucis_state.count; i > 0; i--) { register_code (KC_BSPC); unregister_code (KC_BSPC); wait_ms(UNICODE_TYPE_DELAY); } if (keycode == KC_ESC) { qk_ucis_state.in_progress = false; return false; } unicode_input_start(); for (uint8_t i = 0; ucis_symbol_table[i].symbol; i++) { if (is_uni_seq (ucis_symbol_table[i].symbol)) { symbol_found = true; register_ucis(ucis_symbol_table[i].code + 2); break; } } if (!symbol_found) { qk_ucis_symbol_fallback(); } unicode_input_finish(); if (symbol_found) { qk_ucis_success(i); } qk_ucis_state.in_progress = false; return false; } return true; }