Для всех, кто наткнулся на это, я искал способ поместить это в свои файлы .dot при настройке новых машин. Все, что я хотел, это переназначить Caps-Lock для побега.
В Sierra 10.12 кажется, что решение в этом сообщении стало недействительным. Документированный способ от Apple работает для меня с использованием 10.14.6 Mojave (* с оговоркой)
TL;DR;
Начиная с Sierra 10.12, см.: TN2450.
# Remap caps-lock to escape
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000029}]}'
До Сьерры 10.12
plutil
Интересно, что решение по-прежнему верно в отношении обновления этого файла и сохранения информации о сопоставлении клавиш, когда пользователь проходит через графический интерфейс для изменения клавиш-модификаторов. Однако обновление информации о сопоставлении клавиш здесь, похоже, больше ни на что не влияет.
В этом примере используется команда plutil
, которая является предпочтительным способом обновления списков, поскольку defaults write
устарела в соответствии с справочной страницей См. путь к файлу.
Также см. сравнения между двумя командами и библиотекой PlistBuddy.
#!/usr/bin/env bash
# Quit System Preferences so it doesn't muck with your settings
osascript -e 'tell application "System Preferences" to quit'
# Get your machine's UUID
__UUID__=$(
ioreg -ad2 -c IOPlatformExpertDevice | xmllint --xpath \
'//key[.="IOPlatformUUID"]/following-sibling::*[1]/text()' -
)
# Replace all contents of the array for the caps lock key/value pair.
plutil -replace "com\.apple\.keyboard\.modifiermapping\.1452-636-0" \
-json '[{
"HIDKeyboardModifierMappingDst": 30064771113,
"HIDKeyboardModifierMappingSrc": 30064771129
}]' \
~/Library/Preferences/ByHost/.GlobalPreferences.${__UUID__}.plist
# Pretty print file
plutil -p ~/Library/Preferences/ByHost/.GlobalPreferences.${__UUID__}.plist
Начиная с Сьерры 10.12
hidutil
Новое решение гораздо менее подробное И не полагается на аргументы пути к файлу или предоставление типов аргументов для не очень хорошо документированной команды plutil
.
Вы можете увидеть это сообщение Stack Exchange для другого объяснения.
В этом техническом документе TN2450 описаны стратегии решения этой проблемы с помощью hidutil
или Xкод.
#!/usr/bin/env bash
# Quit System Preferences so it doesn't muck with your settings
osascript -e 'tell application "System Preferences" to quit'
# Remap caps-lock to escape
hidutil property --set '{
"UserKeyMapping":[{
"HIDKeyboardModifierMappingSrc":0x700000039,
"HIDKeyboardModifierMappingDst":0x700000029
}]
}'
- Предостережение: похоже, это не меняет отображение графического интерфейса при использовании клавиш-модификаторов в Системных настройках > Клавиатура. Тем не менее, он по-прежнему работает как шарм для функциональности.
person
macc
schedule
18.11.2019