콘텐츠로 건너뛰기
Home » Capslock 키의 활용도 높이기 (AutoHotkey)

Capslock 키의 활용도 높이기 (AutoHotkey)

여러분은 CapsLock키 많이 쓰시나요? 유용하게 잘 쓰시는 분들도 있겠지만, 저 같은 경우에는 거의 사용하지 않습니다. 심지어 어떤 분들은 이 커다란 키가 뭐하는 키인지 모르는 분들도 계실 것 같고요. CapsLock키에 대해 한 가지 아쉬운 점은, 그 쓰임새가 신통치 않은 것에 비해서는 너무 좋은 자리에 위치하고 있다는 점입니다. 이 낭비되는 키를 어떻게 더 효율적으로 활용할 수 있는 방법이 없을까요?

CapsLock키를 다른 키로 변경하기

먼저 해야 할일은 키보드에서 CapsLock 키를 누르더라도 해당 키가 아닌 다른 키로 인식하도록 하는 것입니다. AHK에서도 CapsLock 키를 조합키의 일부로 사용할 수 있지만, 기본적으로는 윈도 레벨에서 이 키를 흔히 쓰지 않는(?) 키로 인식하도록 하는 것이 안전하겠습니다. 왜냐하면 관리자 권한으로 실행되는 앱은 AHK보다 키 이벤트 처리의 우선순위가 높기 때문에, AHK의 설정이 적용되지 않기 때문입니다. 물론 AHK를 관리자 권한으로 실행하면 되지만, 왠지 이 건 제 맘에 들지 않는군요. 우리가 일반적으로 쓰는 키보드에서는 펑션 키는 F1에서 F12까지 있지만, 키 코드(스캔코드)는 그보다 더 많이 정의되어 있습니다. 저는 애매하게(?) CapsLock키를 F15로 정의하고자 합니다.

이 리맵핑은 레지스트리를 건드려야 하는데, SharpKeys 같은 프로그램을 사용하면 이 맵핑은 안전하게 변경할 수 있습니다.

새 맵핑을 만들면서 위와 같이 CapsLock키를 F15로 작동하도록 세팅해줍니다. 변경이 완료되었다면, OK를 클릭해주고,

[Write to Registry] 버튼을 클릭해서 변경 사항을 레지스트리에 써줍니다. 이 리맵핑은 즉시 효과가 나타나지 않고 재부팅을 하거나 윈도에서 로그오프 한 후 다시 로그온하면 그 때부터 적용됩니다. 혹시 리맵핑을 취소하고 싶다면, 적용해놓은 맵핑을 선택해서 Delete하면 됩니다.

F15

F15는 키 코드만 정의되어 있지, 이 키를 실제로 처리하는 프로그램은 거의 없습니다. 따라서 F15키를 누른다고 해서 별일이 일어나지는 않습니다. 이제 우리의 CapsLock키는 F15키가 되었으니, 우리는 앞으로 CapsLock키를 사용할 수 없습니다. (자주는 아니지만, CapsLock키를 써야한다면 대안으로 키보드 우측에 있는 App키(우클릭 메뉴를 표시해주는)를 CapsLock으로 바꿔놔도 됩니다.)

이제 F15키를 Ctrl, Shift, Alt와 같은 모디키(modifier key)처럼 작동하도록 사용하려고 합니다.AHK에는 특정한 키가 단독으로 눌려졌을 때에는 다른 기능을 하지 않고 다른 키와 조합했을 때에만 핫키로 인식되도록하는 ‘커스텀 조합’이라는 기능이 있습니다. 이 기능을 사용해서 저는 다음과 같은 키 조합을 만들고자 합니다.

  • F15 + Space >> 한/영 전환
  • F15 + Enter >> 한자
  • F15 + i,j,k,l >> 화살표 이동
  • F15 + [, ] >> Home, End

커스텀 조합은 두 키 사이에 & 기호를 쓰는 것으로 표현합니다. 이 때 연산자의 앞쪽에 있는 키를 1차키, 뒤쪽에 있는 키를 2차키라고 합니다.

일반적인 단축키 조합은 모디키(Ctrl, Shif, Alt, LWin/RWin)와 단일 키의 조합으로 만들어집니다. 표준 모디키들은 처음부터 이런 방식으로 사용되는 것을 염두에 두고 설계되어 있기 때문에, 모디키를 누르는 즉시 어떤 효과가 발생하지는 않습니다.

모디키가 아닌 두 키의 조합으로 만들어지는 커스텀 조합은 두 키 사이에 “&”를 써서 정의할 수 있습니다. 커스텀 조합키는 1차 키가 평소와 같이 쓰이지 않는 것을 의도하여 만들어졌기 때문에, 다음과 같은 특별한 동작을 합니다.

  • 1차키(prefix)는 원래의 기능을 잃어버리게 됩니다. 단 표준 모디키나 CapsLock과 같은 토글 가능한 키는 고유기능을 잃지 않습니다. (한/영키도 여기에 포함됩니다.)
  • 만약 1차키가 다른 핫키에서 2차키로 쓰인다면, 핫키는 이 키가 릴리즈 되는 시점에 발동됩니다. 하지만 사용자 정의 조합을 활성화하는데 사용된 경우에는 발동하지 않습니다. 만약 down 단축키와 up 단축키가 모두 정의되어 있는 경우에는 두 단축키가 동시에 실행됩니다.

즉, 사용자 정의 조합에서 1차 키로 사용된 경우에는 원래의 기능을 잃지만, 이 키가 사용자 정의 조합을 완성하지 못하고 릴리즈되는 시점에는 키에 할당된 다른 핫키를 호출하게 됩니다. 따라서 먼저 눌려진채로 다른 키를 누를 때에는 조합키로 사용되고, 단독으로만 누를 때에는 원래 기능을 수행할 수 있도록 할 수 있습니다.

Numpad0 & NumpadDot::WinMaximize("A")
Numpad0::Send("{Numpad0}")

이는 마치 VIA에서 LT(…) 설정에 대응하는 것처럼 사용할 수 있습니다. 사실 무선 키보드에서는 VIA를 지원한다고 광고는 하고 있지만, 아직까지 블루투스 무선 키보드에서 VIA 기능을 100% 지원하는 키보드가 있는지는 모르겠네요. (키크론 키보드들에서도 LM/LT 는 지원을 안하는 것으로 알고 있습니다.) LM, LT 와 같은 기능이 키보드의 체결과 릴리즈 타이밍과 밀접하게 관련이 있다보니, 입력과 입력 사이의 시간이 무선 연결 환경에서는 수십ms 범위에서는 지연이 발생할 수 있어서 제대로 지원이 어렵지 않나 추측만 해봅니다.

; ijkl로 방향키 대체 등
F15 & h::Send("{Left}")
F15 & j::Send("{Down}")
F15 & k::Send("{Up}")
F15 & l::Send("{Right}")
F15 & [::Send("{Home}")
F15 & ]::Send("{End}")
F15 & i::Send("{Pgup}")
F15 & o::Send("{Pgdn}")

F15 & o::Send("{Pgdn}")
F15 & ,::Send("∘")
F15 & .::Send("▪")
F15 & /::Send("{Volume_Mute}")
F15 & Enter::Send("{SC1F1}")
F15 & '::Send("``")
F15 & Space::Send("{SC1F2}")

이렇게하면 캡스락을 단독으로는 사용하지 않는 대신 추가적인 모디키처럼 사용할 수 있게 됩니다. 특히 저는 스페이스바 오른쪽으로 달려 있는 키들은 Fn키를 포함해서 잘 누르지 않습니다. 대신에 이러한 설정을 통해서 마치 제2의 fn 키처럼 사용할 수 있습니다. 특히 hjkl 이동이나 home / end 키를 손을 떼지 않고 타자하던 상태에서 바로바로 입력할 수 있는 점은 무척 편하고 좋습니다.

  • 장점 :
    • Send() 함수로는 실제 키 문자/이름 외에 보내고 싶은 문자를 넣어서 특수 문자를 빠르게 입력할 수 있다.
    • 모든 종류의 키보드에서 사용이 가능하다.
    • 설정을 잘 이용하면 LT레이어 기능도 구현할 수 있다.
  • 단점:
    • AHK를 관리자 권한으로 실행하지 않으면, 관리자 권한으로 실행된 앱에서는 핫키가 작동하지 않는다.
    • 사용자 정의 조합은 3개 이상의 키 조합을 허용하지 않는다. (ctrl + caplock + ] 으로 라인의 끝까지 텍스트를 선택할 수 없음)

CapsLock키는 워낙 사용하기 좋은 자리에 있기 때문에 이 키를 리맵핑하고 AHK를 통해 활용하면 키보드 사용의 효율성을 크게 높일 수 있습니다. 특히 프로그래밍이나 문서 작업을 많이하는 경우 매우 유용한 방법입니다. 이 팁을 시도해보고 자신만의 편리한 단축키 세트를 만들어보는 것을 추천합니다.

댓글 남기기