다른 분들이 말씀 해주신 정보 취합 해봅니다.



1.

101/103/104/106키 키보드 개요

한국의 컴퓨터 시장에서 유통되는 한글키보드는 'KS X 5003 개인용 컴퓨터용 키보드 표준'에 정의되어 있고,  영어키보드 "101키" QWERTY 자판에 스페이스바 왼쪽에는 한문변환 전용 키, 스페이스바 오른쪽에는 한글전환 전용 키가 추가된 형태이다. 이렇게 101 QWERTY 키보드에 한문 키와 한글 키가 추가된 키보드를 "103키" 한글키보드라고 한다.

그리고, 101키에 윈도우 키 2개와 메뉴 키 1개가 추가되면서 "104키" 키보드가 유통되고, 거기에 한글 키와 한문 키가 추가된 키보드를 "106키"라고 한다. 즉, 101/104키 영어키보드에 키 두 개씩 추가된 키보드를 103/106키 한글키보드라고 한다.

언어 전환용 추가 전용 키가 없는 영어키보드를 그대로 사용하는 경우에는, 잘 사용하지 않는 오른쪽 Alt 키를 한글전환 전용 키로 사용하고, 오른쪽 Ctrl 키를 한문전환 전용 키로 대신 사용한다. 이런 식으로 기존의 101/104키 영어키보드를 사용하는 것을 101/104키 호환모드라고 한다. 이런 101/104키 호환모드는 한국에서 판매되는 노트북/외국키보드에서 사용한다. 특별히 국내 시장을 위해서 제작된 기종이 아니라면, 기존의 키보드 하드웨어 기구를 그대로 사용하면서 키보드 키캡 상의 "인쇄"만 변경해서 출시하기 때문이다.

PS/2, USB 한글키보드
한글전환 전용 키는 스캔코드 0xF2, 한문전환 전용 키는 스캔코드 0xF1에 해당한다. 다른 키와 달리 이 2개 전환 전용 키는 키를 눌렀을 경우에만 신호를 보내고, 키를 뗄 경우에는 신호를 보내지 않는다. 그래서, 키를 떼는 신호를 인식해야 하는 게임 등의 용도로는 이 2개 키를 이용할 수 없다. 하지만, USB 한글키보드에서는 이 2개 키가 다른 키와 똑같이 뗄 경우에도 신호를 보낸다.


어떤 키보드가 어떤 종류의 키보드인지 자동으로 알아내는 방법은 없다.



2.

상기는 설명은 실물을 손으로 두드려 만져서 키보드를 구분하는 방법이었고,
하기는 윈도우즈 프로그램 내부에서 키보드를 인식하는 방법입니다.

엄밀히 말하면 이 두 가지 구분은 아무 관계없이 독립적이지만, 실제로는 비슷하게 간다.

외산 키보드의 키캡을 보면 "Alt/한글" 그리고 "Ctrl/한문"이라고 적어 놓은 것이 있습니다. 이것은, 단순히 키캡에만 한글을 인쇄해놓은 것일 뿐입니다. 즉, 상기 표준을 따르면 "영문 키보드"라고 하는 편이 옳습니다.



3.

키보드의 한글/한문/영어 변환 그리고 (키 배열/배치의 변경을 의미하는) 리매핑에는 레지스트리를 사용합니다.

키보드 드라이버는 아무런 관계 없습니다. 윈도우즈가 제공하는 드라이버 그대로 아무런 조절/변경/선택도 하지 않고 그냥 키보드를 연결한 후 사용하면 됩니다. 드라이버는 레지스트리보다 조금 앞서서 약간 더 근원적인 역할을 할 뿐입니다. 잊어버리시면 됩니다.


그냥 흔히 말하기를 "레지스트리"라고들 사용은 하고 있지만,
두 가지 레지스트리가 명확하게 다른 용도로 사용되고 있습니다.

당연히 서로 간에 전혀 간섭하지 않습니다.
타입은 타입만을 변경하며, 리매핑은 리매핑만을 변경합니다.

이 두 가지를 별개로 구분하여 사용하시는 것이 속 편합니다.

그리고, 레지스트리는 확장자 "내마음대로.reg" 라는 파일로 만든 후에
아무 곳에나 보관하면서 필요에 따라서 더블 클릭하면 레지스트리 내용이 곧바로 변경됩니다.

새로 클릭한 파일에 있는 내용이 기존에 있는 내용을 모두 삭제한 후 들어가는 것입니다.

아래 소개하는 영문 내용만 살짝 긁어서,
일반적인 텍스트 파일의 확장자 .txt로 만드신 후에, 확장자만 .reg로 바꾸면 다 됩니다.

혹은 해당 레지스트리를 직접 찾아 들어가서, 파일 형태로 "내보내기"를 하신 후에,
마찬가지로 보관하면서 필요에 따라서 더블 클릭하면 레지스트리가 바로바로 변경됩니다.

레지스트리를 변경하는 것의 한가지 단점은, 그러면서도 거대한 단점은..
리붓팅을 한 후에야 변경한 내용의 "효력"이 발생한다는 점입니다.

레지스트리를 건드리면, 연결되는 모든 키보드에 영향을 줍니다.
그렇지 않다고도 하는 글을 본 것도 같은데, 연구 안 해보았습니다. 연구 해보시기 바랍니다.

리붓팅을 안 하면서도, 임시로 한영 전환을 사용 가능하도록 만드는 프로그램도 있다고 합니다.
저는 관심이 없어서 연구 안 해보았습니다. 연구 해보시기 바랍니다.

이하,
정확하고 장황하게 그 기능을 설명하는 것은 제가 할 일은 아니므로 넘어가고요..
제가 아는 한도에서 사용 요령만 말씀드립니다.



4.

레지스트리를 처음 접해보시는 분은..

모니터 화면 좌측 하단 "시작" 클릭
우측 중간 쯤 (경우에 따라 다름)에 있는 "실행..." 선택
"열기" 빈 칸에서 커서가 껌뻑이면,
regedit
입력 후, 엔터 키를 쳐 줌.
"레지스트리 편집기" 나타남.

혹은..

C:\Windows\regedit.exe 더블클릭
"레지스트리 편집기" 나타남.

레지스트리를 변경하는 것은 위험(?)하므로 주의를 요합니다.



첫 번째가 이것입니다. "키보드 타입"만을 변경하는 것입니다.

.......................................................................................................................................................................................................................
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
.......................................................................................................................................................................................................................

윈도우즈를 최조로 설치할 때는 선택이 가능 하다고 합니다.
그 후에는 이렇게 수동 작업을 할 뿐입니다.

Keytweak이나 Sharpkeys 등의 리매핑 프로그램이 취급하는 레지스트리가 아닙니다.
이런 프로그램은 이 레지스트리는 조절하지 않습니다.

통상적으로 "타입 1" 혹은 "타입 3"이라고들 흔히 지칭하는데,
타입에 관하여 컴퓨터 내부에서는 그런 식으로 명료하게 표현하는 것은 확인 못했습니다.

한영/한문 전환 전용 키가 부재한 키보드와
한영/한문 전환 전용 키가 설치된 키보드의 구분이 바로 "타입"의 구분입니다.

101/104 키보드, 즉, 통상적인 외제 키보드이지요, 언어 전환 전용 키는 없습니다.
(키보드 매냐에서는 너무도 당연한 키보드이지만, "민간인"들에게는 너무도 생소한 키보드입니다).

103/106 키보드, 즉, 통상적인 한국 키보드입니다. 언어 전환 전용 키가 두 개 있습니다.

이제 잔소리 설명 보겠습니다.


첫 번째로서, 이것은 외제 키보드용입니다. (왈, 타입 1)
실 내용은 더 긴데, 본 용도에만 충분하도록 알맞는 크기로 추출한 것입니다.


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
"LayerDriver KOR"="kbd101a.dll"
"OverrideKeyboardType"=dword:00000008
"OverrideKeyboardSubtype"=dword:00000003
"OverrideKeyboardIdentifier"="PCAT_101CKEY"

우측 알트가 본래 기능을 잃고, 한영 전환 키의 기능을 합니다. 가상키 15 스캔코드 138이 나옵니다.
우측 콘트롤 본래 기능을 잃고, 한문 입력 키의 기능을 합니다. 가상키 19 스캔코드 11D가 나옵니다.



두 번째로서, 이것은 국산 키보드용입니다. (왈, 타입 3)
실 내용은 더 긴데, 본 용도에만 충분하도록 알맞는 크기로 추출한 것입니다.


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
"LayerDriver KOR"="kbd101c.dll"
"OverrideKeyboardType"=dword:00000008
"OverrideKeyboardSubtype"=dword:00000005
"OverrideKeyboardIdentifier"="PCAT_101CKEY"

스페이스바 좌측에 한문 입력 키가 있고, 코드는 19 1F1입니다.
스페이스바 우측에 한영 전환 키가 있고, 코드는 15 1F2입니다.

우측 알트가 본래 기능을 하며, 한영 전환 키 기능은 없습니다. 코드는 A5 138입니다.
우측 콘트롤 본래 기능을 하며, 한문 변환 키 기능은 없습니다. 코드는 A3 11D입니다.

덤으로, 한영 전환은 시프트+스페이스가 가능합니다.
덤으로, 한문 전환은 뭐더라? 컨트롤 스페이스던가? 안 써서 잘 모르겠네요.. 하여간 있습니다.

/*
일어 키보드로 일어를 사용하려는 경우..
LayerDriver JPN 을 kbd101.dll 에서 kbd106.dll 로 변경,
OverridekeyboardIdentifier 를 PCAT_101KEY 에서 PCAT_106KEY 로 변경
*/




레지 변경의 두 번째가 이것입니다. 본격적으로 다양한 키보드 리매핑을 하는 것입니다.

.......................................................................................................................................................................................................................
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
.......................................................................................................................................................................................................................

Keytweak이나 Sharpkeys 등의 리매핑 프로그램이 취급하는 레지스트리입니다.

여기서는 온갖가지 리매핑을 수행하므로, 꽤나 복잡한 일이 가능합니다.
당연히, 한영 전환 및 한문 입력 키 변환 기능도 포함되어 있습니다.

자세한 것은 다른 분의 설명을 보시고..
(팁엔테크 게시판에서 레지/레지스트리 등을 검색하시면 우루루 나옵니다.)

제 설명은 한영 전환 그리고 한문 변환과 관련된 개념 수준으로 간략하게 넘어갑니다.

여기서는 키 단 한 개만을 리매핑시킬 수 있습니다.

따라서, 시프트+스페이스 이런 것은 기대하면 안 됩니다.
그것은 저 위에 i8042 레지에서만 가능한 일입니다.

우측 알트 키를 한영 변환 전용 키로 사용하시려면..
스캔 코드 E0 38 (즉, 138)을 72로 리매핑하시면 됩니다.
(72의 근거는 저도 모릅니다. 그냥 쓰시더군요..)

우측 컨트롤 키를 한문 입력 전용 키로 사용하시려면..
스캔 코드 E0 1D (즉, 11D)를 71로 리매핑하시면 됩니다.
(71의 근거는 저도 모릅니다. 그냥 쓰시더군요..)

혹은 이렇게 하지 않고, 다른 유별난 키를 사용하여 한영 혹은 한문 전환 기능을 수행하고자 한다면,
해당하는 키의 스캔코드를 집어넣어서 리매핑하면 됩니다.



5.


참고로 아래와 같이 위에 설명한 별개인 두 개의 레지를 한 개의 파일로도 만들 수 있습니다.
한영 전환과 한문 입력을 최대한으로 확보하는 의도입니다.

시프트스페이스/컨트롤스페이스도 언어 전환에 사용하고
우측 얼트/컨트롤 역시도 언어 전환에 사용하는 것입니다.


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
"LayerDriver KOR"="kbd101c.dll"
"OverrideKeyboardType"=dword:00000008
"OverrideKeyboardSubtype"=dword:00000005
"OverrideKeyboardIdentifier"="PCAT_101CKEY"


[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,\
71,00,1D,E0,\
00,00,00,00


그럼...




-
잘 아시겠지만, Pause 키와 Fn 키는 촉수불가입니다.
Fn 키를 AHK로 우회할 수는 있지만, 말 그대로 우회일 뿐이며 리매핑은 아닙니다. Pause는 대책이 없습니다. 전문업자라면 뭐 시운 일이겠지만, 저는 아무 것도 몰르는 사람입니다. 추가 Pause 지정은 별 문제 없습니다. 이 말은 박힌 돌을 모두 다 빼내버렸는데.. 돌 단 한 개만 빼내지 못했다는 말이며, 굴러온 돌은 어디고 얼마던지 새로 박아 넣을 수 있다는 것입니다. 안 되는 것은 그냥 안 되는 것으로 인정하고, 포기 했습니다.