답변:
Apple의 기술 노트 TN2450 은 키를 다시 매핑하는 방법을 설명합니다. 다음 명령을 실행하면 Right Alt가 Right Control로 다시 매핑됩니다.
hidutil property --set '{"UserKeyMapping":
[{"HIDKeyboardModifierMappingSrc":0x7000000e6,
"HIDKeyboardModifierMappingDst":0x7000000e4}]
}'
위 명령은 오른쪽 Alt 및 오른쪽 컨트롤을 전환하지 않습니다. 그들은 모두 올바른 통제가 될 것입니다. MacBook이 있다면 외부 키보드를 연결하기 전까지는이 사실을 알 수 없습니다. 당신이 할 경우 전환 마우스 오른쪽 Alt 키와 마우스 오른쪽 버튼으로 제어, 당신은 다음과 같은 제 2 스위치 명령을 추가해야합니다.
hidutil property --set '{"UserKeyMapping":
[{"HIDKeyboardModifierMappingSrc":0x7000000e4,
"HIDKeyboardModifierMappingDst":0x7000000e6},
{"HIDKeyboardModifierMappingSrc":0x7000000e6,
"HIDKeyboardModifierMappingDst":0x7000000e4}]
}'
기술 노트 하단의 표에는 각 키의 16 진수 값 목록이 있습니다. 위의 답변을 일반화하여 키를 전환하려면 or
해당 목록의 16 진수 값과 함께해야 0x700000000
합니다. 다음 파이썬 코드는이를 수행하는 한 가지 방법을 보여줍니다.
In [1]: def convert(val):
...: int_val = int(val, 16)
...: int_ref = 0x700000000
...:
...: return hex(int_ref | int_val)
...:
In [2]: r_alt = '0xE6'
In [3]: print(convert(r_alt))
0x7000000e6
Src
하고 Dst
.
\
키보드 의 백 슬래시 는 내가 거의 사용하지 않는 Shift+Option+7
간단한 것으로 대체하고 싶습니다 Option+.
. 어떻게합니까? 당신의 도움을 주셔서 감사합니다.
보다 일반적이고 사용자 친화적 인 접근 방식은 Sierra에서 작동하는 Karabiner 버전 인 Karabiner -Elements 를 사용 하는 것입니다.
이것은 Steven C. Howell의 답변에 대한 부록입니다.
스칸디나비아 키보드가 장착 된 새로운 MacBook Pro가 있습니다. 이 새로운 모델에는 더 이상 Esc 키가 없으므로 중요한 핸디캡입니다.
나는 다음이 § 키 (왼쪽 위, 왼쪽 및 왼쪽 위 키)를 번역한다는 것을 발견했습니다. 오늘 전에 아무것도 사용하지 않았다고 생각합니다.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Apple의 문서 (Steven의 답변에서 링크 됨)에서 "미국 이외의 키보드 \ 및 |" (0x64).
"미국 이외의"키 중 일부는 일반적으로 사용중인 키보드의 레이블이 다른 키를 나타 내기 때문에 찾기가 어렵습니다. (또한 "Grave accent and tilde"는 키보드에서 생성되는 왼쪽 Shift와 z 사이의 키를 나타냅니다 <
. 어떤 키가 "Non-US #
및 ~
"에 해당하는지 확인할 수 없었 으며, 발견 한 후에 는 더 이상 실험하지 않았습니다. 내 키.) 실험을하려면 필요한 키를 찾을 때까지 터미널에서 스크립트를 실행 해보십시오.
for ((i=1;i<=128;++i)); do
printf '0x7000000%0x\n' "$i"
printf '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000%0x,"HIDKeyboardModifierMappingDst":0x70000000a}]}' "$i" |
xargs -0 hidutil property --set >/dev/null
read -p "Type some stuff: "
hidutil property --set '{"UserKeyMapping":[{}]}' >/dev/null
done
이것은 키 코드를 반복하고 한 번에 하나씩 변경됩니다. 시험 및 오류를 통해 특히 유용하지 않은 키를 찾을 수 있기를 바랍니다. 당신이 요구하는 g
것 대신에 무언가를 입력하십시오- 당신이 예상 한 것 대신에, 당신은 올바른 키 코드를 찾았습니다. ( 편리한 선택이 아닌 0x70000000a
경우 다른 것으로 변경하십시오 g
. g
키 를 다시 매핑 하시겠습니까?) 입력을 마치면 Enter 키를 눌러 다음 키로 진행하십시오.
가치있는 것을 위해, 루프 내부의 마지막 명령은 모든 UserKeyMapping
설정 을 zap하는 방법입니다 .
hidutil property --set '{"UserKeyMapping":[{}]}'
때 처음 실행 hidutil property --get UserKeyMapping
은 생산
(null)
그러나이 값을 피드백하여 설정을 zap 할 수없는 것 같습니다 (또는이 입력을 수락하지만 무시합니다).
(터미널에 익숙하지 않은 경우 프롬프트 가 표시 for
될 때까지 또는 그와 비슷한 때까지 항목 done
을 복사 / 붙여 넣기 만하면 bash$
됩니다.)
당 이 관련 스택 오버플로 질문 당신은 당신의 홈 디렉토리에 스크립트 파일에 명령을 넣을 수 있습니다 당신에 추가 launchd
변경 사항이 지속적 있도록 구성.
일부 독자가 독자적으로이 작업을 수행하는 데 불편한 경우이를위한 빠른 스크립트가 있습니다. 다시 터미널 프롬프트에서 복사 / 붙여 넣기 만하면됩니다.
mkdir -p "$HOME"/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}' \
>"$HOME"/bin/userkeymapping
chmod 755 "$HOME"/bin/userkeymapping
cat<<: >"$HOME"/Library/LaunchAgents/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>$HOME/bin/userkeymapping</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
:
launchctl load "$HOME"/Library/LaunchAgents/userkeymapping.plist
분명히 다른 키로 끝내면 0x700000064
스크립트에서 변경하거나 파일 "$HOME"/bin/userkeymapping
에서 위의 코드를 이미 실행 한 경우 파일에서 변경해야합니다 .
LoginHook
했지만 그것이 효과가 없었으며 stackoverflow.com/a/22872222/874188에 따라 launchd
대신 접근 방식으로 전환했습니다 .
Apple 메뉴로 이동하여 "시스템 환경 설정"을 선택한 다음 "키보드"환경 설정 패널로 이동하여 "키보드"탭을 선택하십시오.
오른쪽 하단에있는 "Modifier Keys"버튼을 클릭하십시오