Imposta la scorciatoia da tastiera di servizio e le modifiche hanno effetto a livello di programmazione

1

Ho il seguente script per impostare un collegamento ai servizi:

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"

Imposta una scorciatoia da tastiera per un servizio che ho definito nell'elenco delle proprietà appropriato e viene visualizzato correttamente anche durante la visualizzazione in Preferenze di Sistema. Il problema è che la modifica non sembra avere effetto . Il richiamo della scorciatoia da tastiera non ha alcun effetto.

Come posso impostare questo collegamento e farlo diventare immediatamente (completamente attraverso shell / applescript)?

    
posta Chris Knadler 04.01.2014 - 07:40
fonte

1 risposta

2

Le modifiche apportate da AppleScript vengono applicate per me dopo la chiusura e la riapertura delle applicazioni. Lo stesso per questo comando:

/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";}'

Non conosco alcun modo per applicare le modifiche senza riaprire le applicazioni. Eseguire /System/Library/CoreServices/pbs -flush o terminare pbs non sembra funzionare.

    
risposta data 04.01.2014 - 08:35
fonte

Leggi altre domande sui tag