summaryrefslogtreecommitdiff
path: root/hangul/hangulinputcontext.c
diff options
context:
space:
mode:
authorChoe Hwanjin <choe.hwanjin@gmail.com>2016-02-20 20:34:57 +0900
committerChoe Hwanjin <choe.hwanjin@gmail.com>2016-02-20 20:34:57 +0900
commitd639086a61acbe0e067c45194d6d96275f953f04 (patch)
tree9e077ef3f0a0f33261babdb2d0d96180b9e39003 /hangul/hangulinputcontext.c
parent78e9d8926262db423b4cf9181e1c2cb06a120a9b (diff)
downloadlibhangul-d639086a61acbe0e067c45194d6d96275f953f04.tar.gz
MS IME 호환 기능 추가: ㄳ 입력 기능 추가
원래 이 글자들은 유니코드 초성에 없는 글자들이라서 입력 기능을 제공하지 않았지만, MS IME 호환 기능을 요구하는 경우가 많아서 libhangul 수준에서 제공하기로 결정한다. 그래서 ㄳ은 초성이 결합하여 종성이 되도록 combination table을 만든다.
Diffstat (limited to 'hangul/hangulinputcontext.c')
-rw-r--r--hangul/hangulinputcontext.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/hangul/hangulinputcontext.c b/hangul/hangulinputcontext.c
index 8621065..2728302 100644
--- a/hangul/hangulinputcontext.c
+++ b/hangul/hangulinputcontext.c
@@ -954,6 +954,16 @@ hangul_ic_process_jamo(HangulInputContext *hic, ucschar ch)
if (hangul_is_choseong(ch)) {
combined = hangul_combination_combine(hic->keyboard->combination,
hic->buffer.choseong, ch);
+ /* 초성을 입력한 combine 함수에서 종성이 나오게 된다면
+ * 이전 초성도 종성으로 바꿔 주는 편이 나머지 처리에 편리하다.
+ * 이 기능은 MS IME 호환기능으로 ㄳ을 입력하는데 사용한다. */
+ if (hangul_is_jongseong(combined)) {
+ hic->buffer.choseong = 0;
+ ucschar pop = hangul_ic_pop(hic);
+ ucschar jong = hangul_choseong_to_jongseong(pop);
+ hangul_ic_push(hic, jong);
+ }
+
if (!hangul_ic_push(hic, combined)) {
if (!hangul_ic_push(hic, ch)) {
return false;