Это дополнение к ответу Стивена С. Хауэлла.
У меня новый MacBook Pro со скандинавской клавиатурой. У этой новой модели больше нет клавиши Esc, что является для меня серьезным препятствием.
Я обнаружил, что следующее будет переводить клавишу § (верхний левый, левый от клавиши 1 и выше клавишу табуляции), которую я не думаю, что когда-либо раньше использовал для создания Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
В документации Apple (ссылка на которую содержится в ответе Стивена) это обозначено как «Клавиатура за пределами США \ и |» (0x64).
Некоторые из «не-американских» клавиш трудно обнаружить, потому что они обычно относятся к клавишам с другой меткой на клавиатуре, которую вы используете. (Я также обнаружил, что «Серьезный акцент и тильда» относится к клавише между левым смещением и z, которая генерируется на моей клавиатуре <
. Я не смог определить, какая клавиша соответствует «Не США» #
и ~
«не экспериментировал дальше, как только обнаружил»). мой ключ.) Если вы хотите поэкспериментировать, попробуйте запустить скрипт в терминале, пока не найдете нужный ключ:
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
настройки:
hidutil property --set '{"UserKeyMapping":[{}]}'
Когда вы изначально запускаете, hidutil property --get UserKeyMapping
он производит
(null)
но кажется, что вы не можете передать это значение, чтобы убрать настройку (или, скорее, он принимает, но игнорирует этот ввод).
(Если вы не знакомы с Терминалом, просто скопируйте / вставьте его, 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
он будет создан, если вы уже запустили вышеописанное.