Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bennlee/036e58d9f7a8e2f351e2a7cf6a92959b to your computer and use it in GitHub Desktop.
Save bennlee/036e58d9f7a8e2f351e2a7cf6a92959b to your computer and use it in GitHub Desktop.
M1 맥에서 한영키 전환 딜레이 해결하기

M1 맥북에서 한영키 전환 딜레이 해결하기

맥에서 Caps Lock을 한/영 전환키로 사용하면서부터 딜레이가 생기거나, 제대로 바뀌지 않는 고질적인 문제가 꾸준히 발생해왔다. 대소문자를 고정하는 Caps Lock기능과 한/영 전환 기능을 누른 시간에 기반하여 구분하는 과정에서 생긴 문제로 추정되지만, Caps Lock기능을 해제해도 여전히 문제가 발생한다. 이에 사용자들은 karabiner-elements등의 편법을 통해 Caps Lock키를 실제로 사용하지 않는 F18등의 키로 매핑하여 해결해 왔다.

하지만, Apple Silicon을 탑재한 기기들에서는 다음과 같은 문제가 있다.

  • karabiner-elements가 제대로 지원되지 않는 이슈가 있어 hammerspoon등의 차선책을 사용해야한다.
  • M1 이전까지의 맥과는 다르게 키매핑만으로 문제가 완전히 해결되지 않는다.

이제, Mac에서 공식적으로 지원하는 방법을 통해 karabiner-elements, hammerspoon같은 서드파티 앱 없이 이 문제를 해결해보자.

1. hidutil을 통해 우선 Caps Lock키를 다른키로 매핑하자

Mac이 부팅될 때 항상 키매핑을 자동으로 실행시켜줄 수 있도록, LaunchAgents 디렉토리에 키매핑 명령어를 담은 파일을 만들어줄 것이다. (자세한 내용은 How to remapping keys on macOS without thirdparty applications를 참고하자)

먼저, 터미널을 실행하여 ~/Library/LaunchAgents 아래에 com.example.KeyRemapping.plist 라는 스크립트를 생성하자.

$ tee ~/Library/LaunchAgents/com.example.KeyRemapping.plist << END
<!--
  Put this file in ~/Library/LaunchAgents/com.example.KeyRemapping.plist to
  automatically remap your keys when macOS starts.
-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"\>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.KeyRemapping</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/hidutil</string>
        <string>property</string>
        <string>--set</string>
        <string>{"UserKeyMapping":[
          {
            "HIDKeyboardModifierMappingSrc": 0x700000039,
            "HIDKeyboardModifierMappingDst": 0x70000006D
          }
        ]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
END

이제 재부팅하면 위의 스크립트가 실행되며, Caps Lock키가 F18키로 매핑될 것이다.

TIP 재부팅 없이 진행하고 싶다면 아래 커맨드를 한번 더 입력해주자. 위의 스크립트가 실행하는 명령어와 동일한 내용이다. 다만, 재부팅시에 초기화되기 때문에 위의 작업은 반드시 해주어야 한다.

$ hidutil property --set '{"UserKeyMapping":[
 {
   "HIDKeyboardModifierMappingSrc": 0x700000039,
   "HIDKeyboardModifierMappingDst": 0x70000006D
 }
]}'

2. 키보드 환경설정에서 입력 메뉴에서 다음 소스 선택 항목을 매핑한 F18키로 바꾸자.

먼저, [시스템 환경설정] - [키보드] - [단축키 탭] - [입력소스] 로 이동하자. 기본값으로 아래와 같은 상태일 것이다.

before

입력 메뉴에서 다음 소스 선택 항목을 누르고, Caps Lock키를 누르면 아래처럼 F18키가 할당될 것이다.

after

이제 고통받지 말고 마음껏 타이핑하자!👏👏👏

p.s. 오류 혹은 더 좋은 방법은 코멘트로 공유 부탁드리겠습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment