Wie ändere ich Mission Control-Verknüpfungen über die Befehlszeile?

11

Ich habe lange versucht, das herauszufinden. Ich habe ein ziemlich typisches Mac OS-Bereitstellungsskript:

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

Ich möchte die Verknüpfungen für die Missionssteuerung so ändern, dass sie alle Ctrl+ Alt+ ...anstelle von Ctrl+ sind .... Die Standardeinstellung ist beispielsweise: Ctrl+ Up, um die Missionskontrolle zu aktivieren. Ich möchte dies in Ctrl+ Alt+ ändern Up, da die aktuelle Verknüpfung mit anderen von mir verwendeten Programmen in Konflikt steht.

Beachten Sie, dass ich bereits weiß, wie dies zu tun System Preferences > Keyboard > Shortcutsist. Ich suche nach einer skriptfähigen Befehlszeilenlösung.

BEARBEITEN: Dank @ user3439894 habe ich ein Skript erstellt, um alle Plist-Schlüssel so zu ändern, wie ich sie haben möchte. Das einzige Problem ist, dass es nicht funktioniert. :-(

Folgendes habe ich bisher:

#!/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
quelle
Haben Sie jemals eine Lösung dafür gefunden?
Nathan
@ Nathan, nein. Ich rolle jetzt nur mit den Standardeinstellungen.
Ryanpcmcquen
Ich hatte ein ähnliches Problem. Vielleicht können Sie meine Lösung ausprobieren: apple.stackexchange.com/questions/344494/…
Nathan
@ Nathan, es sieht so aus, als ob Ihre Lösung manuelle Eingriffe erfordert. Ich habe gerade gelernt, wie man die anderen Programme ändert, die ich verwende, um andere Hotkeys zu haben. Hammerspoon FTW.
Ryanpcmcquen
Dieser Teil des Befehls type = standard;sollte eigentlich type = 'standard';die Anführungszeichen sein 'standard'. Das heißt, manchmal wird die Änderung selbst bei einer ordnungsgemäß geformten Befehlszeile nicht wirksam, selbst wenn ; killall -u $USER cfprefsdsie am Ende des defaults Befehls hinzugefügt wird . Auch der vollständige Pfad zur .plistDatei ist in diesem Anwendungsfall nicht erforderlich und einfach zB defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys ...und der Rest des Befehls ist alles, was erforderlich ist.
user3439894

Antworten:

5

Dies ist keine direkte Antwort, obwohl ich hoffe, dass die hier präsentierten Informationen Ihnen helfen, eine direkte Antwort zu erhalten.

Ich kann Ihnen sagen, was sich in welcher Datei ändert, wenn Sie die Standardtastenkürzel für Mission Control von Control-Up-Pfeil in Control-Option-Up-Pfeil ändern. Dies ist die "Item 2 Number" des Arrays "parameters" im "value" Dictionary des "32" Dictionary und des "34" Dictionary des "AppleSymbolicHotKeys" Dictionary in der /Users/$USER/Library/Preferences/com.apple.symbolichotkeys.plistDatei.

Hier ist eine defaults readDarstellung der com.apple.symbolichotkeys.plistDateistruktur in Bezug auf die Änderungen, die unter den oben definierten Umständen vorgenommen wurden.

Missionskontrolle mit der Standardeinstellung Kontrollpfeil

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

Mission Control wurde in Control-Option-Up Arrow geändert

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

Im Abschnitt BUGS der defaultsManpage heißt es:

Standardeinstellungen können sehr komplex strukturiert sein, was es dem Benutzer erschwert, sie mit diesem Befehl einzugeben.

Dies ist ein perfektes Beispiel, da es sich um eine sehr komplexe Befehlszeile handelt, defaultsin der die Zielwerte in die Zielarrayelemente geschrieben werden, sofern dies überhaupt möglich ist. Nur zu Ihrer Information ... Wenn Sie versuchen, einen defaults write com.apple.symbolichotkeys ...Befehl auszuführen, stellen Sie sicher, dass Sie zuerst die Zieldatei gesichert haben.

Die andere Möglichkeit besteht darin, ein AppleScript zu verwenden, um die Einstellungen durch Navigieren in der GUI der Systemeinstellungen zu ändern. Auch dies ist im Vergleich zum Festlegen eines Objekts der obersten Ebene, das hier nicht das Ziel ist, etwas komplex. Ich bin mir nicht einmal sicher, ob es machbar ist, aber wenn ich einen automatisierten Weg brauchte, würde ich es herausfinden, aber ich habe nicht die Zeit, eine der beiden Methoden herauszufinden, sorry.

Zumindest wissen Sie jetzt, was sich wo ändert, und von dort aus können Sie es entweder selbst herausfinden oder zusätzliche Hilfe erhalten, um dieses bisschen mehr zu wissen.

Hier ist ein abgeschnittenes Bild in Xcode der com.apple.symbolichotkeys.plistDatei.

Geben Sie hier die Bildbeschreibung ein

Übrigens habe ich die Änderungen mithilfe eines Dienstprogramms eines Drittanbieters abgefangen, das die Dateisystemänderungen protokollierte und diese Informationen dann in eine besser lesbare Ausgabe konvertierte, um diese Informationen bereitzustellen.

user3439894
quelle
Es scheint die richtigen Plist-Dateien zu ändern. Das einzige Problem ist, dass sich die Verknüpfungen nicht wirklich ändern, nicht nach einem Neustart, einem erneuten Lesen der Datei oder irgendetwas anderem.
Ryanpcmcquen
Wie heißt dieses "Dienstprogramm eines Drittanbieters, das die Änderungen des Dateisystems protokolliert und diese Informationen dann in eine besser lesbare Ausgabe konvertiert"?
Allen Bargi
1
@Allen Bargi, IIRC Es war wahrscheinlich filemonTeil der Extras aus dem Buch "Mac OS X Internals - To The Apple's Core" in Form von Quellcode, filemon.c den ich zu einer ausführbaren Datei auf meinem System kompiliert habe. Ich habe dann die Unterschiede in der geänderten Datei ihres aktuellen Status mit der Datei aus einer Time Machine-Sicherung verglichen, die kurz vor den Änderungen erstellt wurde. Sie können auch den nativen Befehl fs_usage verwenden .
user3439894
@ryanpcmcquen Ihr Link ist kaputt
charlesreid1
@ charlesreid1, na ja, es hat nicht funktioniert.
Ryanpcmcquen
1

Dies ist meine Empfehlung: Verwenden Sie ein Dienstprogramm wie Karabiner , um diese Anpassung zu begleiten.

Als Entwickler möchte ich sagen, dass ich persönlich finde, dass es ein faszinierendes und verlockendes Thema ist, und es zeigt wirklich die hässlichere, dunklere Seite von macOS, die sich hinter den Kulissen bewegt, die nur Softwareentwickler und Hacker wirklich schätzen können ...

Das Problem ist einfach genug: Ich möchte nur die Standardschlüsselkombination meiner eigenen Bindung zuordnen.

Warum um alles in der Welt ist es so schwierig / kompliziert? Ich beabsichtige, eine Lösung zu finden und zu veröffentlichen ... Bleiben Sie dran.

Steve Benner
quelle
Vielen Dank, ich freue mich darauf zu sehen, was Sie herausfinden. Das Herunterladen eines externen Programms dauert jedoch so lange, wie es über die Standardschnittstellen des Mac eingestellt wird. Ich hoffe immer noch auf eine integrierte Befehlszeilenlösung.
Ryanpcmcquen