Comment modifier les raccourcis Mission Control depuis la ligne de commande?

11

J'essaie de comprendre cela depuis longtemps. J'ai un script de provisioning Mac OS assez typique:

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

Je souhaite que les raccourcis de contrôle de mission soient tous Ctrl+ Alt+ ...au lieu de Ctrl+ .... Par exemple, la valeur par défaut est: Ctrl+ Uppour activer Mission Control. Je voudrais changer cela en Ctrl+ Alt+ Up, car le raccourci actuel entre en conflit avec d'autres programmes que j'utilise.

Notez que je sais déjà comment faire cela System Preferences > Keyboard > Shortcuts, je recherche une solution de ligne de commande scriptable.

EDIT: Merci à @ user3439894 que j'ai parcouru et fait un script pour changer toutes les clés plist à ce que je veux qu'elles soient. Le seul problème est que cela ne fonctionne pas. :-(

Voici ce que j'ai jusqu'à présent:

#!/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
la source
Avez-vous déjà trouvé une solution à cela?
Nathan
@Nathan, non. Je viens de rouler avec les valeurs par défaut maintenant.
ryanpcmcquen
J'ai eu un problème similaire. Vous pouvez peut-être essayer ma solution: apple.stackexchange.com/questions/344494/…
Nathan
@Nathan, il semble que votre solution nécessite une intervention manuelle. Je viens d'apprendre comment changer les autres programmes que j'utilise pour avoir différents raccourcis clavier. Hammerspoon FTW.
ryanpcmcquen
Cette partie de la commande type = standard;doit en fait être type = 'standard';notée autour des guillemets 'standard'. Cela dit, parfois, même avec une ligne de commande correctement formée, le changement ne prend tout simplement pas effet, même s'il est ; killall -u $USER cfprefsdajouté à la fin de la defaults commande . De plus, le chemin d'accès complet au .plistfichier dans ce cas d'utilisation n'est pas nécessaire et simplement par exemple defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys ...et le reste de la commande est tout ce qui est nécessaire.
user3439894

Réponses:

5

Ce n'est pas une réponse directe bien que j'espère que les informations présentées ici vous aideront à obtenir une réponse directe.

Je peux vous dire ce qui change dans quel fichier lorsque vous changez le raccourci clavier par défaut pour le contrôle de mission de la flèche de contrôle vers le haut en flèche de contrôle vers le haut. Il s'agit du "numéro d'article 2" du tableau "paramètres" dans le dictionnaire "valeur" du dictionnaire "32" et du dictionnaire "34" du dictionnaire "AppleSymbolicHotKeys" dans le /Users/$USER/Library/Preferences/com.apple.symbolichotkeys.plistfichier.

Voici une defaults readreprésentation de la com.apple.symbolichotkeys.pliststructure du fichier en ce qui concerne les modifications apportées dans les circonstances définies ci-dessus.

Contrôle de mission avec la valeur par défaut de Flèche de contrôle vers le haut

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

Le contrôle de mission a été remplacé par Contrôle-Option-Flèche vers le haut

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

La section BUGS de la defaultspage de manuel indique:

Les valeurs par défaut peuvent être structurées de manière très complexe, ce qui rend difficile pour l'utilisateur de les saisir avec cette commande.

Et ceci est un exemple parfait car ce sera une ligne de commande très complexe à utiliser defaultspour écrire les valeurs cibles dans les éléments du tableau cible, si c'est même faisable. Juste un FYI ... Si vous voulez essayer de faire une defaults write com.apple.symbolichotkeys ...commande, assurez-vous d'avoir sauvegardé le fichier cible en premier.

L'autre option consiste à utiliser un AppleScript pour modifier les paramètres en naviguant dans l'interface graphique des préférences système et cela aussi sera un peu complexe par rapport à la définition d'un objet de niveau supérieur, ce qui n'est pas le cas ici. Je ne suis même pas sûr que ce soit faisable, mais si j'avais besoin d'un moyen automatisé, je le découvrirais, mais je n'ai pas le temps de comprendre l'une ou l'autre méthode, désolé.

Au moins, vous savez maintenant quels changements où et à partir de là, vous pouvez soit le découvrir par vous-même, soit obtenir une aide supplémentaire pour en savoir un peu plus.

Voici une image coupée en Xcode du com.apple.symbolichotkeys.plistfichier.

entrez la description de l'image ici

BTW J'ai intercepté les modifications à l'aide d'un utilitaire tiers qui a enregistré les modifications du système de fichiers, puis converti ces informations en une sortie plus lisible par l'homme pour fournir ces informations.

user3439894
la source
Cela semble changer les fichiers plist appropriés, le seul problème est que les raccourcis ne changent pas réellement, pas après les redémarrages, la relecture du fichier, ou quoi que ce soit.
ryanpcmcquen
Quel est le nom de cet «utilitaire tiers qui a consigné les modifications du système de fichiers puis converti ces informations en une sortie plus lisible par l'homme»?
Allen Bargi
1
@Allen Bargi, IIRC C'est probablement filemonce qui faisait partie des Extras du livre "Mac OS X Internals - To The Apple's Core" sous forme de code source filemon.c que j'ai compilé en un exécutable sur mon système. J'ai ensuite comparé les différences dans le fichier modifié de son état actuel avec le fichier d'une sauvegarde Time Machine effectuée juste avant les modifications. Vous pouvez également utiliser la commande native fs_usage .
user3439894
@ryanpcmcquen votre lien est rompu
charlesreid1
@ charlesreid1, eh bien, cela n'a pas fonctionné.
ryanpcmcquen
1

Voici ma recommandation: utilisez un utilitaire tel que Karabiner pour accompagner une telle personnalisation.

En tant que développeur, je tiens à dire que personnellement, je trouve que c'est un problème fascinant et alléchant, et il met vraiment en valeur le côté le plus laid et le plus sombre de macOS se cachant dans les coulisses que seuls les développeurs de logiciels et les pirates peuvent vraiment apprécier ...

Le problème est assez simple: je veux juste remapper la combinaison de touches par défaut à ma propre liaison.

Pourquoi diable est-ce si difficile / compliqué? J'ai l'intention de trouver et de publier une solution ... Restez à l'écoute.

Steve Benner
la source
Merci, j'ai hâte de voir ce que vous découvrirez. Mais le téléchargement d'un programme externe prend aussi longtemps que leur configuration via les interfaces standard du Mac, j'espère toujours une solution de ligne de commande intégrée.
ryanpcmcquen