skip menu and go to main content

body start

새나루

Wiki

Project News

Project Info

activity viewforum,download view

Developer Info

MS Keyboard Layout Creator

윈도우즈 상에서 쓸 수 있는 키보드 레이아웃 dll 드라이버를 만들 수 있는 프로그램.

무료로 다운로드 받아서 설치할 수 있으며, 컴파일러를 같이 내장하고 있어서 레이아웃 파일을 *.dll파일로 직접 컴파일하고, 셋업파일로 패키징까지 해준다.

단, 일부 키코드를 저차원적으로 지정할 수 없지만 이는 *.c *.h 파일을 직접 수정하여 dll 파일을 컴파일 해서 사용하는 방법을 쓰면 가능하다.

다운로드 및 설치

http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx 에서 버전 1.4 혹은 그 아랫 버전 1.3을 다운받아 설치할 수 있다. 닷넷이 설치되어 있어야 사용할 수 있다.

사용법

너무나 간단하다. 일단 실행시켜 보면 GUI로 되어있기 때문에 쉽게 사용할 수 있다.

구글링해보면 설명서도 많이 나와있다. 그중에 하나가 http://opcug.ca/public/Reviews/keyboard_layout.htm

  • klc 파일을 열거나 klc 레이아웃을 새롭게 만든다.
  • Project -> Build DLL and Setup package 선택
  • setup.exe 파일이 생성됨.

컴파일러 직접 사용해보기

설치된 디렉토리에 가보면 C:\Program Files\Microsoft Keyboard Layout Creator 1.4 그 하위 디렉토리 \bin\i386에 컴파일러 및 kbdutool.exe가 있다. [#315212]에서 콜맥 키보드 레이아웃 드라이버를 만든 방법 혹은 드보락 드라이버를 만든 방법은 이 방법을 쓴 것이다.

kbdutool.exe 옵션

cmd.exe로 커맨드 창을 열어서 C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386에 가서 kbdutool.exe를 실행해보라. 설명이 다음과 같이 나온다.

C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386>kbdutool.exe

KbdTool v3.40 - convert keyboard text file to C file or a keyboard layout DLL


Usage: KbdUTool [-v] [-n] [-w] [-k] [-n] [-u|a] [-i|x|m|o|s] FILE

        [-?] display this message
        [-n] no logo or normal build information displayed

        [-a] Uses non-Unicode source files (default)
        [-u] Uses Unicode source files

        [-v] Verbose diagnostics (and warnings, with -w)
        [-w] display extended Warnings

        [-x] Builds for x86 (default)
        [-i] Builds for IA64
        [-m] Builds for AMD64
        [-o] Builds for WOW64
        [-s] Generate Source files (no build)

        FILE The source keyboard file (required)

        -u/-a are mutually exclusive; kbdutool will use the last one if you spec
ify more than one.
        -i/-x/-m/-o-s will exhibit the same behavior when than one of them is sp
ecified.


C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386>

여기서 중요한 옵션은 -s 옵션으로 klc 키보드 레이아웃 소스파일을 C 언어 소스파일로 만들어주는 옵션입니다.

이렇게 해서 얻어진 C 소스파일을 편집하면 좀 더 저차원의 기능을 추가하거나 GUI편집기능으로 제어할 수 없던 부분을 제어가능 합니다. 예를 들어 한자/한영 전환키를 지정할 수 있습니다.

*.KLC 파일로부터 *C / *H 소스파일 얻기

Colemak.klc파일로부터 *C / *H 소스파일을 얻기 위해서 다음의 명령을 실행한다.
kbdutool.exe -u -s Colemak.klc

이 명령을 내리면 Colemak.klc파일로 부터 Colemak.C, Colemak.H, Colemak.DEF, Colemak.rc 파일이 얻어진다.
  • Colemak.C / Colemak.H : C 소스 파일 및 헤더파일
  • DEF 파일 - DLL용 DEF파일
  • RC 파일 - DLL용 리소스 파일

컴파일하기

명령창을 열어서 (XP에서는 cmd.exe를 실행시킴) 직접 컴파일러 명령을 입력해주어야 합니다.

MSKLC와 같이 배포되는 소스 컴파일을 위한 컴파일러(cl.exe) 및 dll 생성을 위한 링커(link.exe)는 모두 다음 디렉토리에 있습니다. C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386

이 디렉토리로 옮겨준 다음 (C:\ 및 cd 명령 사용)

  • 명령창에서 C:\ 라고 입력하면 C:\ 루트 디렉토리로 이동
  • cd C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386 입력하면 디렉토리로 이동
  • cl 이라고 실행해보면 다음과 같은 메시지가 나옴을 확인할 수 있다.
    C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386>cl
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.220 for 80x86
    
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    usage: cl [ option... ] filename... [ /link linkoption... ]
    
    C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386>
    

이제 *C를 컴파일하고 *RC파일을 RES 파일로 만든다.
  • cl을 사용해서 C 파일을 컴파일해준다.
    cl.exe /GS- /WX- /c /I ..\..\inc /D WIN32_LEAN_AND_MEAN /D NOSERVICE /D NOMCX /D KBD_TYPE=13 Colemak.C
    
    • /c 옵션으로 컴파일한다. Colemak.obj파일이 생성된다.
    • /l 옵션으로 INCLUDE 파일 경로를 설정.
    • /D WIN32_LEAN_AND_MEAN /D NOSERVICE /D NOMCX 옵션은 이리저리 실행하다가 찾은 옵션. 안쓰면 컴파일시 오류를 낸다.
    • /D KBD_TYPE=13 키보드 타입을 한글 103/106 키보드로 설정한다.
}}}

이렇게 하면 Colemak.obj 파일이 얻어진다.

이제 Colemak.RC 리소스 파일을 컴파일한다. 리소스 파일이 컴파일된 후에 RES파일이 얻어진다.
  • rc.exe /I ..\..\inc Colemak.RC

이제 얻어진 Colemak.obj 파일과 Colemak.RES 파일을 링크해서 dll 파일을 얻는다. link.exe를 다음과 같은 옵션을 주어 컴파일한다.
link.exe   /nodefaultlib:libcmt.lib /nodefaultlib:oldnames.lib /def:Colemak.DEF /base:0x1000000
/section:.data,re /ignore:4253,4254 -merge:.edata=.data -merge:.rdata=.data -merge:.text=.data
-merge:.bss=.data /noentry Colemak.obj Colemak.res

<!>불가피하게 여러줄을 썼지만 한줄로 입력해 주어야 한다. 여러 옵션들은 새나루에서 키보드 드라이버를 링크할 때에 사용되는 옵션을 참고한 것이다. (WINDDK에 포함된 키보드 레이아웃 드라이버 컴파일 옵션)

링크가 완료되면 다음메시지가 나오며
Microsoft (R) Incremental Linker Version 8.00.50727.220
Copyright (C) Microsoft Corporation.  All rights reserved.

   Creating library Colemak.lib and object Colemak.exp

C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386>
Colemak.dll 파일이 얻어지게 됨을 알 수 있다. :)

이제 dll 파일을 복사해준다. Win7 같은 경우는 복사할 경우 경고메시지가 나오므로 유의해야 하며, 64비트를 쓸 경우에는 64비트용, 32비트용을 각각 컴파일해주어야 한다. 위의 설명을 통해서 얻어지는 DLL 파일은 32비트 용이 된다.

64비트용으로 컴파일을 하려면 C:\Program Files\Microsoft Keyboard Layout Creator 1.4\bin\i386\amd64에 있는 cl.exe, link.exe를 사용해야 한다는 것에 유의하자.

CapsLock을 backspace로 바꾸기

WINDDK에 포함되어 있는 kbd.h 파일을 찾아보면 CAPSLOCKT3A, X3A를 바꿔줘야 함을 알 수 있다. 새나루에 같이 포함되어 있는 콜맥 소스를 참고해보면 다음과 같이 고쳐있다.

http://kldp.net/scm/viewvc.php/saenaru/colemak/kbdcmk.h?root=saenaru&amp;r1=1.1&r2=1.2 참고. Colemak.h를 다음과 같은 식으로 고쳐준다.
--- kbdcmk.h    2010/03/15 09:47:20     1.1
+++ kbdcmk.h    2010/03/15 13:36:11     1.2
@@ -88,3 +88,7 @@
 #undef  T31
  #define T31 _EQ(                                        'K'                      )

+#undef T3A
+ #define T3A _EQ(                                       BACK                      )
+#undef X3A
+ #define X3A _EQ(                                       BACK                      )

AltGR 바꾸기

오른쪽 RALT에 대응하는 값이 RMENU이다. 이 값을 찾아보면 X38, A38이라는 것을 알 수 있다.

#undef T38
 #define T38 _EQ(                                       LMENU                      )
#undef X38
 #define X38 _EQ(                                       LMENU                     )

얻어진 Colemak.dll 파일 @Colemak.zip (4.77 KB) (오른쪽 ALT => LALT로 바꾸고, CapsLock => Backspace로 바뀐 것)