Раньше я использовал Karabiner для переназначения Right Alt на Right Control (как пользователь Emacs я использую Control НАМНОГО чаще, чем Alt), но обновление до Sierra сломало это. Понижение не вариант.
Как вручную переназначить ключи в Sierra? Я специально хотел бы переназначить Right Alt на Right Control.
Техническая заметка Apple TN2450 описывает, как переназначить клавиши. Выполнение следующей команды переназначит Right Alt на Right Control.
hidutil property --set '{"UserKeyMapping":
[{"HIDKeyboardModifierMappingSrc":0x7000000e6,
"HIDKeyboardModifierMappingDst":0x7000000e4}]
}'
Обратите внимание, что приведенная выше команда не переключает правый Alt и правый элемент управления. Они оба будут Right Control. Если у вас MacBook, вы не заметите этого, пока не подключите внешнюю клавиатуру. Если вы хотите переключить Right Alt и Right Control, вам нужно добавить вторую команду переключения, как показано ниже.
hidutil property --set '{"UserKeyMapping":
[{"HIDKeyboardModifierMappingSrc":0x7000000e4,
"HIDKeyboardModifierMappingDst":0x7000000e6},
{"HIDKeyboardModifierMappingSrc":0x7000000e6,
"HIDKeyboardModifierMappingDst":0x7000000e4}]
}'
В таблице внизу Технической заметки есть список шестнадцатеричных значений для каждого ключа. Чтобы обобщить приведенный выше ответ для переключения любых клавиш, вы должны or
использовать шестнадцатеричное значение из этого списка вместе с 0x700000000
. Следующий код Python демонстрирует один из способов сделать это.
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
Более общий и удобный подход — использовать Karabiner-Elements , версию Karabiner, которая работает на Sierra.
Это дополнение к ответу Стивена С. Хауэлла.
У меня новый 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 ~/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'"'" \
>~/bin/userkeymapping
chmod 755 ~/bin/userkeymapping
mkdir -p ~/Library/LaunchAgents
cat<<: >~/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 ~/Library/LaunchAgents/userkeymapping.plist
Очевидно, что если вы получили какой-то другой ключ, 0x700000064
вам нужно изменить его в сценарии или в файле , который ~/bin/userkeymapping
он создает, если вы уже выполнили вышеуказанное.
LoginHook
, но это не сработало для меня, и на основе stackoverflow.com/a/22872222/874188 вместо этого я переключился на launchd
подход.zsh
, но остаюсь сбитым с толку тем, что Apple переключилась на эту злую оболочку по умолчанию для новых пользователей.Перейдите в меню Apple и выберите «Системные настройки», затем перейдите на панель настроек «Клавиатура» и выберите вкладку «Клавиатура».
Нажмите на кнопку «Ключи-модификаторы» в правом нижнем углу.
Aᴄʜᴇʀᴏɴғᴀɪʟ
Стивен С. Хауэлл
Src
иDst
.огненный куст
огненный куст
Нанаси Но Гомбе
\
в моей клавиатуреShift+Option+7
я хотел бы заменить чем-то более простым,Option+.
чем я практически не пользуюсь. Как мне это сделать? Спасибо за вашу помощь.Хави
¡ (and ¿)
бытьfn
+Delete Forward
. Это возможно?тройной
Баксау
Стивен С. Хауэлл
Баксау
Стивен С. Хауэлл
кларктфу
Мандарк
Баксау
Кай -
Стивен Лу