No sé si te das cuenta pero pulsaciones de teclas enviado por Eventos del sistema va al activo ventana más frontal de la aplicación más frontal y como tal el objetivo debe permanecer frente más y básicamente no puedes usar el ordenador para nada más mientras el proceso está ocurriendo.
El ejemplo AppleScript código que se muestra a continuación, se probó bajo MacOS Catalina como AppleScript aplicación stay open con Lengua y región ajustes en Preferencias del sistema ajustado a Inglés (EE.UU.) - Primaria y me ha funcionado sin problemas 1 .
- 1 Asume la configuración necesaria y adecuada en <strong>Preferencias del sistema </strong>> <strong>Seguridad y privacidad </strong>> <strong>Privacidad </strong>se han fijado/abordado según las necesidades.
En Script Editor , copie y pegue el ejemplo AppleScript código en un nuevo documento y cambiar "TextEdit"
y "Untitled"
a los valores adecuados para el objetivo aplicación y ventana quieres el pulsaciones de teclas para ir a. Los valores existentes eran de prueba.
Al guardar, en el Guardar como: hoja , cambio Formato de archivo: a [Aplicación] y bajo Opciones: compruebe el [] Permanecer abierto después de la ejecución del manipulador casilla de verificación .
Ejemplo AppleScript código :
property appName : "TextEdit"
property winName : "Untitled"
global theCounter
on run
set theCounter to 0
delay 60
end run
on idle
my isItTimetoSendKeystroke()
return 60
end idle
on isItTimetoSendKeystroke()
set theCounter to theCounter + 1
if (theCounter mod 2) = 0 then
my sendKeystroke("a")
my sendKeystroke("a")
end if
if (theCounter mod 30) = 0 then
my sendKeystroke("b")
end if
if (theCounter mod 60) = 0 then
my sendKeystroke("C")
end if
end isItTimetoSendKeystroke
to sendKeystroke(thisKey)
tell application "System Events"
tell application process appName
set frontmost to true
perform action "AXRaise" of window winName
keystroke thisKey
end tell
end tell
end sendKeystroke
on quit
continue quit
end quit
Notas:
Si sólo está automatizando la introducción de texto en un cuadro de texto o documento, puede eliminar uno de los my sendKeystroke("a")
y cambiar la otra por my sendKeystroke("aa")
, en caso contrario, si se simula un clave para, digamos, un juego, entonces probablemente lo querrás tal y como está codificado actualmente.
Guiones de interfaz de usuario puede ser poco fiable y propenso a fallar.
Algunos aplicaciones no responderá a keystroke
y o key code
comandos de Eventos del sistema ya que están diseñadas para no responder a este tipo de evento de esta manera. Juegos son el tipo típico de aplicación que pueden no responder.
Personalmente, no me gusta este tipo de Guiones de interfaz de usuario y he publicado esto más como una prueba de concepto. Según mi experiencia, algunos AppleScript mantener abiertas las solicitudes puede, con el tiempo, consumir más memoria y acabar colapsando. También pueden hacer que los ventiladores giren y mantengan altas RPM. Esto probablemente tiene que ver más con algunos de los código que se está ejecutando, sin embargo, como regla general, trato de realizar la tarea de una manera diferente que no se convierta en un recurso intensivo, si es posible.
Crédito a Tetsujin por su comentario a la OP, que fue la base de esta respuesta.
Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y sin ningún tipo de inclusión <em>tratamiento de errores </em>no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>pruebe con </strong></a><em>declaración </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con errores </strong></a>. Además, el uso de la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.