Đây là phần phụ lục cho câu trả lời của Steven C. Howell.
Tôi có một chiếc MacBook Pro mới với bàn phím Scandinavia. Mô hình mới này không còn có phím Esc, đây là một bất lợi đáng kể đối với tôi.
Tôi phát hiện ra rằng phần sau đây sẽ dịch phím § (phía trên bên trái, bên trái của phím 1 và trên tab) - mà tôi không nghĩ rằng mình đã từng sử dụng cho bất cứ điều gì trước ngày hôm nay - để sản xuất Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Trong tài liệu của Apple (được liên kết từ câu trả lời của Steven), điều này được gắn nhãn là "Bàn phím không phải của Mỹ \ và |" (0x64).
Một số phím "không phải của Hoa Kỳ" rất khó để khám phá vì chúng thường đề cập đến các phím có nhãn khác trên bàn phím bạn đang sử dụng. (Tôi cũng phát hiện ra rằng "Dấu huyền và dấu ngã" đề cập đến chính giữa dịch trái và z, mà trên bàn phím của tôi tạo ra <
. Tôi đã không thể thiết lập mà tương ứng với chìa khóa để "Non-Mỹ #
và ~
" và không thử nghiệm thêm một lần tôi thấy khóa của tôi.) Nếu bạn muốn thử nghiệm, hãy thử chạy tập lệnh trong thiết bị đầu cuối cho đến khi bạn tìm thấy khóa bạn cần:
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
Vòng lặp này trên các mã khóa và thay đổi từng mã một lần, với hy vọng rằng bạn có thể tìm thấy thông qua bản dùng thử và lỗi một khóa không đặc biệt hữu ích cho bạn. Hãy thử gõ một cái gì đó khi nó yêu cầu bạn - nếu bạn nhận được một g
thay vì những gì bạn mong đợi, bạn đã tìm đúng mã khóa. (Thay đổi 0x70000000a
thành thứ khác nếu g
không phải là lựa chọn thuận tiện cho bạn. Có lẽ bạn muốn sắp xếp lại g
phím?) Khi bạn nhập xong, chỉ cần nhấn Enter để chuyển sang phím tiếp theo.
Để biết giá trị của nó, lệnh cuối cùng trong vòng lặp là cách bạn hạ gục tất cả các UserKeyMapping
cài đặt:
hidutil property --set '{"UserKeyMapping":[{}]}'
Khi bạn chạy ban đầu, hidutil property --get UserKeyMapping
nó tạo ra
(null)
nhưng có vẻ như bạn không thể cung cấp lại giá trị này để hạ gục cài đặt (hay đúng hơn là nó chấp nhận nhưng bỏ qua đầu vào này).
(Nếu bạn không quen thuộc với Terminal, chỉ cần sao chép / dán thứ đó for
cho đến khi done
tại bash$
dấu nhắc của bạn hoặc tương tự.)
Theo câu hỏi Stack Overflow liên quan này, bạn có thể đặt lệnh trong tệp tập lệnh trong thư mục chính của bạn và thêm nó vào launchd
cấu hình của bạn để thực hiện thay đổi này liên tục.
Trong trường hợp một số độc giả không cảm thấy thoải mái khi tự mình làm điều này, đây là một kịch bản nhanh thực hiện điều này cho bạn. Một lần nữa, chỉ cần sao chép / dán này tại dấu nhắc Terminal.
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
Rõ ràng nếu bạn đã kết thúc với một số khóa khác ngoài 0x700000064
bạn cần thay đổi mã đó trong tập lệnh hoặc trong tệp, "$HOME"/bin/userkeymapping
nó sẽ kết thúc việc tạo nếu bạn đã chạy ở trên.