الحصول على/تعيين اختصار لوحة المفاتيح الافتراضية لنظام Mac OSX برمجيًا

StackOverflow https://stackoverflow.com/questions/823705

سؤال

أحاول العثور على طريقة للحصول على/تعيين اختصارات لوحة المفاتيح الافتراضية لنظام OSX (مفاتيح التشغيل السريع) الموجودة في تفضيلات النظام -> لوحة المفاتيح والماوس -> علامة التبويب اختصارات لوحة المفاتيح برمجيًا.أحتاج أن أكون قادرًا على القيام بذلك في الخلفية، لذا فإن البرمجة النصية لواجهة المستخدم الرسومية ليست حلاً.

لا أستطيع العثور على قائمة أو أي شيء يمكن تخزين هذه المعلومات فيه.لقد حاولت استخدام تتبع "نشاط الملف" الخاص بالأدوات أثناء استخدام تفضيلات النظام، ولكن مرة أخرى خرجت خالي الوفاض.

هو موضع تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

وهناك <لأ href = "http://developer.apple.com/documentation/Carbon/Reference/Carbon_Event_Manager_Ref/Reference/reference.html#//apple_ref/c/func/CopySymbolicHotKeys" يختلط = "نوفولو noreferrer" > وAPI لهذا (والحصول على، وليس وضع).

نصائح أخرى

وOoop، وإعادة ركض الآلات، ولكن حرصت على إغلاق تفضيلات النظام هذه المرة، اختصارات لم يحصل مكتوبة حتى ذلك الحين.

وتبين وجود الملف في ~ / المكتبة / تفضيلات / com.apple.symbolichotkeys.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 المعلمة من أجل تعديلها
  • يجب إعادة تشغيل الكمبيوتر لتطبيق التغييرات
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top