Esempio n. 1
0
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();
}
Esempio n. 2
0
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;
}