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. 참고