거의 비슷한 기능을 하는 앱인데도 서로 다른 키 조합을 사용해야 한다면 참 짜증나지 않나요? 더 심각한 문제는, 어떤 프로그램은 난해한 키보드 단축키를 고집하면서도 이를 재설정(리맵핑)할 옵션조차 제공하지 않는다는 점입니다. 모든 애플리케이션에서 키보드가 작동하는 방식을 내 마음대로 완전히 제어할 수 있다면 얼마나 좋을까요? AutoHotkey를 사용하면 그것이 가능합니다.
AutoHotkey를 활용하면 키보드 전체를 다시 매핑하거나 사용자 지정 단축키를 만들 수 있으며, '전역' 설정과 앱별 개별 설정 모두 가능합니다. 원한다면 앱마다 서로 다른 텍스트 문자열이나 심지어 전체 템플릿까지 동일한 키 조합에 연결할 수도 있습니다. 필요한 것은 AutoHotkey와 메모장 같은 텍스트 편집기뿐입니다. 흥미로우신가요? 그럼 바로 시작해 보겠습니다.
AutoHotkey Window Spy 시작하기
요즘 많은 키보드가 자체 소프트웨어로 사용자 지정 단축키와 매크로를 만들 수 있게 해줍니다. 하지만 AutoHotkey는 특정 키보드에 종속되지 않기 때문에 훨씬 더 유연합니다.
AutoHotkey를 사용하면 '키보드 커스터마이징'이 특정 키보드에 묶이지 않습니다. 작성해 둔 스크립트 파일만 다른 컴퓨터로 가져가면, 앱별 단축키와 숏코드를 금세 그대로 사용할 수 있습니다.
이 글은 바로 실전으로 들어가므로, AutoHotkey에 대한 기본적인 소개가 필요하다면 초보자용 AutoHotkey 가이드를 먼저 확인해 보는 것도 좋습니다.
먼저 AutoHotkey 공식 사이트에서 프로그램을 다운로드하고, 일반 앱처럼 설치합니다. 설치 후 굳이 실행할 필요는 없습니다. AutoHotkey용으로 만든 스크립트를 실행하면 자동으로 함께 작동하기 때문입니다. 그럼 스크립트를 하나 만들어 보겠습니다.
AutoHotkey 설치 후, 데스크톱이나 스크립트를 만들고 싶은 폴더의 빈 곳에서 마우스 오른쪽 버튼을 클릭하고 새로 만들기 > AutoHotkey Script를 선택합니다. 스크립트 이름을 정하고 Enter를 누르면 됩니다.
AutoHotkey로는 어디서든 작동하는 '전역' 단축키와, 특정 앱 창이 활성화된 상태에서만 작동하는 앱 전용 단축키를 모두 만들 수 있습니다. 특정 앱을 '타깃팅'하려면 스크립트 안에서 해당 앱을 식별해야 하는데, 이때 AutoHotkey의 Window Spy 기능이 큰 도움이 됩니다.
비어 있는 상태의 스크립트 파일을 두 번 클릭해 실행하면 AutoHotkey도 함께 실행됩니다. Windows 트레이의 AutoHotkey 아이콘을 오른쪽 클릭하고 팝업 메뉴에서 Window Spy를 선택하세요.
앱을 타깃팅하는 데 필요한 식별자를 찾으려면 Window Spy를 화면에 띄워 둔 상태에서 해당 앱의 창을 클릭합니다. 그러면 Window Spy 창 상단에 ahk_class, ahk_exe, ahk_pid 항목이 표시됩니다. 이 글에서는 인기 노트 앱인 Obsidian을 타깃으로 삼았습니다. 다른 프로그램도 비슷한 ahk_class나 ahk_pid 값을 가질 수 있으므로, Window Spy에 표시된 대로 실행 파일을 기준으로 ahk_exe Obsidian.exe를 타깃으로 지정했습니다.
타깃을 파악했다면 이제 스크립트를 작성할 차례입니다.
AutoHotkey 스크립트 작성하기
스크립트 파일을 오른쪽 클릭하고 Edit Script를 선택하면 기본 텍스트 편집기에서 열립니다. 파일에는 호환성과 성능을 돕는 몇 가지 기본 값이 미리 들어 있지만 무시해도 괜찮습니다. 한두 줄 띄운 뒤 다음 구문으로 앱을 타깃팅합니다:
#IfWinActive APP_IDENTIFIER
APP_IDENTIFIER 부분을 Window Spy에서 복사한 실제 타깃 값으로 바꾸면 됩니다. 이 글의 예제라면 다음과 같습니다:
#IfWinActive ahk_exe Obsidian.exe
AutoHotkey 스크립트를 작성할 때 키보드의 수정자 키는 다음 기호로 표현합니다:
- ! : Alt
- + : Shift
- ^ : Ctrl
- # : Windows 키
본격적인 단축키를 만들기 전에, 선택한 앱이 활성화되어 있을 때만 스크립트가 작동하는지 먼저 테스트해 보세요. 가장 간단한 방법은 AutoHotkey의 '메시지 박스(msgbox)'를 이용하는 것입니다.
앱을 타깃팅한 줄 바로 아래에 다음 코드를 입력합니다:
^a::
msgbox it works!
return
이 코드를 일반 언어로 풀어 쓰면 다음과 같습니다:
- 키보드에서 Ctrl + A를 함께 누르면...
- ... 화면에 "it works!"라는 메시지 박스가 나타납니다.
- 사용자가 메시지 박스를 확인하면 이전 상태로 돌아갑니다.
스크립트를 실행한 뒤 Ctrl + A를 눌러 보세요. 아무 일도 일어나지 않아야 정상입니다. 특정 앱을 타깃으로 지정했지만 아직 그 앱으로 전환하지 않았기 때문입니다. 이제 해당 앱 창을 활성화한 상태에서 같은 조합을 누르면 "it works"라는 메시지 박스가 나타날 것입니다.
이번에는 다른 앱으로 전환한 후 같은 키 조합을 다시 눌러 보세요. 역시 아무 일도 일어나지 않아야 합니다. 그렇다면 msgbox가 타깃 앱에서만 작동한다는 뜻이며, 이것이 바로 우리가 원하는 결과입니다.
만약 단축키가 다른 앱으로 '새어 나간다면', 구문을 다시 확인하고 타깃 지정에 오타가 없는지 점검하세요.
앱별 맞춤 키보드 프로필 만들기
AutoHotkey를 사용하면 키보드의 각 키가 하는 일을 개별적으로 또는 조합으로 손쉽게 재정의할 수 있습니다. 예를 들어 A 키와 B 키를 서로 바꾸고 싶다면 AutoHotkey 문법으로 이렇게 표현합니다:
a::b
b::a
하지만 대부분의 경우 개별 키를 바꾸기보다는, 하나 이상의 수정자 키가 포함된 여러 키 조합에 특정 동작을 할당하고 싶을 것입니다.
앞선 예제를 확장해, Ctrl+A를 누르면 B가 입력되고 반대로 Ctrl+B를 누르면 A가 입력되게 하려면 다음과 같이 작성합니다:
^a::b
^b::a
물론 이것은 단순한 예시일 뿐입니다. 실제로 여러 키를 눌러 문자 하나를 입력하는 것은 생산성에 전혀 도움이 되지 않습니다. 반면, 키 조합에 텍스트 문자열을 할당하면 텍스트 입력 속도를 크게 높일 수 있습니다. 키 조합을 누를 때 이름, 이메일 주소 등 원하는 텍스트가 입력되게 하려면 AutoHotkey의 'send' 명령을 사용하세요. 이 명령은 이름 그대로 뒤따르는 문자열을 활성 창으로 '보내달라'고 AutoHotkey에 지시합니다. 실제 예는 다음과 같습니다:
^+O::
send Odysseas
return
위 스크립트의 의미는 다음과 같습니다:
- Shift + Ctrl + O를 동시에 누르면 무언가를 수행하라고 AutoHotkey에 지시합니다.
- 그 '무언가'란 활성 창에 "Odysseas"라는 문자열을 보내는 것입니다.
- 마지막 'return'은 "여기까지 하면 충분합니다, 고마워요 AutoHotkey!"라는 의미입니다.
다양한 키 조합과 텍스트 문자열을 자유롭게 실험해 보세요. 하나의 스크립트에 여러 규칙을 함께 넣을 수도 있습니다.
키 조합으로 텍스트를 입력하는 방식은 이름이나 이메일 주소를 즉석에서 입력할 때 유용합니다. 하지만 일반적인 타이핑 과정에서는 직관적이지 않으며, 시간이 지나면 수십 개의 단축키가 각각 무슨 일을 하는지 추적하기 어려워집니다. 이럴 때 텍스트 확장(text expansion)이 큰 도움이 됩니다.
특정 키 조합에 텍스트를 매핑하는 대신, AutoHotkey에서는 짧은 숏코드(shortcode)를 정의할 수 있습니다. 그러면 해당 숏코드를 입력하는 순간 자동으로 더 긴 텍스트로 교체됩니다. 아주 간단합니다:
:*:MUO~::Make Use Of
- 줄 맨 앞의 ":*:"는 이것이 텍스트 확장 규칙임을 나타냅니다.
- 그다음은 숏코드입니다. 여기서는 "MUO~"입니다.
- 단축키와 마찬가지로 "::"는 이 상황에서 "="와 논리적으로 같은 역할을 합니다.
- 마지막 요소는 "MUO~"를 교체할 실제 텍스트 문자열입니다.
이 규칙을 적용하면 타깃 앱에서 MUO~를 입력할 때마다 AHK가 이를 감지해 Make Use Of로 자동 교체합니다.
한 앱에 대한 규칙 정의를 마쳤다면, 정확히 같은 방식으로 다른 앱도 타깃팅할 수 있습니다. "#IfWinActive APP_IDENTIFIER" 구문을 다시 사용해 다른 앱의 창을 지정하고, 그 아래에 해당 앱용 규칙을 입력하면 됩니다.
원하는 만큼 반복해서 앱별 단축키·숏코드 프로필을 만들어 보세요.
AutoHotkey 스크립트는 본질적으로 텍스트 파일이라는 점을 활용하면 좋은 아이디어가 있습니다. 다른 사람의 스크립트를 내 스크립트에 통합하고 앱 전용으로 만드는 것입니다. 멋진 AutoHotkey 스크립트 목록에서 마음에 드는 것을 골라 단독으로 실행하지 말고, 텍스트 편집기로 열어 내용을 복사한 뒤 내 스크립트의 앱 타깃팅 섹션 아래에 붙여넣으세요. 저장 후 스크립트를 다시 실행하면, 타깃 앱이 활성화되어 있을 때 해당 기능들이 내 스크립트의 일부로 작동할 것입니다.
AutoHotkey로 키보드를 스마트하게
시간이 지나면 알게 되겠지만, 이런 스크립트 작성은 일회성 작업이 아니라 지속적인 과정입니다. 요구 사항과 소프트웨어 사용 방식이 변하면 스크립트도 함께 진화해야 합니다.
스크립트를 계속 확장하고 다듬다 보면, 어느새 드라마 속 해커처럼 느껴질지도 모릅니다. 본인만 아는 몇 개의 키와 난해한 조합만 누르면, 마법처럼 화면에 텍스트가 가득 나타나는 경험을 할 수 있으니까요.