diff options
Diffstat (limited to 'hangul/hangulinputcontext.c')
-rw-r--r-- | hangul/hangulinputcontext.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/hangul/hangulinputcontext.c b/hangul/hangulinputcontext.c index cd54945..a08ec8a 100644 --- a/hangul/hangulinputcontext.c +++ b/hangul/hangulinputcontext.c @@ -197,6 +197,7 @@ struct _HangulInputContext { int type; const HangulKeyboard* keyboard; + int keyboard_table_id; HangulBuffer buffer; int output_mode; @@ -1079,7 +1080,7 @@ hangul_ic_process(HangulInputContext *hic, int ascii) hic->preedit_string[0] = 0; hic->commit_string[0] = 0; - c = hangul_keyboard_get_mapping(hic->keyboard, 0, ascii); + c = hangul_keyboard_get_mapping(hic->keyboard, hic->keyboard_table_id, ascii); if (hic->on_translate != NULL) hic->on_translate(hic, ascii, &c, hic->on_translate_data); @@ -1464,6 +1465,16 @@ hangul_ic_select_keyboard(HangulInputContext *hic, const char* id) keyboard = hangul_keyboard_list_get_keyboard(id); hic->keyboard = keyboard; + hic->keyboard_table_id = 0; +} + +void +hangul_ic_switch_keyboard_table(HangulInputContext *hic, int table_id) +{ + if (hic == NULL) + return; + + hic->keyboard_table_id = table_id; } void @@ -1493,6 +1504,9 @@ hangul_ic_new(const char* keyboard) if (hic == NULL) return NULL; + hic->keyboard = NULL; + hic->keyboard_table_id = 0; + hic->preedit_string[0] = 0; hic->commit_string[0] = 0; hic->flushed_string[0] = 0; |