Establecer el método abreviado de teclado de servicio y hacer que el cambio surta efecto programáticamente

1

Tengo la siguiente secuencia de comandos para configurar un acceso directo a los servicios:

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"

Esto establece un método abreviado de teclado para un servicio que he definido en la lista de propiedades apropiadas e incluso se muestra correctamente cuando se visualiza en las Preferencias del sistema. El problema es que el cambio no parece tener efecto . Invocar el atajo de teclado no tiene ningún efecto.

¿Cómo puedo configurar este acceso directo y hacer que surta efecto inmediatamente (completamente a través de shell / applescript)?

    
pregunta Chris Knadler 04.01.2014 - 07:40

1 respuesta

2

Los cambios realizados por AppleScript se aplican para mí después de cerrar y volver a abrir las aplicaciones. Lo mismo para este 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";}'

No conozco ninguna forma de aplicar los cambios sin volver a abrir las aplicaciones. La ejecución de /System/Library/CoreServices/pbs -flush o la terminación de pbs no parece funcionar.

    
respondido por el user495470 04.01.2014 - 08:35

Lea otras preguntas en las etiquetas