Cómo detener al agente de inicio de lanzar repetidamente un AppleScript determinado

Intento crear un agente de lanzamiento, que lanza un AppleScript cada vez que se conecta un mouse. Similar a estas dos preguntas:

https://stackoverflow.com/questions/15397304/launchevents-key-unrecognized-in-launchdplist-detecting-usb-device

  • ¿Por qué mi AppleScript no se ejecutará como un service?
  • ayuda para escribir guiones para montar discos duros externos
  • Respuesta automática de AppleScript con número creciente
  • ¿Cómo invoco un service usando Applescript?
  • Applescript: Obtener la list de identificaciones de windows visibles (windows que se muestran en el escritorio)
  • Acceso directo global para el elemento del menu dentro de la barra de menus
  • https://stackoverflow.com/questions/7240117/execute-an-application-on-mac-os-x-when-a-particular-type-of-usb-device-is-conne

    Sin embargo, una vez que launchctl load mi agente de inicio (a través de la launchctl load ), sigue comenzando cada 5 segundos o así. ¿Cómo me aseguro de que el agente se ejecute solo una vez cuando el mouse está conectado?

    Aquí está mi agente (plist):

     <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <false/> <key>Label</key> <string>com.automations.switchscrolldirection</string> <key>ProgramArguments</key> <array> <string>osascript</string> <string>/Users/lirik/Documents/Automation/SwitchScrollDirectionOnMouseEvent.scpt</string> </array> <key>LaunchEvents</key> <dict> <key>com.apple.iokit.matching</key> <dict> <key>com.apple.device-attach</key> <dict> <key>idProduct</key> <integer>49277</integer> <key>idVendor</key> <integer>1133</integer> <key>IOProviderClass</key> <string>IOUSBDevice</string> <key>IOMatchStream</key> <true/> <key>IOMatchLaunchStream</key> <true/> </dict> </dict> </dict> </dict> </plist> 

    El AppleScript en cuestión:

     on gamingMouseIsAttached() tell application "System Preferences" activate set current pane to pane "com.apple.preference.mouse" end tell tell application "System Events" to tell process "System Preferences" repeat until exists checkbox 1 of window "Mouse" end repeat tell checkbox 1 of window "Mouse" to if value is 1 then click end tell tell application "System Preferences" to quit end gamingMouseIsAttached on TrackpadIsAttached() tell application "System Preferences" activate set current pane to pane "com.apple.preference.trackpad" end tell tell application "System Events" to tell application process "System Preferences" repeat until exists checkbox 1 of tab group 1 of window "Trackpad" end repeat tell checkbox 1 of tab group 1 of window 1 to if value is 0 then click end tell tell application "System Preferences" to quit end TrackpadIsAttached tell current application delay 15 set internalTrackpad to (do shell script "system_profiler SPUSBDataType | awk '/Trackpad:/ { print \"Internal Trackpad\" }'") set gamingMouse to (do shell script "system_profiler SPUSBDataType | awk '/Gaming Mouse G502:/ { print \"Gaming Mouse\" }'") if gamingMouse is equal to "" then if internalTrackpad is equal to "Internal Trackpad" then my TrackpadIsAttached() return end if end if if gamingMouse is equal to "Gaming Mouse" then my gamingMouseIsAttached() return end if end tell 

  • Comparta la connection de internet del iPad a la PC a través de USB
  • Lanzamiento: permissions dudosos en el file: problema al instalar Jenkins
  • ¿Puedo ejecutar un progtwig cada vez que abro la tapa de mi MacBook Air?
  • ¿Cómo puedo generar presentaciones dinámicas de conferencias magistrales?
  • Cómo crear imágenes de unidades USB sin tener que OS X montarlas después
  • No puedo crear una unidad USB de installation de OSX Mavericks de arranque
  • Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).