1. Background
macOS 의 시스템 전역 단축키(Spotlight 호출, 입력 소스 전환, 스크린샷 등)는 ~/Library/Preferences/com.apple.symbolichotkeys.plist 에 저장된다.
시스템 설정 > 키보드 > 단축키 UI 는 일부 조합만 등록을 허용한다. 예를 들어 입력 소스 전환에 Shift + Space 를 바인딩하려고 하면 UI 에서는 Shift 하나만 받아들이지 못하거나 해당 조합이 아예 선택되지 않는다. 이 경우 plist 를 직접 편집하면 UI 가 막아둔 조합도 바인딩할 수 있다.
2. 파일 구조
AppleSymbolicHotKeys 딕셔너리 안에 단축키 번호(숫자 키)별로 enabled / value 쌍이 들어있다.
<dict>
<key>AppleSymbolicHotKeys</key>
<dict>
<key>60</key>
<dict>
<key>enabled</key> <true/>
<key>value</key>
<dict>
<key>parameters</key>
<array>
<integer>32</integer> <!-- ASCII -->
<integer>49</integer> <!-- Virtual keycode -->
<integer>131072</integer> <!-- Modifier mask -->
</array>
<key>type</key>
<string>standard</string>
</dict>
</dict>
...
</dict>
</dict>
2.1 주요 key 번호
| Key | 동작 |
|---|---|
| 60 | 이전 입력 소스로 전환 (Select the previous input source) |
| 61 | 다음 입력 소스로 전환 (Select next source in Input menu) |
| 64 | Spotlight 검색창 표시 |
| 28 | 화면 전체 스크린샷 |
| 30 | 영역 스크린샷 |
입력 소스가 2 개(예: ABC + 한글) 뿐이면 60 과 61 은 기능적으로 같다. 둘 다 같은 단축키에 바인딩하면 충돌하므로 한 쪽은 반드시
enabled = false로 꺼야 한다.
2.2 parameters 배열 (3 개 정수)
| Index | 의미 | 비고 |
|---|---|---|
| 0 | ASCII 코드 | Space = 32, 글자 키는 해당 ASCII |
| 1 | 가상 키코드 (HIToolbox) | Space = 49 |
| 2 | Modifier 비트마스크 | 아래 표 참조 |
2.3 Modifier 비트마스크
| Modifier | Hex | Decimal |
|---|---|---|
| Caps Lock | 0x010000 |
65536 |
| Shift | 0x020000 |
131072 |
| Control | 0x040000 |
262144 |
| Option (Alt) | 0x080000 |
524288 |
| Command | 0x100000 |
1048576 |
| Fn | 0x800000 |
8388608 |
여러 modifier 조합은 OR 합으로 표현한다. 예: Shift + Cmd = 131072 + 1048576 = 1179648.
3. 편집 절차
plist 는 기본적으로 바이너리 포맷이므로 plutil 로 XML 변환 후 편집한다.
# 1) XML 로 변환
plutil -convert xml1 ~/Library/Preferences/com.apple.symbolichotkeys.plist
# 2) 편집
nvim ~/Library/Preferences/com.apple.symbolichotkeys.plist
# 3) (선택) 다시 바이너리로
plutil -convert binary1 ~/Library/Preferences/com.apple.symbolichotkeys.plist
macOS 는 두 포맷 모두 읽으므로 3 단계는 생략 가능.
3.1 반영 방법
cfprefsd가 plist 를 캐싱하므로 단순 저장만으로는 즉시 반영되지 않는다.- 재부팅이 가장 확실한 방법이다.
- 로그아웃/재로그인 또는
killall cfprefsd로 반영되는 경우도 있으나 일부 항목은 재부팅이 필요하다.
3.2 주의
- 편집 전 백업:
cp ~/Library/Preferences/com.apple.symbolichotkeys.plist{,.bak} - 잘못 편집해 충돌이 나면 UI 에서 변경이 먹히지 않거나 로그인 이후 파일이 초기화될 수 있다.
4. 참고
- Apple 공식 문서에는 key 번호 목록이 공개되어 있지 않다. 커뮤니티(
gist, StackExchange)에 정리된 역공학 결과를 참조한다. - 원문 블로그: Mac OS Tahoe에서 Shift+Space로 언어 변경 설정하기