좋은내용이라 퍼왔습니다.
원본출처
http://www.parkoz.com/zboard/view.php?desc=asc&divpage=2&id=my_tips&no=6702&page=25&sc=off&select_arrange=headnum&sn=off&sn1=&ss=on
이 녀석은 메인 자판과 텐키+펑션키 패드가 별도로 분리된 녀석이지요.
다른건 다 좋은데 책상에 여유공간이 부족해서 전용 텐키 패드를 같이 올려두고 쓸 공간이 없더군요.
그래서 그냥 키보드 본체로 모든걸 다 해결할 방법은 없을까…하고 생각하다가 저 유명한 해피 해킹 키보드의 레이아웃을 에뮬레이션하기로 했습니다.
물론 단순한 레지스트리로 키매핑하는 정도로는 불가능한 작업이죠.
그러던 참에 이것 저것 뒤지다가 AutoHotKey라는 녀석을 사용하기로 했습니다.
GPL로 자유 배포되는 소프트웨어로, 윈도우의 기본적인 키 입출력을 가로채서 다른 키 신호로 변경하거나, 특정한 기능을 수행하는 소프트웨어입니다. 이름에서 볼 수 있듯 기본적인 기능은 커스텀 핫키를 만드는 것이고, 조금 더 나아가면 키보드 리매핑에서 부터 간단한 프로그래밍까지 할 수 있는 엄청난 녀석이죠.
아무튼, 이것을 다운받아서 설치해서 실행해 보면…처음 실행할 때는 설정파일인 autohotkey.ini을 메모장으로 열어버리고 그걸로 끝입니다.
예제를 보면 Ctrl-WinKey-N을 누르면 메모장을 실행하라…는 예제가 들어 있습니다만…별 쓸모가 없으니 지워줍시다.(펑) 이제 유저가 알아서 키의 리매핑이나 핫키 지정을 기재해 준 다음, 다시 AutoHotKey를 실행시키면 새로 작성된 설정파일이 적용됩니다.
일단 한번 이 과정을 거쳐두면, 그 다음부터는 설정파일을 변경하게 되면 언제든지 autohotkey가 실행중일 때 트레이에 있는 [H]아이콘을 오른쪽 클릭해서 Reload를 선택함으로 변경점을 반영할 수 있습니다.
아무튼, autohotkey의 설정파일의 기본 구문입니다.
A::B
이 구문은 키 입력 A가 들어오면 이 키를 중간에 가로채서 키 B의 값으로 바꿔주는 역할을 합니다.
따라서, 키보드의 a키와 b키를 서로 바꿔주고 싶다면 다음과 같이 하면 됩니다.
a::b
b::a
여기서 ctrl키나 alt키와 동시에 누르는 것을 표현할 수 있습니다.
^a — Ctrl-a
!a — Alt-a
+a — Shift-a
#a — WinKey-a
이것들은 서로 섞어쓰는게 가능합니다. 즉, ^!+#a 는 Ctrl-Alt-Shift-Win-a키를 의미합니다.
또한, 단순히 a::b와 같은 식의 표현 외에도 send 커맨드를 사용한 보다 복잡한 키 값을 보내는 것이 가능합니다.
예를 들자면….
#z::
send {LWin Down}
send {D}
send {LWin Up}
send {LWin}
send {R}
return
이 경우 윈키와 z키를 동시에 누르면 Win키를 누른 상태에서 D키를 누르고 윈키에서 손을 뗀 뒤, 다시 윈키를 한번 누르고 R을 눌러서 실행 대화 상자를 표시합니다.
더 자세한 것은 autohotkey 홈페이지에 있는 도움말을 참조하세요. 참고로 키보드매냐에 가시면 autohotkey의 사용법을 한글로 설명한 팁 글들이 많이 있으니 그쪽을 가 보시는 것도 좋으실 겁니다. (http://kbdmania.net)
아무튼, 이 AutoHotKey를 이용해서 해피해킹키보드의 레이아웃을 흉내내 봤습니다. (진짜 HHK의 레이아웃과는 조금 틀립니다.)
—————————————————————————————
;한영전환 및 한자 입력 단축키
;한영전환: 시프트 스페이스
+space::Send {vk15}
;한자 입력: 컨트롤 스페이스
^space::Send {SC1f1}
;윈키+]를 눌러도 한영 전환
#]::Send {vk15}
;윈키+위 화살표: 페이지 업
#Up::PgUp
;윈키+아래 화살표: 페이지 다운
#Down::PgDn
;윈키+왼쪽: 홈
#Left::Home
;윈키+오른쪽: 엔드
#Right::End
;숫자키로 펑션키 입력하기.
;F1의 경우는 그냥 #1::F1로 해 버리면 해당 프로그램의 도움말이 뜨는 대신에 자꾸만
;윈도우의 기본 도움말 시스템이 뜨는 기현상이 발생합니다. -_-;;
;그래서 일일히 Send {}명령으로 F1키를 보내 줘야 하는데…문제는 이 send {} 커맨드를
;사용하면 Ctrl이나 Shift와의 조합마다 별도로 신호를 제작해 줘야 한다는 겁니다.
;윈키 + 1 : 기본 F1
#1::Send {F1}
;시프트+윈+1: 시프트 F1
+#1::Send +{F1}
;컨트롤+윈+1: 컨트롤 F1
^#1::Send ^{F1}
;알트+윈+1: 알트 F1
!#1::Send !{F1}
;이하 설명 생략.
^!#1::Send ^!{F1}
+!#1::Send +!{F1}
+^#1::Send +^{F1}
+!^#1::Send +!^{F1}
;F1을 제외한 다른 펑션키는 윈도우가 신경을 쓰지 않습니다.
;이 녀석들은 그냥 평범하게 키매핑 방식으로 하면 OK.
#2::F2
#3::F3
#4::F4
#5::F5
#6::F6
#7::F7
#8::F8
#9::F9
#0::F10
#-::F11
#=::F12
;윈키+백스페이스 = 딜리트키
#bs::Del
;해피해킹키보드의 방향키와 편집키 에뮬레이션.
*#[::Up
*#;::Left
*#’::Right
*#/::Down
*#l::PgUp
*#.::PgDn
*#k::Home
*#,::End
#i::PrintScreen
;윈키와 틸드키를 누르면 ESC가 눌린 신호가 발생하도록 설정.
;F1과 마찮가지로 그냥 #`::Esc하면 제대로 작동을 하지 않기 때문에 이렇게 단축키 조합 별로 별도로
;Send {} 커맨드를 사용해야 합니다. -_-;;;;
#`::Send {esc}
^#`::Send ^{Esc}
!#`::Send !{Esc}
———————————————————————————–
이 설정을 사용하면 문자키만 이용해서 거의 모든 키 입력이 제어 가능합니다. 텐키나 방향키, 편집키에 손을 댈 필요는 없습니다. 그리고 게임에서도 이 키 설정이 먹힙니다. ~_~
여담으로 AutoHotKey 프로그램에 동봉된 키 레아이웃 컴파일러를 사용하면 유저가 설정한 키 레이아웃 설정파일을 실행파일로 컴파일 하는 것이 가능합니다. 즉, 다른 컴퓨터에 가도 별도로 AutoHotKey를 설치할 필요 없이 자기가 컴파일해둔 키 레이아웃을 실행시키는 것 하나만으로 자신만의 키 레이아웃을 사용 가능합니다. ~_~<!–”
—————————————————————————-