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.
- Sugerí que pusiera algunas llamadas a "pitido" en su AppleScript para depurar si su script incluso se estaba llamando o no. Lo intenté y no funcionó.
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:
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
Envolví el código en un
on run
end run
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?
kaydell@learnbymac.com
--- 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:
- En las Preferencias del sistema, hay algunas preferencias para habilitar funciones que le ayudan (al menos durante la depuración).
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
- Podría usar un programa especialmente diseñado para manejar la definición de combinaciones de teclas. Hace años, solía usar un programa llamado QuicKeys. Parecen tener menos soporte para Mac ahora, pero podría buscar en Google "Alternativas a QuicKeys" si eso funcionara para que otro programa maneje la definición de los equivalentes del teclado.
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