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. 오류 혹은 더 좋은 방법은 코멘트로 공유 부탁드리겠습니다!

@kn-jjo-kr
Copy link

많은 도움이 되었습니다. 👍

@devy1540
Copy link

많은 도움이 되었습니다! 👍

@XXVL-HUFS
Copy link

진짜 너무너무 감사합니다 최고입니다👍

@Ban-gilhyeon
Copy link

안녕하세요 많은 도움 되었습니다
혹시 이 방법으로 하게되면 아이폰 미러링을 했을 때 한/영 전환이 안되게 되는데 해결 방법 아시는거 있으실까요?

@bennlee
Copy link
Author

bennlee commented Jan 22, 2025

@Ban-gilhyeon

혹시 이 방법으로 하게되면 아이폰 미러링을 했을 때 한/영 전환이 안되게 되는데 해결 방법 아시는거 있으실까요?

비슷한 이슈 살펴보니, 방식은 크게 다르지 않은데 Caps Lock 키를 override 하는게 문제가 되는 것 같네요.
remapping src key를 Caps Lock 외의 키로 설정해보시겠어요?

(ctrl + space 등 키 조합을 매핑하거나 window focus 판별 등 좀 더 rich 한 기능은 karabiner-elements 사용하시는 쪽이 편할 것 같네요. 현재는 Apple Silicon 대응이 된 것 같습니다.)

@4season
Copy link

4season commented Jun 17, 2025

혹시 이런경우는 캡스락을 어떻게 사용하나요? 원래 대소문자 고정 하는 역할이요..!

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