|
카테고리
태그
|
한글 관련 프로젝트를 진행하고 있어서인지 계속해서 IME에 관한 글만 쓰는것 같다. 오늘도 역시 IME 때문에 고생좀했다. 무엇보다 IME에 관련된 자료를 찾기가 무척이나 어렵다. IME가 아시아권을 위한 확장 입력기에서 유래되었기 때문인지 구글에서 조차도 관련된 글들이 부실하다. (영어사용자들은 IME 쓸일이 거의 없기 때문일테다) 한자 뿐만 아니라 우리가 특수문자라 일컫는 다양한 기호 문자들도 해당하는 그룹이 존재한다. 동그라미가 그려져 있는 숫자라든가, 그리스 문자라든가, 선을 만들 수 있는 문자라든가... 이런것들은 모두 그룹으로 묶여져 있다. 자주 입력하는 당구장 모양에 글자를 입력하기 위해서 우리는 'ㅁ' 글자를 입력하고 한자키를 눌러 기호에 대한 후보자 윈도우를 표시하고 당구장 글자에 해당하는 번호 6번을 선택하여 최종적으로 '※' 글자를 입력한다. WindowsXP 기본 내장 후보자 윈도우는 위에 그림을 보면 알겠지만 엄청나게 투박하다. 또한 한자에 대한 훈(뜻)을 알기 위해서는 해당하는 한자에 마우스 커서를 일정시간동안 위치 시켜야 하는 불편함이 있다. 나는 오늘 기본 후보자 윈도우를 커스터마이징하여 사용자정의 후보자 윈도우를 만드는 일을 했다. IME 관련 API를 이용하면 한글에 해당하는 한자 후보자 리스트를 쉽게 얻을수 있다. ImmGetConversionList () 함수를 통하여 목록을 얻을 수 있다. 그런데 뜻에 해당하는 한글 리스트를 얻는 함수는 IME API를 아무리 뒤져도 찾을 수가 없었다. 윈도우즈 내장 후보자에서는 툴팁으로 뜻을 나타내어주고 있으므로 분명히 해당 매핑 테이블이 어디엔가 존재할 것이다. 이 매핑 테이블을 어떻게 찾을 수 있을까??? 8시간 넘도록 인터넷을 뒤졌으나 같은 질문만 있지 이에 대한 해답은 찾을 수가 없었다. 해당 테이블을 직접 만들어서 사용하라는 답변이 대세였다. OfficeXP를 설치하여 IME 2002 버전으로 사용하라는 글도 있었는데, 이것은 좀더 심플한 UI를 가진 IME를 사용하라는거지 궁극적인 커스터마이징을 위한 명쾌한 답변은 아니다. 검색으론 답을 얻을 수 없음을 인지하고 결국 임포트(Import) 되는 IME 관련 모든 DLL을 분석하기로 마음먹었다. 관련 DLL 의존성을 따라가본 결과 C:\WINDOWS\ime\IMKR6_1\DICTS\hanjadic.dll 파일에 의존하고 있었다. 한자 사전이란다. 파일이름 자체에서 수상한 냄새가 물씬 풍긴다. hanjadic.dll 파일은 COM 컴포넌트이다. OleView 프로그램을 통하여 노출하고 있는 인터페이스를 확인했다. 아래는 OleView가 해석한 타입 라이브러리이다. [ Hanjadic.dll - COM Interface ] // Generated .IDL file (by the OLE/COM Object Viewer) // // typelib filename: hanjadic.dll [ // Forward declare all types defined in this typelib [
| ||||