Utilizar la herramienta adecuada para el trabajo adecuado
-
Podrías intentar añadir un pitido a tu AppleScript para escuchar si está siendo llamado.
-
He tenido Servicios que no se ejecutan antes cuando hay dos cosas que intentan usar las mismas combinaciones de teclas. Podrías intentar añadir más teclas modificadoras para que el conflicto sea menos probable (para probar y depurar).
-
Cuando veo un código que depende de llamar al comando llamado "delay", me da la sensación de que el código no siempre va a funcionar.
-
AppleScript fue concebido por Apple para ser una interfaz de usuario alternativa, una alternativa al ratón y al teclado que utiliza AppleEvents para realizar la comunicación entre aplicaciones de proceso (IAC). Creo que puedes querer usar AppleScript y Automator Services para tener una GUI con la que trabajar, pero me parece probable que debas usar algo de menor nivel que AppleScript y AppleEvents para lo que estás haciendo.
Por lo tanto, estoy hablando de añadir algún tipo de shell script a la mezcla para que todo funcione de forma fiable.
--- Editar ---
Ya que @markhunte ha criticado mi respuesta por no ser realmente una respuesta, intentaré hacerlo mejor.
- Te sugerí que pusieras algunas llamadas a "bip" en tu AppleScript para depurar si tu script estaba siendo llamado o no. Lo he intentado y no ha funcionado.
Encontré el siguiente enlace que habla de hacer tu 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 utilizando AppleScript, por lo que deduzco, la función de registro que se construye en AppleScript sólo muestra los resultados en la parte inferior del editor de AppleScript Windows, y creo que el registro del sistema es difícil de entender. Esta función de registro me funciona, de hecho lo he probado:
on logToFile(themessage)
if themessage is equal to "" then
set theLine to ""
else
set theLine to (do shell script "date +'%Y-%m-%d %H:%M:%S'" as string) & " " & themessage
end if
do shell script "echo " & theLine & " >> ~/Library/Logs/AppleScript-events.log"
end logToFile
on run {input, parameters}
logToFile("")
logToFile("Entering Lock Keyboard Service")
set F8 to 100
set F9 to 101
set DOWN_ARROW to 125
# Press ^F8
logToFile("About to simulate control-F8")
tell application "System Events"
key code F8 using control down
end tell
delay 0.1
# Press "down"
logToFile("About to simulate down-arrow")
tell application "System Events"
key code DOWN_ARROW
end tell
delay 0.1
# Press ^F9
logToFile("About to simulate control-F9")
tell application "System Events"
key code F9 using control down
end tell
logToFile("Exiting Lock Keyboard Service")
return input
end run
He envuelto el código en un
on run
end run
porque el código parecía funcionar mejor para mí de esa manera.
Además del registro, para depurar, podrías intentar usar algunos caracteres visibles como "A", "B" y "C" y podrías ver si se están escribiendo en Safari.
Una idea más para ti. Cuando probé por primera vez el script, la tecla F8 estaba atada 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 atado. (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. Hazme saber si puedes verlo ya que estoy probando a compartir enlaces usando Dropbox.
https://www.dropbox.com/s/jm3smqa4g5v2k33/KeyboardShortcuts.png
¿Qué es lo que intenta hacer? ¿Bloquear un teclado con esta secuencia de combinaciones de teclas?
El flujo de trabajo sí me funcionó en Safari (después de cambiar la tecla control-F8 en los Atajos de teclado en las Preferencias del sistema) y en Safari, sí me salió una tecla de bajada, pero el teclado no se bloqueó. ¿Requiere esto una pieza adicional de software para que funcione?
kaydell@learnbymac.com
--- Editar ---
He añadido la página man del comando "automator" a mi página web que está en pañales.
página man para el comando automator http://learnbymac.com/doc/unix/automator.man.html
--- Editar ---
Tengo algunas ideas más para ti:
- En las Preferencias del Sistema, hay algunas preferencias para habilitar características que te ayudan (al menos durante la depuración).
A. Hay "sticky keys" que permite que una tecla modificadora se pegue y no se vaya tan rápido, eso podría ayudar. No lo sé.
http://learnbymac.com/images/screen_shots/StickyKeys.png
B. Hay una opción para que se muestre una imagen en la pantalla (y se reproduzca un sonido) cuando se detecta una tecla modificadora.
http://kaydell.us/learnbymac/images/screen_shots/DisplayPressedModifierKey.png
- Puede utilizar un programa especialmente diseñado para definir combinaciones de teclas. Hace años, solía utilizar un programa llamado QuicKeys. Parece que ahora tienen menos soporte para Mac, pero podrías buscar en Google "Alternativas a QuicKeys" si eso te sirve para que otro programa se encargue de definir los equivalentes del teclado.
P.D.: Acabo de desactivar todas esas preferencias de las Preferencias del Sistema de Accesibilidad, no soporto usarlas (tal vez algunas estarían bien, pero creo que el "Sticky Keys" estaba causando que mi Caps Lock se pegara al escribir todo en mayúsculas :( ).
http://kaydell.us/learnbymac/images/screen_shots/DisplayPressedModifierKey.png
Lo mejor sería utilizar Spark.app para manejar los equivalentes de las teclas de comando
http://www.shadowlab.org/Software/spark.php
0 votos
Hola, ¿Es esto para la pantalla de bloqueo
0 votos
Sí que lo es. He visto tu comentario sobre que este método es un acierto y sospecho que esa es la razón por la que no funciona.