1 votes

Définir un raccourci clavier de service et faire en sorte que le changement prenne effet par programme

J'ai le script suivant pour définir un raccourci de services :

set serviceName to "(null) - VimAnywhere - runWorkflowAsService"
set libPrefPath to POSIX path of (path to preferences folder from user domain as text)
set plistFile to "pbs.plist"
set plistPath to libPrefPath & plistFile as text
set mainPropertyItem to "NSServicesStatus"
set keyBindingKey to "key_equivalent"
set keyBinding to "^@v"

tell application "System Events"
  set gp to (get property list item serviceName of property list item mainPropertyItem of property list file plistPath)
  tell gp
    set value of property list item keyBindingKey to keyBinding
  end tell
end tell

do shell script "defaults read > /dev/null"

Cela définit un raccourci clavier pour un service que j'ai défini dans la liste des propriétés appropriées et il s'affiche même correctement lorsqu'il est affiché dans les préférences système. Le problème est que la modification ne semble pas faire effet . L'invocation du raccourci clavier n'a aucun effet.

Comment puis-je définir ce raccourci et faire en sorte qu'il prenne effet immédiatement (entièrement via le shell/applescript) ?

2voto

Fuzzy Purple Monkey Points 702

Les modifications apportées par l'AppleScript sont appliquées pour moi après que j'ai quitté et rouvert les applications. Idem pour cette commande :

/usr/libexec/PlistBuddy -c 'Delete NSServicesStatus:"(null) - VimAnywhere - runWorkflowAsService"' ~/Library/Preferences/pbs.plist 2>/dev/null;defaults write pbs NSServicesStatus -dict-add '"(null) - VimAnywhere - runWorkflowAsService"' '{key_equivalent = "~@v";}'

Je ne connais aucun moyen d'appliquer les changements sans rouvrir les applications. Exécution de /System/Library/CoreServices/pbs -flush ou de mettre fin pbs ne semble pas fonctionner.

0 votes

Quelles applications ? Il devrait s'agir d'un raccourci pour l'ensemble du système, je ne sais donc pas ce qu'il faudrait faire pour qu'il s'applique à l'ensemble du système.

1 votes

Je l'ai testé avec Preview, mais c'est probablement la même chose pour toutes les applications. Vous pouvez également vous déconnecter et vous reconnecter ou lancer sudo killall loginwindow . Si cela ne fonctionne pas du tout, vérifiez s'il existe un élément de menu dont le raccourci est contrôle-commande-V. Les raccourcis des éléments de menu ont la priorité sur les raccourcis des services.

0 votes

C'est chaque fenêtre. Une fois que j'ai fermé toutes les fenêtres, tout fonctionne parfaitement. C'est vraiment étrange. Quoi qu'il en soit, la réponse est parfaite ! Merci pour votre aide.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X