Come posso cambiare le scorciatoie di Mission Control dalla riga di comando?


11

Ho cercato di capirlo da molto tempo. Ho uno script di provisioning per Mac OS piuttosto tipico:

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

Vorrei cambiare le scorciatoie per il controllo della missione in Ctrl+ Alt+ ...anziché Ctrl+ .... Ad esempio, il valore predefinito è: Ctrl+ Upper attivare il controllo missione. Vorrei cambiare questo in Ctrl+ Alt+ Up, perché l'attuale collegamento è in conflitto con altri programmi che uso.

Nota che sono già a conoscenza di come farlo System Preferences > Keyboard > Shortcuts, sto cercando una soluzione a riga di comando gestibile tramite script.

EDIT: Grazie a @ user3439894 ho passato e creato uno script per cambiare tutte le chiavi di plist in ciò che voglio che fossero. L'unico problema è che non funziona. :-(

Ecco quello che ho finora:

#!/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

Hai mai trovato una soluzione per questo?
Nathan,

@Nathan, no. Rotolo con le impostazioni predefinite ora.
ryanpcmcquen,

Ho avuto un problema simile. Forse puoi provare la mia soluzione: apple.stackexchange.com/questions/344494/…
Nathan,

@Nathan, sembra che la tua soluzione richieda un intervento manuale. Ho appena imparato a cambiare gli altri programmi che utilizzo per avere tasti di scelta rapida diversi. Hammerspoon FTW.
ryanpcmcquen,

Questa parte del comando type = standard;dovrebbe in realtà essere type = 'standard';nota tra virgolette 'standard'. Detto questo, a volte, anche con una riga di comando correttamente formata, la modifica non ha effetto, anche con l' ; killall -u $USER cfprefsdaggiunta alla fine del defaults comando . Anche il percorso completo del .plistfile in questo caso d'uso non è necessario e semplicemente per esempio defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys ...e il resto del comando è tutto ciò che è necessario.
user3439894

Risposte:


5

Questa non è una risposta diretta, anche se spero che le informazioni qui presentate ti aiuteranno ad ottenere una risposta diretta.

Posso dirti cosa cambia in quale file quando cambi la scorciatoia da tastiera predefinita per Mission Control da Control-Up Arrow a Control-Option-Up Arrow. È il "Numero articolo 2" della matrice "parametri" nel dizionario "valore" del dizionario "32" e nel dizionario "34" del dizionario "AppleSymbolicHotKeys" nel /Users/$USER/Library/Preferences/com.apple.symbolichotkeys.plistfile.

Ecco una defaults readrappresentazione della com.apple.symbolichotkeys.pliststruttura del file in relazione alle modifiche apportate nelle circostanze definite sopra.

Mission Control con il valore predefinito di Control-Up Arrow

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

Mission Control è stato cambiato in Control-Option-Up Arrow

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

La sezione BUG della defaultspagina man dice:

I valori predefiniti possono essere strutturati in modi molto complessi, rendendo difficile per l'utente immetterli con questo comando.

E questo è un esempio perfetto in quanto sarà una riga di comando molto complessa usando defaultsper scrivere i valori target sugli elementi dell'array target, se è fattibile. Solo un FYI ... Se si tenta di eseguire un defaults write com.apple.symbolichotkeys ...comando, assicurarsi di aver prima eseguito il backup del file di destinazione.

L'altra opzione è quella di utilizzare un AppleScript per modificare le impostazioni navigando nella GUI delle Preferenze di Sistema e anche questo sarà un po 'complesso rispetto all'impostazione di un oggetto di livello superiore, che qui non è l'obiettivo. Non sono nemmeno sicuro che sia fattibile, tuttavia, se avessi bisogno di un modo automatico, lo capirei, ma non ho il tempo di capire nessuno dei due metodi, mi dispiace.

Almeno ora sai cosa cambia dove e da lì potresti essere in grado di capirlo da solo o ottenere ulteriore aiuto per sapere qualcosa di più.

Ecco un'immagine ritagliata in Xcode del com.apple.symbolichotkeys.plistfile.

inserisci qui la descrizione dell'immagine

A proposito ho intrappolato le modifiche usando un'utilità di terze parti che ha registrato le modifiche al filesystem e poi le ho convertite in un output più leggibile per fornire queste informazioni.


Sembra cambiare i file di plist corretti, l'unico problema è che le scorciatoie non cambiano effettivamente, non dopo il riavvio, la rilettura del file o altro.
ryanpcmcquen,

Qual è il nome di questa "utility di terze parti che ha registrato le modifiche al filesystem e quindi ha convertito tali informazioni in un output più leggibile dall'uomo"?
Allen Bargi,

1
@Allen Bargi, IIRC Probabilmente filemonfaceva parte degli extra del libro "Mac OS X Internals - To The Apple's Core" sotto forma di codice sorgente filemon.c che ho compilato in un eseguibile sul mio sistema. Ho quindi confrontato le differenze nel file modificato del suo stato corrente con il file da un backup di Time Machine fatto appena prima delle modifiche. Puoi anche usare il comando nativo fs_usage .
user3439894,

@ryanpcmcquen il tuo collegamento è interrotto
charlesreid1

@ charlesreid1, vabbè, non ha funzionato.
ryanpcmcquen,

1

Questa è la mia raccomandazione: utilizzare un'utilità come Karabiner per accompagnare tale personalizzazione.

Come sviluppatore, voglio dire che personalmente trovo che sia un problema affascinante e allettante, e mostra davvero il lato più brutto e più oscuro di macOS che si trascina dietro le quinte che solo gli sviluppatori di software e gli hacker possono davvero apprezzare ...

Il problema è abbastanza semplice: voglio solo rimappare la combinazione di tasti predefinita alla mia associazione.

Perché mai è così difficile / complicato? Ho intenzione di scoprire e pubblicare una soluzione ... Resta sintonizzato.


Grazie, non vedo l'ora di vedere cosa scoprirai. Ma il download di un programma esterno richiede il tempo necessario per impostarli tramite le interfacce standard del Mac, spero ancora in una soluzione di riga di comando integrata.
ryanpcmcquen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.