head	1.4;
access;
symbols;
locks
	root:1.4; strict;
comment	@# @;


1.4
date	2010.09.26.10.33.26;	author root;	state Exp;
branches;
next	1.3;

1.3
date	2010.09.26.10.11.26;	author root;	state Exp;
branches;
next	1.2;

1.2
date	2010.09.24.10.07.15;	author root;	state Exp;
branches;
next	1.1;

1.1
date	2010.07.18.08.56.34;	author root;	state Exp;
branches;
next	;


desc
@/opt/nforge/var/wiki/saenaru/data/text/MSKeyboardLayoutCreator
@


1.4
log
@210.220.67.131;;wkpark wkpark ;;
@
text
@'''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 파일을 찾아보면 {{{CAPSLOCK}}}은 {{{T3A, X3A}}}를 바꿔줘야 함을 알 수 있다.
새나루에 같이 포함되어 있는 콜맥 소스를 참고해보면 다음과 같이 고쳐있다.

http://kldp.net/scm/viewvc.php/saenaru/colemak/kbdcmk.h?root=saenaru&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` 파일 attachment:Colemak.zip (오른쪽 ALT => LALT로 바꾸고, CapsLock => Backspace로 바뀐 것)
@


1.3
log
@210.220.67.131;;wkpark wkpark ;;
@
text
@d136 19
d156 8
d165 1
a165 1
== CapsLock을 backspace로 바꾸기 ==
@


1.2
log
@210.220.67.131;;wkpark wkpark ;;
@
text
@d65 74
a138 1
to be continued
@


1.1
log
@210.220.67.74;;wkpark wkpark ;;
@
text
@d17 4
@
