以编程方式获取/设置Macos默认系统键盘快捷方式

时间:2009-05-05 07:10:50

标签: macos keyboard shortcut hotkeys

我正在尝试找到一种以编程方式获取/设置系统偏好设置中的默认OSX系统键盘快捷键(热键)的方法 - >键盘&鼠标 - >键盘快捷键选项卡。我需要能够在后台执行此操作,因此GUI脚本不是解决方案。

我无法找到plist或可能存储此信息的任何内容。我在使用系统偏好设置时尝试使用乐器“文件活动”跟踪,但又空手而归。

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

Ooop,我重新运行了Instruments,但这次确保关闭了系统偏好设置,这些快捷方式直到那时才被写出来。

原来该文件位于〜/ Library / Preferences / com.apple.symbolichotkeys.plist 但这很神秘。尽管如此,这正是我追求的目标。

答案 1 :(得分:1)

an API for this(获取,而不是设置)。

答案 2 :(得分:0)

实际上有一个Plist,信息存储在com.apple.symbolichotkeys AppleSymbolicHotKeys中,该信息是一个复杂的嵌套字典,其列表为:

$ defaults read com.apple.symbolichotkeys AppleSymbolicHotKeys
{
    10 =     {
        enabled = 1;
        value =         {
            parameters =             (
                65535,
                96,
                8650752
            );
            type = standard;
        };
    };
    11 =     {
        enabled = 1;
        value =         {
            parameters =             (
                65535,
                97,
                8650752
            );
            type = standard;
        };
    };
[...]
}

假设您要以编程方式修改系统偏好设置->键盘->快捷方式选项卡->应用程序快捷方式->所有应用程序中的“显示帮助菜单”快捷方式。要找到正确的条目,请在文本文件中打印所有Plist,修改“系统偏好设置”中的快捷方式,在第二个文件中再次打印Plist并进行比较:

$ defaults read com.apple.symbolichotkeys AppleSymbolicHotKeys > 1
$ # modify System Preferences
$ defaults read com.apple.symbolichotkeys AppleSymbolicHotKeys > 2
$ diff -U 5 1 2
--- 1   2019-05-27 23:37:58.000000000 -0300
+++ 2   2019-05-27 23:38:24.000000000 -0300
@@ -5063,13 +5063,13 @@
             };
             98 =             {
                 enabled = 1;
                 value =                 {
                     parameters =                     (
-                        32,
-                        49,
-                        524288
+                        105,
+                        34,
+                        655360
                     );
                     type = standard;
                 };
             };
         };

因此,要修改的条目为98,因为它是一个复杂的结构,因此您必须使用/usr/libexec/PlistBuddy来完成:

# Set "alt + Space" as shortcut for "Help menu"
/usr/libexec/PlistBuddy -c "Delete :AppleSymbolicHotKeys:98:value:parameters" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:98:value:parameters array" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:98:value:parameters: integer 32" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:98:value:parameters: integer 49" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:98:value:parameters: integer 524288" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Delete :AppleSymbolicHotKeys:98:enabled" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:98:enabled bool true" ~/Library/Preferences/com.apple.symbolichotkeys.plist

注意

  • 我必须删除bool参数才能对其进行修改
  • 必须重新启动计算机才能应用更改