Karabiner-Elements(카라비너)라는 어플으로 오른쪽 커맨드 키를 한/영 변환으로 맵핑하여 잘 사용하고 있었는데, 로지텍 MX Keys를 구입하고 사용하면서부터 카라비너와 같이 사용할 수가 없었다.
그래서 capslock 키로 해보다가, 타자를 빠르게 치다보면 한/영 변환이 제대로 되지 않는 문제, 영어로 바꿨을 때 어쩔 땐 대문자로 시작하고, 어쩔 땐 소문자로 시작하는 (이건 왜인지 구글링 해봐도 모르겠다..) 문제가 있었다.
그래서 다른 키보드 맵핑 방법을 찾다가, 애플 자체적으로 'hidutil'을 이용하여 키보드를 사용자가 맵핑할 수 있는 방법이 있다고 하여, 그 방법을 기록해둔다.
오른쪽 CMD를 F18로 맵핑
먼저, 터미널에서 다음을 입력한다.
mkdir -p /Users/Shared/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000e7,"HIDKeyboardModifierMappingDst":0x70000006d}]}'"'" \
>/Users/Shared/bin/userkeymapping
chmod 755 /Users/Shared/bin/userkeymapping
sudo cat<<: >/Users/Shared/bin/userkeymapping.plist
<?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>userkeymapping</string>
<key>ProgramArguments</key>
<array>
<string>/Users/Shared/bin/userkeymapping</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
:
sudo mv /Users/Shared/bin/userkeymapping.plist /Library/LaunchAgents/userkeymapping.plist
sudo chown root /Library/LaunchAgents/userkeymapping.plist
sudo launchctl load /Library/LaunchAgents/userkeymapping.plist
굳이 의미가 궁금할 사람들을 위해, 간단히 흐름을 설명해보자면, 터미널에서 bin이라는 경로에 'userkeymapping'이라는, 0x7000000e7(오른쪽 cmd)키 입력을 0x70000006d(f18)키로 바꿔주는 내용의 파일을 생성해주는 것이다.
복사해서 붙여넣으면 비밀번호를 입력하라고 할 것이다.
부팅 시 입력하는 비밀번호를 입력하면 /Users/Shared/bin 경로에 'userkeymapping.plist'라는 파일이 생성된다.
plist 파일은 부팅할 때마다 실행되는 파일이다. (참고로 hidutil은 재부팅하면 설정값이 사라지기 때문에 부팅 시 계속해서 키를 맵핑하는 명령어를 실행시켜주어야 한다.)
따라서 저 파일을 생성하고 재부팅을 하면 오른쪽 cmd키는 F18 키로 맵핑이 되는 것이다.
이제, 설정-키보드-단축키-입력소스에서 '입력 메뉴에서 다음 소스 선택'을 오른쪽 cmd키로 바꿔주자.
보통 다른 글에서는 '이전 입력 소스 선택'을 바꿔주던데, 나는 '다음 소스 선택'을 바꿔주는 것을 추천한다.
이유는 다음과 같다.
Capslock으로 한/영 전환 시 빠르게 타이핑 하다보면 전환이 되지 않는 이유가 '이전 소스 선택'의 경우 눌렀다가 뗄 때를 기준으로 하기 때문이다. 즉, 떼기 전에 다른 키를 눌러서 전환이 되지 않는 것이었다.
이에 반해 '다음 소스 선택'은 누를 때를 기준으로 하기 때문에 떼기 전에 다른 타이핑을 쳐도 한/영 전환을 제대로 할 수 있다.
그럼 위 사진과 같이 F18로 바뀔 것이다. (시스템 기본 언어를 영어로 해둬서 사진은 영어인데, 한글 설정도 위치는 똑같을 것이다.)
이 설정을 없애고 싶다면 터미널에서 다음을 입력하여 userkeymapping 파일을 지우고, 재부팅을 하면 된다.
sudo launchctl remove userkeymapping
다른 키를 F18로 맵핑
만약 오른쪽 cmd키 말고 다른 키를 F18로 맵핑하고 싶다면, 아래 테이블의 'Usage'에 해당하는 'Usage ID'를 설정 명령어의 0x7000000e7 대신 입력해주면 된다.
예를 들면, 오른쪽 option 키를 F18 키로 맵핑하려면 '0x7000000e7'자리에 '0x7000000e6'을 입력해주면 될 것이다.
최근댓글