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
la source
type = standard;
doit en fait êtretype = '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 cfprefsd
ajouté à la fin de ladefaults
commande . De plus, le chemin d'accès complet au.plist
fichier dans ce cas d'utilisation n'est pas nécessaire et simplement par exempledefaults write com.apple.symbolichotkeys AppleSymbolicHotKeys ...
et le reste de la commande est tout ce qui est nécessaire.Réponses:
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.plist
fichier.Voici une
defaults read
représentation de lacom.apple.symbolichotkeys.plist
structure 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
Le contrôle de mission a été remplacé par Contrôle-Option-Flèche vers le haut
La section BUGS de la
defaults
page de manuel indique:Et ceci est un exemple parfait car ce sera une ligne de commande très complexe à utiliser
defaults
pour é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 unedefaults 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.plist
fichier.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.
la source
filemon
ce qui faisait partie des Extras du livre "Mac OS X Internals - To The Apple's Core" sous forme de code sourcefilemon.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 .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.
la source