Jak zmienić skróty kontroli misji z wiersza poleceń?

11

Próbowałem to rozgryźć od dłuższego czasu. Mam dość typowy skrypt obsługi administracyjnej Mac OS:

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

Chciałbym zmienić skróty Kontroli misji na wszystkie Ctrl+ Alt+ ...zamiast Ctrl+ .... Na przykład wartością domyślną jest: Ctrl+, Upaby aktywować kontrolę misji. Chciałbym zmienić to na Ctrl+ Alt+ Up, ponieważ obecny skrót jest w konflikcie z innymi programami, których używam.

Zauważ, że już wiem, jak to zrobić System Preferences > Keyboard > Shortcuts, szukam skryptowalnego rozwiązania dla wiersza poleceń.

EDYCJA: Dzięki @ user3439894 przeszedłem i napisałem skrypt, aby zmienić wszystkie klucze Plist na to, co chcę, aby były. Jedynym problemem jest to, że nie działa. :-(

Oto co mam do tej pory:

#!/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
ryanpcmcquen
źródło
Czy kiedykolwiek wymyśliłeś na to rozwiązanie?
Nathan
@Nathan, nie. Po prostu zmieniam teraz na domyślne.
ryanpcmcquen
Miałem podobny problem. Może możesz wypróbować moje rozwiązanie: apple.stackexchange.com/questions/344494/…
Nathan
@Nathan, wygląda na to, że twoje rozwiązanie wymaga ręcznej interwencji. Właśnie nauczyłem się zmieniać inne programy, których używam, aby mieć różne skróty klawiszowe. Hammerspoon FTW.
ryanpcmcquen
Ta część polecenia type = standard;powinna w rzeczywistości zawierać type = 'standard';cytaty 'standard'. To powiedziawszy jednak, czasami nawet przy poprawnie utworzonej linii poleceń zmiana po prostu nie działa, nawet po ; killall -u $USER cfprefsddodaniu na końcu defaults polecenia . Również pełna ścieżka do .plistpliku w tym przypadku użycia nie jest konieczna i po prostu np defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys .... Reszta polecenia jest wszystkim, co jest konieczne.
user3439894,

Odpowiedzi:

5

To nie jest bezpośrednia odpowiedź, chociaż mam nadzieję, że przedstawione tu informacje pomogą ci uzyskać bezpośrednią odpowiedź.

Mogę powiedzieć, jakie zmiany w którym pliku, po zmianie domyślnego skrótu klawiaturowego do kontroli misji z Strzałka kontrolna w górę na Strzałka kontrolna-opcja. Jest to „numer pozycji 2” tablicy „parametrów” w słowniku „wartości” słownika „32” i słownika „34” słownika „AppleSymbolicHotKeys” w /Users/$USER/Library/Preferences/com.apple.symbolichotkeys.plistpliku.

Oto defaults readreprezentacja com.apple.symbolichotkeys.pliststruktury pliku, ponieważ odnosi się do zmian dokonanych w określonych powyżej okolicznościach.

Kontrola misji z domyślną strzałką kontroli

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

Kontrola misji zmieniła się na Strzałkę w górę, Control-Option

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

Sekcja BŁĘDY strony podręcznika defaultsmówi:

Wartości domyślne można skonfigurować w bardzo skomplikowany sposób, co utrudnia użytkownikowi wprowadzenie ich za pomocą tego polecenia.

Jest to doskonały przykład, ponieważ będzie to bardzo złożona linia poleceń, w defaultsktórej zapisuje wartości docelowe do elementów tablicy docelowej, jeśli jest to wykonalne. Tylko do Twojej wiadomości ... Jeśli masz zamiar wykonać defaults write com.apple.symbolichotkeys ...polecenie, najpierw wykonaj kopię zapasową pliku docelowego.

Inną opcją jest użycie AppleScript do zmiany ustawień poprzez nawigację w interfejsie GUI Preferencji systemowych, co również będzie nieco skomplikowane w porównaniu do ustawiania obiektu najwyższego poziomu, którym nie jest tutaj cel. Nie jestem nawet pewien, czy to wykonalne, ale gdybym potrzebował zautomatyzowanego sposobu, wymyśliłbym to, jednak nie mam czasu, aby wymyślić którąkolwiek z metod, przepraszam.

Przynajmniej teraz wiesz, jakie zmiany gdzie i skąd możesz być w stanie samodzielnie to ustalić lub uzyskać dodatkową pomoc w poznaniu tego trochę więcej.

Oto obcięty obraz w Xcode com.apple.symbolichotkeys.plistpliku.

wprowadź opis zdjęcia tutaj

BTW Zatrzymałem zmiany za pomocą narzędzia innej firmy, które zarejestrowało zmiany w systemie plików, a następnie przekonwertowałem te informacje na dane bardziej czytelne dla człowieka, aby dostarczyć te informacje.

użytkownik3439894
źródło
Wygląda na to, że zmienia właściwe pliki list, jedynym problemem jest to, że skróty tak naprawdę się nie zmieniają, nie po ponownym uruchomieniu komputera, ponownym odczytaniu pliku itp.
ryanpcmcquen,
Jak nazywa się to „narzędzie strony trzeciej, które rejestrowało zmiany w systemie plików, a następnie przekształciło te informacje w dane bardziej czytelne dla człowieka”?
Allen Bargi
1
@Allen Bargi, IIRC Prawdopodobnie filemonbyło to częścią Dodatków z książki „Mac OS X Internals - Do rdzenia Apple” w postaci kodu źródłowego, filemon.c który skompilowałem do pliku wykonywalnego w moim systemie. Następnie porównałem różnice w zmienionym pliku jego aktualnego stanu z plikiem z kopii zapasowej Time Machine wykonanej tuż przed zmianami. Możesz także użyć natywnego polecenia fs_usage .
użytkownik3439894
@ryanpcmcquen Twój link jest zepsuty
charlesreid1
@ charlesreid1, no cóż, to nie działało.
ryanpcmcquen,
0

Oto moje zalecenie: skorzystaj z narzędzia takiego jak Karabiner, aby dokonać takiej personalizacji.

Jako programista chcę powiedzieć, że osobiście uważam to za fascynujący i kuszący problem, i naprawdę pokazuje brzydszą, ciemniejszą stronę macOS, która ukrywa się za kulisami, którą tylko twórcy oprogramowania i hakerzy mogą naprawdę docenić ...

Problem jest dość prosty: chcę tylko zmienić domyślną kombinację klawiszy na własne powiązanie.

Dlaczego, u licha, jest to takie trudne / skomplikowane? Zamierzam znaleźć i opublikować rozwiązanie ... Bądź na bieżąco.

Steve Benner
źródło
Dziękuję, nie mogę się doczekać, aby zobaczyć, co się dowiesz. Ale pobieranie zewnętrznego programu trwa tak długo, jak konfigurowanie ich za pomocą standardowych interfejsów komputera Mac, wciąż mam nadzieję na wbudowane rozwiązanie wiersza polecenia.
ryanpcmcquen