This answer about CopySymbolicKeys()为你提供了OS X系统快捷键的键盘组合,但有没有办法获得与这些组合相关的标签呢?
例如,我可以从CopySymbolicKeys()获取⌥⌘D,但我想在系统偏好设置>键盘>快捷键中获取“打开/关闭Dock隐藏”及其相关标签。
我认为这不太可能,但请保持希望。
发布于 2020-12-25 01:50:56
据我所知,没有这样的API,但可以重建你想要的东西,但这需要你做一些工作。
您可以在此处获取符号键的名称:
/System/Library/PreferencePanes/Keyboard.prefPane/Contents/Resources/en.lproj/DefaultShortcutsTable.xml您需要解析此XML文件,然后在此处找到对应的热键:
~/Library/Preferences/com.apple.symbolichotkeys.plist必须在关键字sybmolichotkey之间进行匹配(是的,关键字拼写错误!)在前面提到的XML文件中,名为key的密钥在后面的plist文件中包含相同的数字。
取自DefaultShortcutsTable.xml文件的示例:
<dict>
<key>name</key>
<string>DO_NOT_LOCALIZE: Dashboard and Dock</string>
<key>ax_description</key>
<string>DO_NOT_LOCALIZE: Dashboard and Dock shortcuts (AX_DESCRIPTION)</string>
<key>identifier</key>
<string>dock</string>
<key>iconname</key>
<string>category_dock</string>
<key>icon-bundle-path</key>
<string>/System/Library/CoreServices/Dock.app</string>
<key>canRestoreDefaults</key>
<true/>
<key>elements</key>
<array>
<dict>
<key>name</key>
<string>DO_NOT_LOCALIZE: Turn Dock Hiding On/Off</string>
<key>key</key>
<integer>2</integer>
<key>modifier</key>
<integer>1572864</integer>
<key>sybmolichotkey</key> <--- look for this key
<integer>52</integer> <--- and its value
<key>charKey</key>
<integer>100</integer>
</dict>
<dict>
<key>name</key>
<string>DO_NOT_LOCALIZE: Show Launchpad</string>
<key>key</key>
<integer>65535</integer>
<key>modifier</key>
<integer>0</integer>
<key>sybmolichotkey</key> <--- look for this key
<integer>160</integer> <--- and its value
</dict>
</array>
</dict>然后在com.apple.symbolichotkeys.plist中查找相同的数字
<key>52</key>
<dict>
<key>enabled</key>
<true/>
<key>value</key>
<dict>
<key>parameters</key>
<array>
<integer>65535</integer>
<integer>2</integer>
<integer>1572864</integer>
</array>
<key>type</key>
<string>standard</string>
</dict>
</dict>主要注意事项:后一个plist是二进制形式的。要将其转换为文本,您需要在终端中执行以下操作:
plutil -convert xml1 ~/Library/Preferences/com.apple.symbolichotkeys.plist https://stackoverflow.com/questions/36044178
复制相似问题