summaryrefslogtreecommitdiff
path: root/hangul
diff options
context:
space:
mode:
Diffstat (limited to 'hangul')
-rw-r--r--hangul/hangul.h2
-rw-r--r--hangul/hangulinputcontext.c11
-rw-r--r--hangul/hangulinternals.h2
-rw-r--r--hangul/hangulkeyboard.c9
4 files changed, 16 insertions, 8 deletions
diff --git a/hangul/hangul.h b/hangul/hangul.h
index 36156db..dbb0212 100644
--- a/hangul/hangul.h
+++ b/hangul/hangul.h
@@ -96,7 +96,7 @@ enum {
};
/* library */
-int hangul_init();
+int hangul_init(const char* user_defined_keyboard_path);
int hangul_fini();
/* keyboard */
diff --git a/hangul/hangulinputcontext.c b/hangul/hangulinputcontext.c
index cd54945..ba85be4 100644
--- a/hangul/hangulinputcontext.c
+++ b/hangul/hangulinputcontext.c
@@ -1587,21 +1587,24 @@ hangul_ic_is_transliteration(HangulInputContext *hic)
/**
* @ingroup hangulic
- * @breif libhangul을 초기화 하는 함수.
+ * @brief libhangul을 초기화 하는 함수.
+ * @param user_defined_keyboard_path 한글 키보드 파일을 읽을 디렉토리 패스.
+ * PATH 환경 변수와 같이 :으로 구분하여 여러개를 지정할 수 있다.
+ * NULL을 주면 내장 기본값을 사용한다.
*
* libhangul의 함수를 사용하기 전에 호출해야 한다.
*/
int
-hangul_init()
+hangul_init(const char* user_defined_keyboard_path)
{
int res;
- res = hangul_keyboard_list_init();
+ res = hangul_keyboard_list_init(user_defined_keyboard_path);
return res;
}
/**
* @ingroup hangulic
- * @breif libhangul에서 사용한 리소스를 해제하는 함수.
+ * @brief libhangul에서 사용한 리소스를 해제하는 함수.
*
* libhangul의 함수의 사용이 끝나면 호출해야 한다.
*/
diff --git a/hangul/hangulinternals.h b/hangul/hangulinternals.h
index 8fb0d70..6d8d075 100644
--- a/hangul/hangulinternals.h
+++ b/hangul/hangulinternals.h
@@ -35,7 +35,7 @@ ucschar hangul_keyboard_combine(const HangulKeyboard* keyboard,
ucschar hangul_keyboard_get_mapping(const HangulKeyboard* keyboard,
int tableid, unsigned key);
-int hangul_keyboard_list_init();
+int hangul_keyboard_list_init(const char* user_defined_keyboard_path);
int hangul_keyboard_list_fini();
const HangulKeyboard* hangul_keyboard_list_get_keyboard(const char* id);
diff --git a/hangul/hangulkeyboard.c b/hangul/hangulkeyboard.c
index 11354d8..8ba62a7 100644
--- a/hangul/hangulkeyboard.c
+++ b/hangul/hangulkeyboard.c
@@ -888,7 +888,7 @@ hangul_keyboard_get_keyboard_path()
}
int
-hangul_keyboard_list_init()
+hangul_keyboard_list_init(const char* user_defined_keyboard_path)
{
#if ENABLE_EXTERNAL_KEYBOARDS
/* 이 함수를 중복 호출할 경우에 대한 처리
@@ -903,7 +903,12 @@ hangul_keyboard_list_init()
hangul_builtin_keyboard_count = 0;
/* libhangul data dir에서 keyboard 로딩 */
- char* libhangul_keyboard_path = hangul_keyboard_get_keyboard_path();
+ char* libhangul_keyboard_path = NULL;
+ if (user_defined_keyboard_path == NULL) {
+ libhangul_keyboard_path = hangul_keyboard_get_keyboard_path();
+ } else {
+ libhangul_keyboard_path = strdup(user_defined_keyboard_path);
+ }
unsigned n = 0;