얼마전 HHK(Happy Hacking Keyboard) Lite2 를 구입하였다.
커다란 내츄럴 키보드를 쓰다가 이 키보드를 쓰니 일단 책상이 넓어져서 좋다.
내츄럴 키보드에선 불가능한 공간활용이다.
키감이나 손가락의 동선(?)을 최소화한 키 배치는 상당히 마음에 든다.
특히나 Vi를 쓸 때는 ESC 키가 가까이 있어서 편하다.
'~' 를 채팅하다 보면 종종 쓰게 되는데 이 위치에 ESC가 있어 잘못 ESC를 눌러서 종종 창이 닫히는 경우도 있어 불편한 점도 있다.
아래 링크를 보시면 좀 더 자세한 HHK Lite2의 리뷰를 보실 수 있다.
http://hardware.myfolder.net/Category/Story.html?sn=1273&nnc=2
이 키보드를 쓰다가 또 한 가지 불편했던 점은 오른쪽 윈도우 키였다. 왼쪽 윈도우 키는 탐색기를 띄울 때나 실행창을 띄울 때 자주 사용하고 가끔 윈도우 메뉴를 보기 위해서도 사용하는 편이다. 그러나 오른쪽 윈도우 키는 전혀 사용하지 않아 계륵일 뿐이었다. 더군다나 한영변환을 위해 오른쪽 Alt 키를 누르다 종종 윈도우 메뉴가 떠 버릴 때는 가끔 짜증도 났었다.
결국, 키맵을 변경시킬 방법이 있나 찾아보게 되었다. 오른쪽 윈도우 키를 한자(漢字) 키로 바꾸면 딱 좋을 것 같다는 생각이 들었다. 한자키는 특수문자 입력을 위해서 가끔 사용하니 윈도우 키보다는 훨씬 나아 보인다.
인터넷에서 누군가 써둔 자료를 찾을 수 있었다. (신재호씨의 홈페이지:http://netj.org/windows_keymap)
이 홈페이지에서 연결된 링크들이 모두 깨져 있어서 새로 소개글을 작성하게 되었다.
그리고, 새로 알게 된 사실까지 하나 덧붙여서 이 소개글을 쓰기로 하였다.
실제로 윈도우에서 키맵을 변경하는 것은 레지스트리를 고쳐서 가능하다. (http://www.microsoft.com/whdc/device/input/w2kscan-map.mspx)
1. 레지스트리 에디터(regedit.exe 혹은 regedt32.exe)를 띄워서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 아래에 다음과 같은 값을 새로 생성시킨다. (Keyboard Layouts 는 건드리지 말라는 경고가 있으니 손대지 않는 것이 좋겠다.)
이름: Scancode Map
종류: REG_BINARY
2. Scancode Map을 열어 실제 값을 입력한다. 처음 두 Word는 모두 0으로 채우고, 세 번째 워드에는 그 이후에 오는 워드의 수를 입력한다.
예를 들어, CAPS Lock을 CTRL로 바꾸고 CTRL을 Caps Lock으로 바꾸는 코드의 예제를 보면,
00000000 00000000 03000000 3A001D00 1D003A00 00000000
위의 값들은 모두 리틀 엔디안이므로, 실제 값은 다음과 같다.
0x00000000 : 헤더: 버전, 그냥 모두 0으로
0x00000000 : 헤더: 플래그, 역시 모두 0으로
0x00000003 : 키맵의 갯수, 다음에 세 개의 필드가 따라오므로 3. (제일 끝의 널을 포함하여 카운트)
0x001D003A: 키맵. CTRL (0x1D) -> Caps Lock (0x3A)
0x003A001D: 키맵. Caps Lock (0x3A) -> CTRL (0x1D)
0x00000000 : 널 엔트리
각 키의 값은 스캔코드 값으로 정해져 있는데 그 값은 여기서 찾아볼 수 있다.
(http://www.microsoft.com/whdc/device/input/Scancode.mspx)
아니면 신재호씨가 추천하는 것처럼 keyview.exe 프로그램을 사용해도 되겠다.
그렇지만, 무엇보다 Microsoft 사이트에 링크된PDF 파일을 추천한다.
(http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf)
이 PDF 파일에 기술된 스캔코드 맵을 보면 위에 기술된 왼쪽 CTRL 키의 값은 0x1D라는 것을 확인할 수 있다. 이 파일에는 여섯 개의 컬럼으로 나눠져 있는데 그 중 세 번째 컬럼의 값(PS/2 Set1 Make*)이 설명된 값과 일치하는 값이다.
3. 이렇게 스캔코드 맵을 작성한 후에는 반드시 리붓을 하여야 그 값이 적용된다.
4. 윈도우 키를 한자 키로 바꿔 보자.
오른쪽 윈도우 키의 값은 Right GUI 이므로 0xE05C 이고, 한자 키의 값은 0xF1이다. 그렇다면 이에 대한 키맵은 0xE05C00F1이어야 한다. 이렇게 바꾸고 리붓을 하고 확인했더니 아무런 반응을 보이지 않는다. -_-;;;
무슨 일인가 싶어 이리저리 키맵을 바꾸며 확인하다가 0xF1 대신 0x91을 입력했더니 윈도우 키를 눌렀을 때 w가 찍히는 것을 확인하였다. 변경된 키 값은 PS/2 Set 1 Make*에 있는 값이 아니라 PS/2 Set 1 Break*에 있는 값이었던 것이다. 이런 현상은 다른 키보드에서도 공통적인지는 모르겠다. (해피해킹 라이트2는 USB를 사용하는 키보드이며 HID 인터페이스로 등록된다. 그리고 아마도 한영키와 한자키가 없는 영문키보드로 동작할 것이다.)
그렇다면, 한자키의 값은 PS/2 Set 1 Break* 에 있는 값을 입력하여야 원하는 동작을 보인다는 소리다. PS/2 Set 1 Break*에서 한자키의 값은.... none. 없단다. -_-;;;
이 얘기는 결국 한자키로의 매핑은 불가능하다는 뜻일까. 결론적으로 그렇지는 않았다. 한자키의 PS/2 Set 1 Break*에서의 키값을 알아내는 것이 중요하다.
PS/2 Set 1 Make*와 PS/2 Set 1 Break*의 관계를 살펴보면 Make*의 값에 0x80을 더하면 Break*의 값이 되는 것을 알아낼 수 있다. 그래서 한자키의 값이 none으로 되어 있더라도 0xF1에 0x80을 더한 0x171을 입력하여 시도해 보기로 하였다. 리붓한 후 오른쪽 윈도우 키는 성공적으로 한자 키로 동작하였다.
윈도우 키를 한자 키로 바꾸는 워드들은 다음과 같다.
0x00000000
0x00000000
0x00000002 : 두 개의 키맵 워드가 있으므로
0xE05C0171 (0xE05C: 오른쪽 윈도우, 0x0171: 한자키의 예상값)
0x00000000
이를 리틀 엔디안 형태로 바꾸면 00000000 00000000 02000000 71015CE0 00000000 이 된다. Scancode Map 값을 열어서 이처럼 입력하고 리붓하면 끝.
관련 링크 모음
http://netj.org/windows_keymap
http://www.microsoft.com/whdc/device/input/w2kscan-map.mspx
http://www.microsoft.com/whdc/device/input/Scancode.mspx
http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf
'Tech & IT > 컴퓨터활용 Tips' 카테고리의 다른 글
Mac OS X에서 Screen Capture (0) | 2008.09.11 |
---|---|
Computer 사용 Useful Expression (0) | 2008.09.08 |
Kalyway 10.5.2에서 10.5.4로 Update하기 (0) | 2008.09.07 |
Mac관련 각종 useful 링크 (0) | 2008.09.07 |
Programming in Mac (0) | 2008.09.07 |