¿Se puede programar una Mac para simular presionar una tecla a una velocidad determinada a través del software?

¿Hay alguna forma o una aplicación de terceros que me permita especificar, por ejemplo, que quiero que envíe un evento de teclado (para que tenga el mismo efecto que presionar físicamente la tecla en el teclado) cada 5 segundos?

Entonces, por ejemplo, ¿podría decirle que golpee Kcada 5 segundos, 15 veces en total?

Básicamente, estoy buscando algo como AutoHotkey pero para OS X.

Respuestas (3)

Aquí hay un AppleScript para hacer lo que quieras:

set i to 0
repeat while i < 15
    set i to i + 1
    delay 5
    tell application "System Events" to keystroke "k"
end repeat

Puede alinearlo en un script de shell como este:

echo "set i to 0
repeat while i < 15
set i to i + 1
delay 5
tell application \"System Events\" to keystroke \"k\"
end repeat" | osascript

(¡Gracias a @houbysoft por la echo "script" | osacriptsintaxis!)

Nunca he usado Automator. ¿Te importaría compartir una guía paso a paso? Me gustaría presionar repetidamente Retorno en un formulario web.

Encontré una manera de hacer esto en un script bash:

#!/bin/sh
# Simulates hitting a key on OS X
# http://apple.stackexchange.com/a/63899/72339

echo "tell application \"System Events\" to keystroke \"$1\"" | osascript

Guardar como hitkey, para golpear chmod +x hitkey.hitkey kK

A partir de ahí, es fácil usar Automator para repetir el script varias veces o hacer una alarma de iCal para iniciar el script en un momento específico.

Tipos de documentos de Automator

¿Eso no se pierde la parte completa de "repetir cada 5 segundos para un total de 15 veces"?
No sabía sobre la echo "script" | osascriptsintaxis, siempre he usado osascript -e "script". Entonces obtienes +1 por eso.
@DanielLawson: sí, pero al tener el script de shell, es fácil reproducirlo como quieras.
Nunca he usado Automator. ¿Te importaría compartir una guía paso a paso? Me gustaría presionar repetidamente Retorno en un formulario web.

Aquí está mi tipo de flujo de trabajo

  1. en la línea de comando, escriba Ctrl + x, luego Ctrl + e para ingresar a Vim y escriba allí.

  2. escriba a continuación; ves que no hay barra invertida.

     cat << EOF | osascript
     set repeat_number to 5
     set i to 1
     repeat while i <= repeat_number
     tell application "System Events" to keystroke "k"

     display notification "repeat keystroke " & i & "time"
     set i to i + 1
     delay 1
     end repeat
    EOF
  1. luego guarde vim y salga del comando, supongamos que sabe cómo salir en vim;)

    • Esc :wq
  2. Volver a la terminal para ejecutar lo escrito arriba.

+++ Ah, una cosa más.

     cat | osascript
     display alert "typeing like Script Editor, no need to type backslash!"
     display notification "type ctrl + d to end typing and run it."
Usarlo catjunto con un here-doc parece ser un poco excesivo (no necesita la catparte).
@nohillside Aaaah, ecos de los premios de "uso inútil de cat", entregados regularmente comp.unix.shellen los viejos tiempos de Usenet.