코딩을 하다 보면 방향키를 써야 할 일이 많이 있다. 그런데 내 맥북 방향키는 왜 이렇게 생겨 먹었는지 사용이 정말 불편하다. 애초에 방향키까지 손을 가져가는 것도 비효율적인 것 같아서 Vim을 사용해보려고 했지만, 한글의 사용이 많다 보니 계속 버벅대게 되고 오히려 사용이 번거로웠다. 그러다 찾게 된 Karabiner의 Hyper
키. CapsLock
키를 누르면 Shift
, Control
, Option
, Command
키를 모두 누른 것으로 인식시키는 것이다. 이제 CapsLock
키와 다른 키들의 조합으로 방향키 사용은 물론 다양한 활용이 가능해졌다.
처음에는 Hyper
키를 이용해서 Vim 모드를 완벽하게 구현하고 싶어서 엄청 많은 시간을 소요했다. 결국 구현에 실패했지만, Karabiner Elements의 JSON
파일을 읽는 데에 익숙해졌다는 것에 만족하려고 한다. 실패 원인은 크게 2가지이다.
CapsLock
+ o
를 활용해서 Command
+ enter
가 구현되지 않아서 정말 애를 먹었다. 아마 o
키에 기본 설정이나 Karabiner로 단축키가 이미 지정되어 있지 않았을까 싶다. 이처럼 나는 중복되는 키 조합까지 찾아내기에는 너무 미숙했다.Hyper
키로 똑같이 구현하는 건 불가능했다. ESC
를 눌러 모드에 진입하는 것과 CapsLock
키를 누르며 사용하는 것은 작동 원리가 너무 달랐다. 다만 나중에 Vim 모드를 쓰게 될 때를 대비해서 Vim의 단축키들을 숙지해놓고 싶어서 욕심을 좀 부려봤던 것이다.예를 통해 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
등)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'를 보고 정확한 키 코드를 입력해주어야 한다.
Karabiner-Elements complex_modifications rules 사이트에서 정말 다양한 키 조합 규칙을 받아서 사용할 수 있으며 나는 그중에 마우스 4,5번 버튼 사용 규칙과 CapsLock
키 사용 규칙을 사용 중이다.
이 중에 'CapsLock
키 사용 규칙'에 대해 살펴보려고 한다.
CapsLock
키를 정말 엄청나게 활용할 수 있도록 만들어놓았고 깔끔하게 정리되어 있다. 방향키는 물론이고 CapsLock
키와 Option
키를 같이 누르면 마우스를 조종할 수 있는 기능도 있다. Window 컨트롤키, Fn
키로도 사용이 가능하게 하기도 하고 응용 프로그램을 여는 단축키로도 사용한다. 정말 무한 활용이다.Hyper
키를 만들 때 왼쪽에 있는 조합키가 아니라 오른쪽에 있는 조합키들을 사용하여 더 실용적이다. 이렇게 사용했으면 Hyper
키를 이용해 Vim
을 구현하는 데에 좀 더 편했을지도 모르겠다.JSON
파일을 보고 이해했지만 JSON
파일을 보지 않아도 될 정도로 사이트에 설명이 자세하게 나와 있다. CapsLock + Shift
를 누르는 게 불편한 걸 알고 CapsLock + Command
로 커서 선택을 가능하게 했다. 많은 고민 끝에 만들어진 규칙이라는 생각이 든다.CapsLock
키와 조합을 이룰 정도로 키가 매칭이 되어 있다. 현재 나에게는 필요하지 않은 Bash 컨트롤 키도 존재한다. e
와 w
키로 사용하는 단어 건너뛰기 키가 없다. CapsLock
키만 눌렀을 때 ESC
를 누른 것으로 지정이 되어있었지만 나는 한/영
키로 바꿔서 사용 중이다. 전에 한/영
키 반응 속도를 개선하는 방법을 적용해서 escape
키를 f9
키로만 바꿔주면 되었다. (참고: 맥 한영 전환 속도 개선하기 (capslock 사용) - 쾌락코딩)ESC
키는 Hyper + Q
에 지정했다. 원래 이 키는 종료 키로 지정되어 있었지만 나는 Command + Q
면 충분하다.Hyper + semicolon
조합을 Command + 우측 방향키
로 변경했다. 문장의 맨 끝으로 갈 때 사용하는데 키의 조합이 직관적이라 좋다.맥북을 효율적으로 사용하기 위한, 코딩을 효율적으로 하기 위한 방법들을 찾고 사용하다 보면 내가 너무 효율을 좇아 비효율적인 일을 하고 있나 하는 생각이 든다. 그래도 내가 아주 좋아하는 일이다. 언젠가 도움이 될 거라는 믿음을 가져본다. 다만 할 일이 있는데 목적을 잊고 시간을 너무 지체시키는 효율적인 방법을 찾는 일은 조심해야겠다.
출처: CapsLock Enhancement - Karabiner-Elements complex_modifications rules