body start
새나루
Project News
Project Info
- Development Status: Beta
- License: New BSD License, Other License
- Operating System: Windows
- Programming Language: C, C++
- Topic: System SW
- User Interface: Text-based Console, Windows
- Member count : 2
- Registered: : 2003.11.28
- Activity Percentile: : 99.26%
Developer Info
MS 한글 IME에서는 type 1,2,3 (혹은 A,B,C) 및 103/106 키보드에 대한 각각의 키보드 변경과 IME가 무관하게 작동되고 있습니다.
- kbd101a.dll - Type A 혹은 Type 1 - 오른쪽 Alt키: 한/영전환, 오른쪽 Ctrl키: 한자키 - 101 자판의 기본 드라이버.
- kbd101b.dll - Type B 혹은 Type 2 - 오른쪽 Ctrl키: 한/영전환, 오른쪽 Alt키: 한자키 - 대부분 사용자는 거의 사용안함.
- kbd101c.dll - Type C 혹은 Type 3 - Shift-Space 한/영전환, Ctrl-Space키: 한자키 - 101 자판 사용자에게 인기있는 드라이버
- kbd103.dll - 한글 103/106 키보드 드라이버
일반적인 키보드 레이아웃 드라이버가 가지는 export된 함수
- KbdLayerDescriptor
위의 내용은 몇몇 disassembler 및 decompiler를 통해서 분석해본 결과입니다.
MS 한글 IME에 내정된 키보드 레이아웃 드라이버인 kbdkor.dll 드라이버는 101a/b/c 및 103키보드 드라이버를 위한
껍데기 드라이버(stub driver라고 불리움) 역할을 하는 것으로 생각되며 이것을 잘 분석하여서 새나루 입력기만을 위한 드라이버도 만들 수 있을 것입니다.
이것이 가능하다면,
- 콜맥/드보락 및 프랑스어/독일어 자판간 전환을 보다 손쉽게(?) 할 수 있을 것.
- 101, 103/106 키보드 지원을 손쉽게 할 수 있을 것.
KbdLayerMultiDescriptor ¶
HRESULT KbdLayerMultiDescriptor(PKBDTABLE_MULTI pkb)
multi layer를 지원하기 위한 것인 듯. 쓰임새는 알 수 없다.
KbdLayerRealDllFileNT4 ¶
디스어셈블 하여 살펴보면 항상 false가 된다. 그냥 다음과 같이 만든다.
HRESULT KbdLayerRealDllFileNT4(LPTSTR lptr)
{
return (HRESULT) 0;
}
KbdLayerRealDllFile ¶
가장 핵심적인 함수. a 인자는 터미널 서버를 위한 인수인 것 같고, b는 전혀 안쓰이고 있다.
다음과 같이 만들면 키보드 드라이버의 내용 대신에 kbdcmk.dll을 읽는다. kbdkor.dll의 경우 레지스트리를 검사해서 kbd101a.dll과 같은 PC의 키보드 드라이버에 대응된 드라이버를 읽게끔 되어있다.
HRESULT KbdLayerRealDllFile(DWORD hkl, LPTSTR lptr, DWORD *a, DWORD b)
{
_wcscpy ( lptr, TEXT("kbdcmk.dll"));
return (HRESULT) 1;
}


