Tengo el siguiente script para establecer 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 correspondiente e incluso se muestra correctamente cuando se visualiza en Preferencias del sistema. El problema es que el cambio no parece tener efecto . Invocar el método abreviado de teclado no tiene ningún efecto.
¿Cómo puedo configurar este acceso directo y hacer que tenga efecto de inmediato (completamente a través de shell/applescript)?
Los cambios realizados por AppleScript se me aplican 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. Ejecutar /System/Library/CoreServices/pbs -flush
o terminar pbs
no parece funcionar.
chris knadler
Lrí
sudo killall loginwindow
. Si no funciona en absoluto, compruebe si hay un elemento de menú que tenga control-comando-V como acceso directo. Los accesos directos para los elementos del menú tienen prioridad sobre los accesos directos para los servicios.chris knadler