Як змінити ярлики управління місією з командного рядка?


11

Я вже давно намагаюся з’ясувати це. У мене є досить типовий сценарій забезпечення Mac OS:

https://gist.github.com/ryanpcmcquen/b2e608311f286a4ab3e1

Я хотів би змінити ярлики управління Місією, щоб усі були Ctrl+ Alt+ ...замість Ctrl+ .... Наприклад, за замовчуванням є: Ctrl+ Upдля активації управління місією. Я хотів би змінити це на Ctrl+ Alt+ Up, оскільки поточний ярлик конфліктує з іншими програмами, які я використовую.

Зауважте, що я вже знаю, як це зробити System Preferences > Keyboard > Shortcuts, шукаю рішення командного рядка, написаного на сценарії.

EDIT: Завдяки @ user3439894 я пройшов сценарій і створив сценарій, щоб змінити всі ключі плістів на те, що я хочу, щоб вони були. Єдине питання - це не працює. :-(

Ось що я маю досі:

#!/bin/bash
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 32 "{enabled = 1; value = { parameters = (65535, 126, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 33 "{enabled = 1; value = { parameters = (65535, 125, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 34 "{enabled = 1; value = { parameters = (65535, 126, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 35 "{enabled = 1; value = { parameters = (65535, 125, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 79 "{enabled = 1; value = { parameters = (65535, 123, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 80 "{enabled = 1; value = { parameters = (65535, 123, 3014656); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 81 "{enabled = 1; value = { parameters = (65535, 124, 2883584); type = standard; }; }"
defaults write ~/Library/Preferences/com.apple.symbolichotkeys.plist AppleSymbolicHotKeys -dict-add 82 "{enabled = 1; value = { parameters = (65535, 124, 3014656); type = standard; }; }"
chown -Rf `whoami` ~/Library/Preferences/com.apple.symbolichotkeys.plist;
defaults read com.apple.symbolichotkeys

Ви коли-небудь придумували рішення для цього?
Натан

@Nathan, ні. Я просто перекидаю за замовчуванням зараз.
ryanpcmcquen

У мене було подібне питання. Можливо, ви можете спробувати моє рішення: apple.stackexchange.com/questions/344494/…
Натан

@Nathan, схоже, ваше рішення вимагає вручну втручання. Я щойно навчився змінювати інші програми, які використовую, щоб мати різні гарячі клавіші. Молоткова ложка FTW.
ryanpcmcquen

У цій частині команди type = standard;насправді повинні бути type = 'standard';помічені цитати навколо 'standard'. Однак, іноді навіть при правильно сформованому командному рядку зміна просто не набуває чинності, навіть якщо ; killall -u $USER cfprefsdдодано до кінця defaults команди . Також повний шлях до .plistфайлу в цьому випадку використання не є необхідним, а просто, наприклад, defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys ...решта команди - все, що потрібно.
користувач3439894

Відповіді:


5

Це не пряма відповідь, хоча я сподіваюсь, що представлена ​​тут інформація допоможе вам отримати пряму відповідь.

Я можу вам сказати, що змінюється в тому файлі, коли ви змінюєте ярлик клавіатури за замовчуванням для керування місією зі стрілки управління вгору на стрілку контролю-варіанту. Це "Номер пункту 2" масиву "параметрів" у словнику "значення" словника "32" та "34" словника словника "AppleSymbolicHotKeys" у /Users/$USER/Library/Preferences/com.apple.symbolichotkeys.plistфайлі.

Ось defaults readподання com.apple.symbolichotkeys.plistфайлової структури, оскільки вона стосується змін, внесених за визначених вище обставин.

Управління місією за замовчуванням стрілка управління

{
    AppleSymbolicHotKeys =     {
        32 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2359296
                );
                type = standard;
            };
        };
        34 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2490368
                );
                type = standard;
            };
        };
    };
}

Контроль місії змінено на Стрілка управління-можливість

{
    AppleSymbolicHotKeys =     {
        32 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    2883584
                );
                type = standard;
            };
        };
        34 =         {
            enabled = 1;
            value =             {
                parameters =                 (
                    65535,
                    126,
                    3014656
                );
                type = standard;
            };
        };
    };
}

У розділі BUGS на defaultsсторінці man пише:

За замовчуванням можна структурувати дуже складні способи, що ускладнює користувачеві введення їх за допомогою цієї команди.

І це прекрасний приклад, оскільки це буде дуже складний командний рядок, що використовує defaultsдля запису цільових значень до елементів цільового масиву, якщо це навіть можливо. Просто FYI ... Якщо ви збираєтеся спробувати виконати defaults write com.apple.symbolichotkeys ...команду, переконайтеся, що ви створили резервну копію цільового файлу спочатку.

Іншим варіантом є використання AppleScript для зміни налаштувань за допомогою навігаційного інтерфейсу по системних налаштуваннях, і це також буде трохи складніше порівняно із встановленням об'єкта верхнього рівня, якого тут немає. Я навіть не впевнений, що це можливо, але якщо мені потрібен автоматизований спосіб, то я б це зрозумів, проте у мене немає часу, щоб розібратися з методом, вибачте.

Принаймні, тепер ви знаєте, що змінюється там і звідти, можливо, ви зможете самостійно розібратися в цьому або отримати додаткову допомогу, знаючи це трохи більше.

Ось відрізане зображення у Xcode com.apple.symbolichotkeys.plistфайлу.

введіть тут опис зображення

BTW Я вловлював зміни за допомогою сторонньої утиліти, яка реєструвала зміни файлової системи, а потім перетворювала цю інформацію на більш зрозумілий для людини вихід для надання цієї інформації.


Схоже, це змінює належні файли плістів, єдине питання полягає в тому, що ярлики насправді не змінюються, не після перезавантаження, повторного читання файлу чи нічого.
ryanpcmcquen

Як називається ця "утиліта сторонньої сторони, яка зареєструвала зміни файлової системи, а потім перетворила цю інформацію на більш зрозумілий для людини вихід"?
Аллен Баргі

1
@Allen Bargi, IIRC Це, ймовірно, filemonбуло частиною додатків із книги "Mac OS X Internals - до ядра Apple" у вигляді вихідного коду, filemon.c який я зібрав у виконуваний файл у своїй системі. Потім я порівняв відмінності у зміненому файлі його поточного стану з файлом із резервної копії Time Machine, зробленої безпосередньо перед змінами. Ви також можете використовувати нативну команду fs_usage .
користувач3439894

@ryanpcmcquen ваше посилання порушено
charlesreid1

@ charlesreid1, добре, це не спрацювало.
ryanpcmcquen

0

Це моя рекомендація: використовуйте таку утиліту, як Karabiner, щоб здійснити таку налаштування.

Як розробник, я хочу сказати, що особисто я вважаю це захоплюючим і дражливим питанням, і воно справді демонструє більш вузьку і темну сторону macOS, що хилиться за лаштунками, які тільки розробники програмного забезпечення та хакери можуть по-справжньому оцінити ...

Проблема досить проста: я просто хочу перевстановити комбінацію клавіш за замовчуванням до власної прив'язки.

Чому на землі це так важко / складно? Я маю намір дізнатись і опублікувати рішення ... Залишайтеся з нами.


Дякую, я з нетерпінням чекаю, що ви дізнаєтесь. Але завантаження зовнішньої програми займає стільки часу, скільки їх встановлення через стандартні інтерфейси Mac, я все ще сподіваюся на вбудоване рішення командного рядка.
ryanpcmcquen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.