Hice un servicio de Automator que ejecuta un Applescript con el Run Applescript
módulo. Este es el guión:
# Press ^F8
tell application "System Events"
key code 100 using control down
end tell
delay 0.1
# Press "down"
tell application "System Events"
key code 125
end tell
delay 0.1
# Press ^F9
tell application "System Events"
key code 101 using control down
end tell
Cuando tengo el servicio abierto en Automator y presiono Workflow -> Run
todo funciona como debería. Sin embargo, cuando abro el servicio desde la barra de menú, es decir, en Safari, al ir a Safari -> Services -> script name
nada sucede. No hay nada escrito en la consola, por lo que no puedo entender por qué el servicio no funciona. ¿Cómo puedo rastrear el error y hacer que el servicio se ejecute fuera de Automator?
applescript
automator
Saaru Lindestøkke
fuente
fuente
Respuestas:
¿Qué está destinado a hacer ⌃F9? Esto funcionó para mí cuando lo envolví en un servicio:
Puede intentar ejecutar el flujo de trabajo con
automator -v
:Sin embargo, existen varios problemas con el uso de los servicios de Automator para asignar accesos directos a los scripts. Ver esta pregunta . Si ejecuta el servicio con un acceso directo que tiene teclas modificadoras, es posible que no haya tiempo suficiente para liberarlas antes de que el código clave ordene.
También podría usar un script como este:
fuente
Usando la herramienta adecuada para el trabajo correcto
Puede intentar agregar un pitido a su AppleScript para escuchar si se está llamando.
He tenido servicios que no se ejecutaron antes cuando hay dos cosas que intentan usar las mismas combinaciones de teclas. Podría intentar agregar más teclas modificadoras para que sea menos probable un conflicto (para pruebas y depuración).
Cuando veo un código que depende de llamar al comando llamado "retraso", me da la sensación de que el código no siempre funciona.
AppleScript pretendía que Apple fuera una interfaz de usuario alternativa, una alternativa al mouse y al teclado que usa AppleEvents para realizar la Comunicación de aplicaciones entre procesos (IAC). Creo que es posible que desee utilizar AppleScript y Automator Services para proporcionarle una GUI con la que trabajar, pero me parece probable que deba usar algo de nivel inferior a AppleScript y AppleEvents para lo que está haciendo.
Entonces, estoy hablando de agregar algún tipo de script de shell a la mezcla para que todo funcione de manera confiable.
--- Editar ---
Como @markhunte ha criticado mi respuesta por no ser realmente una respuesta, intentaré hacerlo mejor.
Encontré el siguiente enlace que habla sobre hacer su propia función de registro. Creo que eso funcionará mejor. http://hints.macworld.com/article.php?story=2004121710493371
Aquí está mi versión del código para hacer su propio registro usando AppleScript, de lo que deduzco, la función de registro que está integrada en AppleScript solo muestra los resultados en la parte inferior de las ventanas del editor de AppleScript, y creo que el registro del sistema es difícil de entender. Esta función de registro funciona para mí, en realidad la he probado:
Envolví el código en un
porque el código parecía funcionar mejor para mí de esa manera.
Además de iniciar sesión, para depurar, puede intentar usar algunos caracteres visibles como "A", "B" y "C" y puede ver si se están escribiendo en Safari.
Una idea más para ti. Cuando probé el script por primera vez, la tecla F8 estaba vinculada a algo. Tuve que ir a Preferencias del sistema> Teclado> Atajos de teclado y desatar la combinación de teclas ^ F8 de lo que estaba vinculado. (Esto es como lo que dije en mi primera respuesta, que creo que tenía algunas buenas ideas, como probar diferentes combinaciones de teclas).
Aquí hay un enlace a una captura de pantalla. Está en mi carpeta pública de Dropbox. Avíseme si puede verlo, ya que estoy tratando de compartir enlaces con Dropbox.
https://www.dropbox.com/s/jm3smqa4g5v2k33/KeyboardShortcuts.png
¿Qué es lo que estás tratando de hacer? ¿Bloquear un teclado con esta secuencia de combinaciones de teclas?
El flujo de trabajo se ejecutó para mí en Safari (después de cambiar la tecla control-F8 en los atajos de teclado en las Preferencias del sistema) y en Safari, obtuve una tecla de matriz, pero el teclado no se bloqueó. ¿Requiere eso una pieza de software adicional para que esto funcione?
[email protected]
--- Editar ---
Agregué la página de manual para el comando "automatizador" a mi sitio web que está en su infancia.
página de manual para el comando del automatizador http://learnbymac.com/doc/unix/automator.man.html
--- Editar ---
Tengo algunas ideas más para ti:
R. Hay "teclas adhesivas" que permiten que una tecla modificadora se pegue y no desaparezca tan rápido, eso podría ayudar. No lo sé.
http://learnbymac.com/images/screen_shots/StickyKeys.png
B. Es una opción para mostrar una imagen en la pantalla (y reproducir sonido) cuando se detecta una tecla modificadora.
http://kaydell.us/learnbymac/images/screen_shots/DisplayPressedModifierKey.png
PD: acabo de desactivar todas esas preferencias de las Preferencias del sistema de accesibilidad, no puedo soportar usarlas (tal vez algunas estarían bien, pero creo que las "Teclas adhesivas" estaban causando que mi Bloq Mayús se quedara escribiendo todo en mayúsculas . :().
http://kaydell.us/learnbymac/images/screen_shots/DisplayPressedModifierKey.png
Sería mejor usar Spark.app para manejar equivalentes de teclas de comando
http://www.shadowlab.org/Software/spark.php
fuente