맥 한영전환 shift + space 키로 바꾸는 스크립트 (feat. gemini)

맥을 쓰다 보면 가장 많이 불편한 부분 중 하나가 바로 한영 전환 키입니다.
전통적으로는 Shift + Space로 전환할 수 있는데, 맥은 기본적으로 Ctrl + Space라 손에 익지 않죠.

저처럼 컴퓨터를 오래 써온 분들은 이 부분이 정말 불편합니다.
그래서 오늘은 파이썬 스크립트를 이용해서 맥의 입력기 설정을 바꾸고, 한영 전환을 Shift + Space로 변경하는 방법을 소개합니다. 설정 UI에서 바로 되면 좋겠지만 그게 안되니…

준비물

  • macOS
  • 파이썬 3.x (기본 설치되어 있음)
  • 터미널 사용 가능 정도의 간단한 지식

파이썬 스크립트

아래 코드를 실행하면, macOS의 plist 설정이 변경되면서 한영 전환 키가 바뀝니다 👇

import plistlib
import os
import subprocess
from datetime import datetime

# 설정 파일 경로
PLIST_PATH = os.path.expanduser('~/Library/Preferences/com.apple.symbolichotkeys.plist')
# 백업 파일 경로
BACKUP_PATH = f"{PLIST_PATH}.{datetime.now().strftime('%Y%m%d-%H%M%S')}.bak"

# 변경할 단축키 정보
# 60: 입력 메뉴에서 이전 소스 선택
# Key Code 49: Space
# Modifier 131072: Shift
HOTKEY_ID = '60'
HOTKEY_VALUE = {
    'enabled': True,
    'value': {
        'parameters': [32, 49, 131072],
        'type': 'standard'
    }
}

# 충돌 가능성이 있는 단축키 비활성화
# 61: 입력 메뉴에서 다음 소스 선택
CONFLICT_HOTKEY_ID = '61'

def main():
    """
    macOS 한영 전환 단축키를 Shift + Space로 변경하는 스크립트
    """
    print(f"Reading plist file: {PLIST_PATH}")

    # 1. plist 파일 읽기 및 백업
    try:
        with open(PLIST_PATH, 'rb') as fp:
            plist_data = plistlib.load(fp)
        
        print(f"Backing up original file to: {BACKUP_PATH}")
        subprocess.run(['cp', PLIST_PATH, BACKUP_PATH])

    except FileNotFoundError:
        print("plist file not found. Creating a new one.")
        plist_data = {'AppleSymbolicHotKeys': {}}
    except Exception as e:
        print(f"Error reading plist file: {e}")
        return

    # 2. 단축키 설정 수정
    hotkeys = plist_data.get('AppleSymbolicHotKeys', {})
    
    print(f"Setting hotkey '{HOTKEY_ID}' (Select previous source in Input menu) to Shift + Space.")
    hotkeys[HOTKEY_ID] = HOTKEY_VALUE

    if CONFLICT_HOTKEY_ID in hotkeys:
        print(f"Disabling conflicting hotkey '{CONFLICT_HOTKEY_ID}' (Select next source in Input menu).")
        hotkeys[CONFLICT_HOTKEY_ID]['enabled'] = False

    plist_data['AppleSymbolicHotKeys'] = hotkeys

    # 3. 수정된 plist 파일 쓰기
    try:
        with open(PLIST_PATH, 'wb') as fp:
            plistlib.dump(plist_data, fp)
        print("Successfully updated the plist file.")
    except Exception as e:
        print(f"Error writing plist file: {e}")
        return

    # 4. 변경사항 시스템에 적용
    # macOS의 환경설정 캐시(cfprefsd)를 갱신하여 변경사항이 즉시 반영되도록 합니다.
    print("Notifying macOS of preference changes...")
    subprocess.run(['defaults', 'read', 'com.apple.symbolichotkeys'], capture_output=True)

    print("Restarting SystemUIServer to apply changes...")
    subprocess.run(['killall', 'SystemUIServer'])

    print("\nDone! The input source change key has been set to Shift + Space.")
    print("If the change is not applied immediately, please try logging out and back in.")

if __name__ == '__main__':
    main()

사용 방법

  1. 위 코드를 hangul_switch.py 같은 이름으로 저장합니다.
  2. 터미널에서 해당 파일이 있는 폴더로 이동합니다.
    cd ~/scripts
    python3 hangul_switch.py
  3. 실행하면 plist가 수정되어 설정이 반영됩니다.
  4. 로그아웃했다가 다시 로그인해야 새로운 한영 전환 키(Shift + Space)가 정상 작동합니다.

마무리

plist를 직접 수정하는 가이드밖에 검색이 안되어 gemini를 시켜서 한번 만들어 봤습니다. 한번 실행하고 로그아웃 → 로그인 하면 설정이 적용됩니다. 😀

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다