키보드 설정 강좌 #1>
키보드 설정 목적
1. Shift + Space로 한영전환, Ctrl + Space를 한자키로 쓰고 싶은분들
2. 그리고 기존에 한영전환키, 한자키는 같이 컴퓨터를 쓰는 다른 사람들을 위해 남겨 두고 싶을 경우.
3. Capslock을 Ctrl키로 쓰고 싶은 분들 위한 작은 팁을 설명하고자 한다.
그 첫번째 시간으로 Windows Registry를 바꾸는 방법이다. 이 방법의 장점은 Registry를 수정해서 윈도우 커널레벨에서 동작해서 동작이 안정적이다. 그러나 단점으로는 설정을 변경하고자 할 경우 컴퓨터를 리붓해야하고, 타인과 같이 쓰는 컴퓨터에 대해서 원성을 살수도 있다는 점이다. 그리고 혹시나 실수를 했을 경우 매우 힘든 상황이 있을 수 있으니 레지스트릴 백업해 두었다가 복구해야하는 수고를 해야한다.
1. 한영전환에 관해서===================================================
도스시절 아래아한글 소프트웨어를 쓰던 사람들은 Shift+Space 한영전환에 대한 미련이 있다. 그런데, 또한 한영전환을 기존대로 활용하고 싶은 사람과 같이 쓰는 PC일 경우 이렇게 마음대로 바꿔 놓음 사람들이 무진장 헷갈려 할 것이다. 이 모든 요구사항을 반영한 키보드 설정 변경 Registry를 만들어 보자.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
"LayerDriver KOR"="kbd101c.dll"
"OverrideKeyboardSubtype"=dword:00000005
상기와 같이 Registry 위치를 편집하거나 Reg 화일을 만들어서 추가하면 Shift+Space로 한영전환이 된다.
http://pds12.egloos.com/pds/200906/26/67/Shift_space_HanEng.reg
2. 한영 전환 개선 ================================================
하지만 기존 '한/영' 버튼은 이제 더이상 동작하지 않는다 보통은 Right-Alt 키로 동작하게 될것이다. 그리고 '한자' 버튼도 이제는 Right-Ctrl 버튼이 된다. 어차피 Alt와 Ctrl버튼은 왼쪽에 있으므로 이를 '한/영'과 '한자' 버튼으로 다시 수정해 주면 다른 사용자들의 원성(?)을 듣지 않아도 될것이다. 이를 위해서는 아래와 같은 설정이 필요하다.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,\
00,00,00,00,\
03,00,00,00,\
72,00,38,E0,\ # 0xE038 (RAlt) -> 0x0072 (한영전환)
71,00,1D,E0,\ # 0xE01D (RCtrl) -> 0x0071 (한자변환)
00,00,00,00
상기 Scancode Map 의 의미는 각 행 별로 의미가 있다.
첫째 행 00,00,00,00 은 header의 의미이다.
두째 행 00,00,00,00 은 Version을 나타낸다
세째 행 03,00,00,00 은 아래열의 개수다. 맨 마지막 열은 무조건 추가되므로 키보드 설정을 변경하는 것이 2개라면 3으로 쓰고 3개라면 4를 넣어주면 된다. 여기서는 한/영키와 한자 키의 설정 2개를 변경하는 것이므로 3이 된다.
네째 행부터 키 변환을 설정한다. Right Alt키를 '한/영'으로 설정하기 위해서는 Right Alt 키에 해당하는 Code 0xE0 38을 '한/영'에 해당하는 0x00 72로 변경하라고 설정한다. 이때 Windows는 Little Endian*을 쓰므로 작은값의 숫자 부터 작성해야한다. 그래서 E0,38,00,72 를 뒤집은 형태인 72,00,38,E0이 된다.
* Little Endian 갑자기 어려운 용어가 나온다. 짧게 설명하고 넘어가자.. 디지털 시스템의 메모리에 숫자를 넣을 때 어떤 순서로 넣을지 두 가지 방식이 있는데, Little Endian (인텔계열)과 Big Endian(RISC계열)이 있다. Little Endian은 Least Significant Address에 가장 작은 값을 넣는 것을 의미하고, Big Endian은 Least Significant Address에 가장 큰 값을 넣는 것이다. 예컨데) 9782이라는 숫자를 메모리에 넣을 때, 10진수 1자리씩 메모리에 하나의 필드에 넣을 수 있는 가상의 시스템이 있다고 하면...
리틀엔디안은 아래처럼 저장하는 것이고
주소: 4(MSB) 3 2 1(LSB)
---------------------------------------
값: 9 7 8 2
빅엔디안은 아래처럼 저장하는 것이다.
주소: 4(MSB) 3 2 1(LSB)
2 8 7 9
보통 디지털 회로 등을 작성할 때 큰주소->작은주소 순으로 작성해서 빅엔디안은 숫자가 뒤집혀 보이지만, 프로그래밍을 할때의 상식은 작은주소 -> 큰주소 순서로 작성해서, 빅엔디언이 오히려 자연스럽게 읽힌다..
각설하고...
마찬가지로 Right Ctrl키를 '한자'키로 설정하기 위해서는 Right Ctrl키의 Code인 0xE0 1D를 '한자'키에 해당하는 0x00 71로 변환하기 위한 설정값 E0,1D,00,71 의 Little Endian 표시인 71,00,1D,E0이 된다. 참고로 '\' 표시는 Reg 파일에서 다음 라인을 이어주라는 이음 마크이다. \를 안쓰면00,00,00,00,03,00,00,00,72,00,38,E0,71,00,1D,E0,00,00,00,00 이런식으로 적어야 해서 보기 안좋아서 넣은 것이다.
상기 내용을 Registry file로 만들어 보았다.
Shift_space_Haneng2.reg
3. Capslock을 잘 안쓰고 그 위치에 Control키를 넣고 싶은 사람들을 위한 설정===========================
Capslock의 위치는 새끼 손가락에 가까워서 Control키를 자주 누르는 사람은 위치를 변경하고자 하는 욕구가 있을 것이다. 이 변경방법은 Scancode Map을 활용하여 할 수 있다.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,\
00,00,00,00,\
02,00,00,00,\
1d,00,3a,00,\ # 0x003a (Capslock) -> 0x001d (LCtrl)
00,00,00,00
이다 즉, Capslock의 Code는 0x00 3a 이고, Left Ctrl의 Cde는 0x00 1d 이다. 상기와 같이 설정하면 컴퓨터에 Capslock키는 없어진다.
http://pds12.egloos.com/pds/200906/26/67/Capslock2Ctrl.reg
4. Capslock을 살리고자 하는 경우는 Left Ctrl을 Capslock으로 설정하면 된다. 아래의 설정을 보자.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,\
00,00,00,00,\
03,00,00,00,\
1d,00,3a,00,\
3a,00,1d,00,\
00,00,00,00
로 설정하자.
Swap_Capslock_Ctrl.reg
=============================
5. 이상 것을 종합해서, Capslock을 Ctrl로 사용하고 Shift Space를 한/영전환 Ctrl Space를 한자 변환으로 쓰고
기존 한/영, 한자 키를 살리는 종합 버전이다.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
"LayerDriver KOR"="kbd101c.dll"
"OverrideKeyboardSubtype"=dword:00000005
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,\
00,00,00,00,\
04,00,00,00,\
1d,00,3a,00,\
72,00,38,E0,\
71,00,1D,E0,\
00,00,00,00
으로 설정하면 된다.
==================================
아래는 설정하기 좋게 레지스트리로 만들어 두었다. 5가지 중 택일 하면 되고 실행시키고 리붓 시키면 동작한다.
1. Shift + Space 한영전환, Ctrl + Space 한자 변환
http://pds12.egloos.com/pds/200906/26/67/Shift_space_HanEng.reg
2. Shift + Space 한영전환, Ctrl + Space 한자 변환 , 기존 한영 한자 키 살림
http://pds15.egloos.com/pds/200906/26/67/Shift_space_Haneng2.reg
3. Capslock to Ctrl
http://pds12.egloos.com/pds/200906/26/67/Capslock2Ctrl.reg
4. Swap Capslock Ctrl
http://pds13.egloos.com/pds/200906/26/67/Swap_Capslock_Ctrl.reg
5. 종합 버전: Shift + Space 한영전환, Ctrl + Space 한자 변환 , 기존 한영 한자 키 살림, Capslock to Ctrl
Shift_Space_HanEng2_Capslock2Ctrl_HJ.reg
이 사항은 Windows XP에서 시험해 본 파일이다.
6 복구 방법=========================================
Uninstall 방법은 매우 간단하다.
Shift+Space, Ctrl+Space를 삭제하려면 기존의 설정으로 변경해야한다.
아마 기존 설정이 아래로 되어 있을 것이다. (키보드1 타입으로)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
"LayerDriver KOR"="kbd101a.dll"
"OverrideKeyboardSubtype"=dword:00000003
그리고 스캔코드 설정은 시작/실행/regedit 하고 아래 디렉토리에 "Scancode Map"을 오른쪽 클링해서 삭제만 하면 되겠다.
또는 Scancode Map 정보에 아래의 값으로 바꾸는 것이다.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,\
00,00,00,00,\
01,00,00,00,\
00,00,00,00
아니면 아래의 Uninstall Registry를 실행 하고 리붓하면~ OK!
Uninstall_Shift_Space_HanEng2_Capslock2Ctrl_HJ.reg
덧글|덧글 쓰기|신고