[8] Karabiner-Elements로 CapsLock키 무한 활용하기

SeoChanhee·2020년 10월 14일
0

코딩을 하다 보면 방향키를 써야 할 일이 많이 있다. 그런데 내 맥북 방향키는 왜 이렇게 생겨 먹었는지 사용이 정말 불편하다. 애초에 방향키까지 손을 가져가는 것도 비효율적인 것 같아서 Vim을 사용해보려고 했지만, 한글의 사용이 많다 보니 계속 버벅대게 되고 오히려 사용이 번거로웠다. 그러다 찾게 된 Karabiner의 Hyper. CapsLock키를 누르면 Shift, Control, Option, Command 키를 모두 누른 것으로 인식시키는 것이다. 이제 CapsLock키와 다른 키들의 조합으로 방향키 사용은 물론 다양한 활용이 가능해졌다.

처음에는 Hyper키를 이용해서 Vim 모드를 완벽하게 구현하고 싶어서 엄청 많은 시간을 소요했다. 결국 구현에 실패했지만, Karabiner Elements의 JSON 파일을 읽는 데에 익숙해졌다는 것에 만족하려고 한다. 실패 원인은 크게 2가지이다.

  1. CapsLock + o를 활용해서 Command + enter가 구현되지 않아서 정말 애를 먹었다. 아마 o키에 기본 설정이나 Karabiner로 단축키가 이미 지정되어 있지 않았을까 싶다. 이처럼 나는 중복되는 키 조합까지 찾아내기에는 너무 미숙했다.
  2. 애초에 Vim 모드를 Hyper키로 똑같이 구현하는 건 불가능했다. ESC를 눌러 모드에 진입하는 것과 CapsLock키를 누르며 사용하는 것은 작동 원리가 너무 달랐다. 다만 나중에 Vim 모드를 쓰게 될 때를 대비해서 Vim의 단축키들을 숙지해놓고 싶어서 욕심을 좀 부려봤던 것이다.

Karabiner JSON

예를 통해 JSON 파일을 읽는 법을 대충 정리해보려고 한다. 하단의 예는 전에 수정했던 Hyper키를 사용하는 'complex-modifications rules'이다.

{
  "title": "CAPS_LOCK to Hyper, Hyper Vim Map",
  "rules": [
    {
      "description": "CAPS_LOCK to HYPER or caps_lock (If Alone)",
      "manipulators": [
        {
          "from": {
            "key_code": "caps_lock",
            "modifiers": {
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_shift",
              "modifiers": [
                "left_command",
                "left_control",
                "left_option"
              ]
            }
          ],
          "to_if_alone": [
            {
              "key_code": "f9"
            }
          ],
          "type": "basic"
        }
      ]
    }
  ]
}
  • 전체 내용 설명
    • title: 말 그대로 제목이다. 모든 내용을 아우르는 제목을 쓰여 있다.
    • title 외에 다른 설명 내용을 추가하기도 한다. (author, manual 등)
  • complex-modifications 규칙
    • rules: 영역 내부에 complex-modifications 규칙들이 작성되어 있다.
    • descriptions: JSON에서 규칙을 쪼개서 관리할 수 있는데 descriptions는 쪼갠 규칙의 제목이라고 볼 수 있다. 보통 용도에 따라 쪼개서 관리된다. Karabiner에 적용할 때, 쪼갠 단위로 규칙을 넣거나 뺄 수 있어서 편리하다.
  • manipulators
    • manipulators: 영역 내부에 단축키 규칙들이 작성되어 있다.
    • from: '이 키를 눌렀을 때'를 나타낸다. modifiers는 조합키를 나타낸다. modiriers에 지정한 조합키를 누른 상태로 key_code의 키를 누르면 to의 내용이 실행된다.
    • to: '이 키가 실행된다'를 나타낸다. 위 예시는 caps_lock키를 hyper 키로 만든 것이다.
    • to_if_alone: '혼자 눌렸을 때'를 나타낸다. 위 예시는 caps_lock 키를 단독으로 누르면 F9 키가 실행되도록 지정한 것이다.
    • 누르고 있는 시간을 조절하는 등의 더 다양한 기능이 존재하지만 자주 쓰이지는 않는다.

읽는 법을 대충 알고 있으면 같은 원리를 사용해 수정도 가능하다. 키 코드를 작성할 때는 'Karabiner Keycode List'를 보고 정확한 키 코드를 입력해주어야 한다.

참고: CAPS_LOCK to Hyper/Escape, Hyper + i/j/k/l Vim navigation and others. - Karabiner-Elements complex_modifications rules, Karabiner Keycode List

Complex-Modifications Rules

Karabiner-Elements complex_modifications rules 사이트에서 정말 다양한 키 조합 규칙을 받아서 사용할 수 있으며 나는 그중에 마우스 4,5번 버튼 사용 규칙CapsLock 키 사용 규칙을 사용 중이다.
이 중에 'CapsLock 키 사용 규칙'에 대해 살펴보려고 한다.

장점

  1. CapsLock 키를 정말 엄청나게 활용할 수 있도록 만들어놓았고 깔끔하게 정리되어 있다. 방향키는 물론이고 CapsLock 키와 Option 키를 같이 누르면 마우스를 조종할 수 있는 기능도 있다. Window 컨트롤키, Fn 키로도 사용이 가능하게 하기도 하고 응용 프로그램을 여는 단축키로도 사용한다. 정말 무한 활용이다.
  2. Hyper 키를 만들 때 왼쪽에 있는 조합키가 아니라 오른쪽에 있는 조합키들을 사용하여 더 실용적이다. 이렇게 사용했으면 Hyper키를 이용해 Vim을 구현하는 데에 좀 더 편했을지도 모르겠다.
  3. 대충 JSON 파일을 보고 이해했지만 JSON 파일을 보지 않아도 될 정도로 사이트에 설명이 자세하게 나와 있다. 워낙 단축키가 많아서 보면서 익혀야 할 것 같다.
  4. CapsLock + Shift를 누르는 게 불편한 걸 알고 CapsLock + Command로 커서 선택을 가능하게 했다. 많은 고민 끝에 만들어진 규칙이라는 생각이 든다.

단점

  1. 방향키를 제외하고는 Vim 명령어와 전혀 연관이 없다. 어느 정도는 수긍하며 쓰기로 했다.
  2. 거의 모든 키가 CapsLock 키와 조합을 이룰 정도로 키가 매칭이 되어 있다. 현재 나에게는 필요하지 않은 Bash 컨트롤 키도 존재한다. 나중에 필요에 따라 수정해서 쓸 계획이다.
  3. 너무 많은 걸 바라는 것일 수도 있지만 마우스 조종 시 스크롤 동작은 없다. 전에 쓰던 마우스를 키로 조작하는 규칙에서는 스크롤 조작도 가능했다. 나중에 필요에 따라 추가해보는 것도 고려해봐야겠다.
  4. Vim 모드에서는 ew 키로 사용하는 단어 건너뛰기 키가 없다. Bash 컨트롤은 사용하지 않을 것 같으니 이 키들을 바꿔서 사용하는 것도 생각해봐야겠다.

수정해서 쓰는 키 조합

  1. CapsLock 키만 눌렀을 때 ESC를 누른 것으로 지정이 되어있었지만 나는 한/영 키로 바꿔서 사용 중이다. 전에 한/영 키 반응 속도를 개선하는 방법을 적용해서 escape 키를 f9 키로만 바꿔주면 되었다. (참고: 맥 한영 전환 속도 개선하기 (capslock 사용) - 쾌락코딩)
  2. 대신 ESC 키는 Hyper + Q에 지정했다. 원래 이 키는 종료 키로 지정되어 있었지만 나는 Command + Q면 충분하다.
  3. Hyper + semicolon 조합을 Command + 우측 방향키로 변경했다. 문장의 맨 끝으로 갈 때 사용하는데 키의 조합이 직관적이라 좋다.


마침

맥북을 효율적으로 사용하기 위한, 코딩을 효율적으로 하기 위한 방법들을 찾고 사용하다 보면 내가 너무 효율을 좇아 비효율적인 일을 하고 있나 하는 생각이 든다. 그래도 내가 아주 좋아하는 일이다. 언젠가 도움이 될 거라는 믿음을 가져본다. 다만 할 일이 있는데 목적을 잊고 시간을 너무 지체시키는 효율적인 방법을 찾는 일은 조심해야겠다.

더 공부할 내용

  1. 지정된 단축키 익혀가며 사용하기 (CapsLock Enhancement)
  2. Bash 컨트롤 써보고 안 쓸 것 같으면 '단어 건너뛰기 키' 만들기
  3. 필요하면 '마우스 스크롤 키'도 만들기


출처: CapsLock Enhancement - Karabiner-Elements complex_modifications rules

0개의 댓글