잡동사니 보석함

Mac & MacBook

Karabiner-Elements 활용: 단축키로 앱 실행하기

2020. 11. 19.

※ Karabiner-Elements의 기본적인 소개는 이전글을 참고해주세요.

Karabiner-Elements는 키보드의 각 키에 다른 키나 이벤트를 매핑해주는 키보드 커스터마이징 툴입니다. 기본적으로 제공하는 규칙만 사용해도 유용하지만, 스스로 규칙을 만들거나 서비스와 함께 사용하면 활용 범위가 더욱 넓어집니다.

이 글에서는 Control키를 누르면 지정 앱인 노션이 실행되는 규칙을 만들면서, 직접 JSON을 작성하거나 오토메이터로 만든 서비스에 연결하는 방법을 살펴보겠습니다.

Complex Modifications과 JSON

컨트롤 키를 눌렀을 때 특정 앱이 실행되게 하는 가장 간단한 방법은, 다음처럼 Complex Modifications에서 바로 셸 커맨드(shell command)를 사용하는 방법입니다.

{
    "title": "To launch Notion",
    "rules": [
        {
            "description": "Ctrl to launch Notion",
            "manipulators": [
                {
                    "type": "basic",
                    "from": {
                        "key_code": "right_control"
                    },
                    "to": [
                        {
                            "shell_command": "open -a 'Notion.app'"
                        }
                    ]
                }
            ]
        }
    ]
}

JSON 특징상 난잡해 보이지만, 실제 내용은 별 것 없습니다. 위에서부터 규칙 제목과 설명, 타입, 그리고 입력키는 오른쪽 컨트롤, 해당키가 눌렸을 때 할 일은 노션을 여는 셸 커맨드를 수행하는 것입니다.

이렇게 만든 JSON 파일을 ~/.config/karabiner/assets/complex_modifications 폴더에 넣고, 규칙을 활성화하면 끝입니다. 참고로 해당 폴더는 카라비너의 Misc 탭 하단에 있는 Open config folder 버튼으로도 접근할 수 있습니다.

간단한 예를 사용했지만, 실제로는 지원하는 옵션이 훨씬 다양합니다.

해당 키가 눌렸을 때를 의미하는 'to' 옵션 외에, 해당 키가 단독으로 눌렸을 때(to_if_alone), 해당 키를 길게 눌렀을 때(to_if_held_down), 해당 키를 눌렀다 땠을 때(to_after_key_up) 같은 옵션도 사용할 수 있습니다. 각 옵션마다 다른 기능을 지정할 수도 있고, 타임아웃 시간도 지정할 수 있습니다. 해당 키를 누르고 0.5초 후(to_delayed_action)에 발생하는 딜레이 액션은 invoked나 canceled 같은 세부 옵션도 함께 제공합니다.

입력키인 from에도 키 입력 순서(key_down_order) 등 여러가지 옵션이 있고, 특정 앱이 가장 앞에 있을 때(frontmost_application_if)나 특정 인풋 소스일 때(input_source_if) 등 조건을 만족했을 때만 실행되도록 conditions 옵션을 추가할 수도 있습니다.

다큐멘테이션에 예제까지 잘 갖추어져 있으니, 이를 참고하면 큰 문제 없이 활용할 수 있을겁니다.

서비스에 연결하기

셸 커맨드를 이용하지 않고, 서비스를 이용하는 방식으로 돌아갈 수도 있습니다. 오터메이터로 원하는 서비스를 만들고, 해당 서비스를 실행하는 단축키를 할당하는 형태입니다. 간단한 작업은 셸 커맨드로 만드는게 편하지만, 입력값을 활용하거나 여러 액션을 순차적으로 처리하는 등 오토메이터로 만드는게 편한 작업도 있습니다. 상황에 맞게 사용하면 될 것 같습니다.

맥의 서비스에는 기본적으로 단축키를 설정할 수 있으니 카라비너를 꼭 이용할 필요는 없습니다. 다만, 서비스 단축키는 반드시 Command를 포함해야 하다보니 다른 단축키와 겹쳐서 정리하기 힘든 일도 종종 발생하는데요. 카라비너와 안 쓰는 펑션키를 이용하면 좀 더 쉽게 단축키를 관리할 수 있습니다.

Complex Modification 추가

앞에서 본 JSON과 크게 다르지 않습니다. 매핑할 내용이 셸 커맨드에서 Command + F14로 바뀐게 전부입니다.

{
    "title": "For Service Shortcut",
    "rules": [
        {
            "description": "Change Ctrl to command+F14",
            "manipulators": [
                {
                    "type": "basic",
                    "from": {
                        "key_code": "right_control"
                    },
                    "to": [
                        {
                            "key_code": "f14",
                            "modifiers": [
                            	"left_command"
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

오토메이터로 서비스 만들기

오토메이터로 서비스를 만드는 부분은 간략하게 흐름만 정리하겠습니다. 할 수 있는 일이 워낙 다양해서 앞에서처럼 이런 옵션이 있다고 나열하기도 애매하네요.

오토메이터를 실행하고, 새로운 문서 - 빠른 동작을 만듭니다. 작업흐름 수신은 입력 없음으로, 선택 항목 위치는 모든 응용 프로그램으로 설정합니다. 화면 좌측 동작 보관함에서 [응용 프로그램 실행]을 찾아 우측 작업흐름에 추가한 후, 실행할 응용 프로그램으로 노션을 지정합니다. 원하는 이름으로 저장하면 끝입니다. 전 Launch Notion이라는 이름으로 저장했고, 정리해보자면 아래 스크린샷처럼 되겠습니다.

단축키 할당하기

이제 작성한 서비스에 단축키를 할당하면 됩니다. 환경설정의 키보드 - 단축키에서 서비스를 보면, 일반 카테고리에 보면 앞서 작성한 Launch Notion 서비스가 있습니다. 해당 항목을 클릭하면 단축키를 입력할 수 있고, 우측 컨트롤 키를 누르면 카라비너에서 설정한 Command + F14가 입력됩니다.

간단하죠? 다만, 이렇게 만든 서비스는 '모든 응용프로그램'에서만 작동합니다. 좀 이상하게 들리나요? 말인 즉슨, 응용 프로그램이 아닌 곳에서는 해당 단축키가 작동하지 않는다는 뜻입니다. 파인더나 환경설정 등 응용 어플리케이션으로 분류되지 않는 창에서 작업 중이라면, 컨트롤 키를 눌러도 노션이 실행되지 않습니다.

참고 문서

  1. Karabiner-Elements Documentation : karabiner-elements.pqrs.org/docs/
1 2 3 4 5 6 7 ··· 9