/**
 * @ingroup hangulic
 * @brief @ref HangulInputContext 오브젝트를 생성한다.
 * @param keyboard 사용하고자 하는 키보드, 사용 가능한 값에 대해서는
 *	hangul_ic_select_keyboard() 함수 설명을 참조한다.
 * @return 새로 생성된 @ref HangulInputContext에 대한 포인터
 * 
 * 이 함수는 한글 조합 기능을 제공하는 @ref HangulInputContext 오브젝트를 
 * 생성한다. 생성할때 지정한 자판은 나중에 hangul_ic_select_keyboard() 함수로
 * 다른 자판으로 변경이 가능하다.
 * 더이상 사용하지 않을 때에는 hangul_ic_delete() 함수로 삭제해야 한다.
 */
HangulInputContext*
hangul_ic_new(const char* keyboard)
{
    HangulInputContext *hic;

    hic = malloc(sizeof(HangulInputContext));
    if (hic == NULL)
	return NULL;

    hic->preedit_string[0] = 0;
    hic->commit_string[0] = 0;
    hic->flushed_string[0] = 0;

    hic->on_translate      = NULL;
    hic->on_translate_data = NULL;

    hic->on_transition      = NULL;
    hic->on_transition_data = NULL;

    hic->use_jamo_mode_only = FALSE;

    hangul_ic_set_output_mode(hic, HANGUL_OUTPUT_SYLLABLE);
    hangul_ic_select_keyboard(hic, keyboard);

    hangul_buffer_clear(&hic->buffer);

    return hic;
}
Beispiel #2
0
static void
ibus_config_value_changed (IBusConfig   *config,
                           const gchar  *section,
                           const gchar  *name,
                           GVariant     *value,
                           gpointer      user_data)
{
    IBusHangulEngine *hangul = (IBusHangulEngine *) user_data;

    if (strcmp(section, "engine/Hangul") == 0) {
        if (strcmp(name, "HangulKeyboard") == 0) {
            const gchar *str = g_variant_get_string(value, NULL);
            g_string_assign (hangul_keyboard, str);
            hangul_ic_select_keyboard (hangul->context, hangul_keyboard->str);
        } else if (strcmp(name, "HanjaKeys") == 0) {
            const gchar* str = g_variant_get_string(value, NULL);
	    hanja_key_list_set_from_string(&hanja_keys, str);
        } else if (strcmp(name, "WordCommit") == 0) {
            word_commit = g_variant_get_boolean (value);
        } else if (strcmp (name, "AutoReorder") == 0) {
            auto_reorder = g_variant_get_boolean (value);
        }
    } else if (strcmp(section, "panel") == 0) {
        if (strcmp(name, "lookup_table_orientation") == 0) {
            lookup_table_orientation = g_variant_get_int32(value);
        }
    }
}
Beispiel #3
0
void
HangulInstance::change_keyboard_layout(const String &layout)
{
    String label;
    if (layout == "2") {
	label = keyboard_layout_2.get_label();
    } else if (layout == "32") {
	label = keyboard_layout_32.get_label();
    } else if (layout == "3f") {
	label = keyboard_layout_3f.get_label();
    } else if (layout == "39") {
	label = keyboard_layout_39.get_label();
    } else if (layout == "3s") {
	label = keyboard_layout_3s.get_label();
    } else if (layout == "3y") {
	label = keyboard_layout_3y.get_label();
    }

    m_factory->m_keyboard_layout = layout;
    keyboard_layout.set_label(label);
    hangul_ic_select_keyboard(m_hic, m_factory->m_keyboard_layout.c_str());

    update_property(keyboard_layout);

    m_factory->m_config->write(String(SCIM_CONFIG_LAYOUT), layout);
}
Beispiel #4
0
/* ic option을 바꾸면서 테스트하는걸 손쉽게 하기 위해서
 * static ic를 하나 두고 이것으로 테스트를 진행하게 코드를
 * 바꾼다. */
static HangulInputContext*
get_ic(const char* keyboard)
{
    if (global_ic == NULL) {
	global_ic = hangul_ic_new("2");
    }

    hangul_ic_select_keyboard(global_ic, keyboard);
    hangul_ic_reset(global_ic);

    return global_ic;
}
Beispiel #5
0
static void
on_changed_method (GSettings     *settings,
                   gchar         *key,
                   NimfLibhangul *hangul)
{
  g_debug (G_STRLOC ": %s", G_STRFUNC);

  g_free (hangul->method);
  hangul->method = g_settings_get_string (settings, key);
  hangul_ic_select_keyboard (hangul->context, hangul->method);
  nimf_libhangul_update_transition_cb (hangul);
}
void
HangulInstance::focus_in ()
{
    SCIM_DEBUG_IMENGINE(2) << "focus_in.\n";

    register_all_properties();

    hangul_ic_select_keyboard(m_hic, m_factory->m_keyboard_layout.c_str());

    if (m_lookup_table.number_of_candidates ()) {
        update_lookup_table (m_lookup_table);
        show_lookup_table ();
    } else {
        hide_lookup_table ();
    }

    hangul_update_aux_string ();
}