Comment migrer tous les raccourcis clavier d'un Mac vers un autre?

11

J'ai beaucoup de raccourcis clavier personnalisés et je serai des Mac de migration. J'ai testé Migration Assistant et il ne semble pas les avoir.

J'ai lu quelque part qu'ils sont stockés dans les fichiers plist de l'application individuelle dans le ~/Library/Application Supportdossier, mais même après avoir copié quelques-uns de ces dossiers sur les raccourcis ne semblent pas suivre.

Comment puis-je faire migrer tous les raccourcis clavier vers un nouveau mac?

screenshot-with-shadow.png

cwd
la source

Réponses:

13

Les raccourcis qui peuvent être modifiés à partir de l'onglet Raccourcis d'application sont stockés dans ~/Library/Preferences/.GlobalPreferences.plistet dans les listes de propriétés des applications dans ~/Library/Preferences/*.plistet ~/Library/Containers/*/Data/Library/Preferences/*.plist.

$ defaults find NSUserKeyEquivalents
Found 1 keys in domain 'Apple Global Domain': {
    NSUserKeyEquivalents =     {
        "Actual Size" = "@0";
        "Automatic Fit" = "@9";
        "Automatically Resize" = "@9";
        "Browse All Versions..." = "^@v";
        "Decrease Indent Level" = "^\\Uf702";
        "Decrease Level" = "^\\Uf702";
        "Decrease Paragraph Indent" = "^\\Uf702";
        "Enter Full Screen" = "^@f";
        "Enter Full Screen Mode" = "^@f";
        "Exit Full Screen" = "^@f";
        "Exit Full Screen Mode" = "^@f";
        "Find Next" = "@g";
        "Find Previous" = "$@g";
        "Find and Replace..." = "~@f";
        "Full Screen" = "^@f";
        Fullscreen = "^@f";
        "Increase Indent Level" = "^\\Uf703";
        "Increase Level" = "^\\Uf703";
        "Increase Paragraph Indent" = "^\\Uf703";
        "Line Spacing..." = "~@l";
        Minimize = "\001";
        "Minimize All" = "\001";
        "Move Line Down" = "^\\Uf701";
        "Move Line Up" = "^\\Uf700";
        "Next Tab" = "~@\\Uf703";
        "Next Workspace" = "~@\\Uf703";
        "Normal Screen" = "^@f";
        "Original Size" = "@0";
        "Previous Tab" = "~@\\Uf702";
        "Previous Workspace" = "~@\\Uf702";
        "Remove Full Screen" = "^@f";
        Reveal = "$@r";
        "Select Next Tab" = "~@\\Uf703";
        "Select Next Tab View" = "~@\\Uf703";
        "Select Previous Tab" = "~@\\Uf702";
        "Select Previous Tab View" = "~@\\Uf702";
        "Shift Down" = "^\\Uf701";
        "Shift Left" = "^\\Uf702";
        "Shift Right" = "^\\Uf703";
        "Shift Up" = "^\\Uf700";
        "Show Next Tab" = "~@\\Uf703";
        "Show Previous Tab" = "~@\\Uf702";
        "Show in Finder" = "$@r";
        "Toggle Full Screen" = "^@f";
        "Use Selection for Find" = "@e";
        "Zoom Reset" = "@0";
        "Zoom to Fit" = "@9";
    };
}
Found 1 keys in domain 'com.panic.Transmit': {
    NSUserKeyEquivalents =     {
        "Hide Invisible Files" = "$@.";
        Refresh = "@r";
        "Show Invisible Files" = "$@.";
        "Synchronize..." = "$@y";
    };
}
Found 1 keys in domain 'net.sourceforge.skim-app.skim': {
    NSUserKeyEquivalents =     {
        Crop = "@k";
        "Single Page" = "$@1";
        "Single Page Continuous" = "$@0";
        "Two Pages" = "$@2";
    };
}
Found 1 keys in domain 'com.googlecode.iterm2': {
    NSUserKeyEquivalents =     {
        "Next Pane" = "@\\Uf703";
        "Open Autocomplete..." = "@;";
        "Previous Pane" = "@\\Uf702";
        "Select Pane Above" = "@\\Uf700";
        "Select Pane Below" = "@\\Uf701";
    };
}
Found 1 keys in domain 'net.notational.velocity': {
    NSUserKeyEquivalents =     {
        Bold = "\001";
        Delete = "$@d";
        Italic = "\001";
        "Plain Text Style" = "\001";
        Strikethrough = "\001";
    };
}
Found 1 keys in domain 'com.apple.Safari': {
    NSUserKeyEquivalents =     {
        "Mail Contents of This Page" = "\001";
        "Reopen All Windows from Last Session" = "~$@r";
        "Reopen Last Closed Window" = "~@r";
    };
}
Found 1 keys in domain 'com.hogbaysoftware.WriteRoom.mac': {
    NSUserKeyEquivalents =     {
        "Column 120" = "$@7";
        "Column 200" = "$@8";
        "Column 40" = "$@1";
        "Column 50" = "$@2";
        "Column 60" = "$@3";
        "Column 66" = "$@4";
        "Column 80" = "$@5";
        "Column 90" = "$@6";
        "Column Window Width" = "$@0";
        "Enter Full Screen" = "$@f";
        "Enter Full Screen Single" = "^@f";
        "Exit Full Screen" = "$@f";
        "Exit Full Screen Single" = "^@f";
    };
}

J'utilise en fait un script shell comme celui-ci pour configurer les raccourcis:

defaults write -g NSUserKeyEquivalents '{
"Browse All Versions..." = "^@v";
"Minimize" = "\1";
"Minimize All" = "\1";
"Show Previous Tab" = "~@\Uf702";
"Show Next Tab" = "~@\Uf703";
}'

defaults write -app Safari NSUserKeyEquivalents '{
"Reopen Last Closed Window" = "~@r";
"Reopen All Windows from Last Session" = "~$@r";
"Mail Contents of This Page" = "\1";
}'

Les chaînes de raccourci utilisent le même format que dans DefaultKeyBinding.dict . Vous pouvez supprimer un raccourci en affectant un élément de menu à \1. Si vous affectez un élément de menu à nil, il est déclenché lorsque vous appuyez sur n dans certaines applications comme Audacity. Si vous affectez un élément de menu à \0, il se déclenche lorsque vous appuyez sur une touche de Safari dans 10.9.

Notez que les préférences sont mises en cache dans Mavericks. Les modifications apportées avec les valeurs par défaut sont toujours appliquées après que vous venez de quitter et de rouvrir une application. Mais si vous modifiez un plist directement ou remplacez le plist, vous devez également exécuter killall cfprefsdou defaults read /path/to/plist.

Lri
la source
9

Grâce à la réponse existante, j'ai construit un script qui enregistrera les raccourcis dans un script à exécuter sur d'autres machines.

#!/bin/sh
# save-hotkeys.sh

DESTFILE=~/install-hotkeys.sh
echo '#!/bin/bash' > $DESTFILE

defaults find NSUserKeyEquivalents | sed -e "s/Found [0-9]* keys in domain '\\([^']*\\)':/defaults write \\1 NSUserKeyEquivalents '/" -e "s/    NSUserKeyEquivalents =     {//"  -e "s/};//" -e "s/}/}'/" >> $DESTFILE
echo killall cfprefsd >> $DESTFILE
chmod a+x $DESTFILE

Enregistrez-le dans un fichier appelé save-hotkeys.shet exécutez-le en exécutant sh save-hotkeys.sh. Sur la machine distante, exécutez-la ./install-hotkeys.shdans le même répertoire que le fichier. Dans mon exemple, j'enregistre le fichier dans la boîte de dépôt afin qu'il soit synchronisé avec mes autres machines.

Alan Shutko
la source
Salut Alan, c'est super. Comment exécuter ce script? L'enregistrer dans un fichier? Quelle extension cela devrait-il être? Exécutez-le en double-cliquant sur le fichier?
kiwi en colère
Ajout d'une explication sur la façon de l'utiliser.
Alan Shutko
@ Alan Shutko, j'ai cette erreur lorsque j'exécute des raccourcis clavier: Af-MacBook-Pro: HD 2 af $ sh save-hotkeys.sh save-hotkeys.sh: ligne 5: / Users / Af / Dropbox / install -hotkeys.sh: Aucun fichier ou répertoire de ce type
kiwi en colère
Salut Alan, une mise à jour?
kiwi en colère
1
Ne fonctionne pas pour moi sur 10.15.2 Catalina, après avoir exécuté le fichier, il rapporte: Unexpected argument NSUserKeyEquivalents; leaving defaults unchanged.
Siniša Šašić