Программно получить / установить Mac OSX по умолчанию сочетание клавиш системы - PullRequest
1 голос
/ 05 мая 2009

Я пытаюсь найти способ программно получить / установить системные сочетания клавиш OSX по умолчанию (горячие клавиши), найденные на вкладке «Системные настройки» -> «Клавиатура и мышь ->». Я должен быть в состоянии сделать это в фоновом режиме, поэтому сценарии с графическим интерфейсом не являются решением.

Я не могу найти список или что-то еще, где эта информация может храниться. Я попытался использовать трассировку «Активность файлов» при использовании Системных настроек, но снова появился с пустыми руками.

Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 05 мая 2009

Упс, я перезапустил Instruments, но на этот раз не закрывал Системные настройки, ярлыки до этого не записывались.

Оказывается, файл находится в ~ / Library / Preferences / com.apple.symbolichotkeys.plist Но это довольно загадочно. Тем не менее, это то, что я был после.

1 голос
/ 05 мая 2009
0 голосов
/ 31 мая 2019

На самом деле есть 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, чтобы изменить его
  • Необходимо перезагрузить компьютер, чтобы изменения вступили в силу
...