No tiene permiso para enviar pulsaciones de teclas. (1002)

Hola. Tengo un script en formato aplicación con el que abro y/o cierro varias aplicaciones. En alguna de esas aplicaciones le pido que ejecute algunos comandos. Por ejemplo en Mail le digo <<tell application "System Events" to key code 45 using {shift down, command down}>> para que descargue todo el correo nuevo. El problema es que el script da el error “no tiene permiso para enviar pulsaciones de teclas. (1002)” cuando le da la gana, bajo muy diversas circunstancias. Por supuesto, he dado todos los permisos en Ajustes > Privacidad y seguridad > Monitorización de entrada (y en Accesibilidad y en… todos los sitios que he podido). También he dado similares permisos a la propia aplicación Editor de Scripts. ¿Cómo soluciono este problema? Mi sistema operativo es Ventura 13.1 sobre Mac M1. Gracias


Lo que se dice en “Mis AppleScript ahora no funcionan por… - Comunidad de Apple no funciona.


Mac mini, macOS 13.1

Publicado el 16/12/2022 10:58 a.m.

Responder

Preguntas similares

20 respuestas

19/12/2022 04:57 a.m. en respuesta a Santiagosir

En High Sierra solo he necesitado añadir la app a Accesibilidad para que dejara de aparecer el mensaje.


Como dices que el script que has creado tiene muchas opciones, prueba a generar uno más básico, como crear una nueva carpeta en el Finder, y confirma si sigues teniendo los mismos problemas. Podría ser que alguna parte requiriera mayores permisos que el resto.



He encontrado un hilo con una queja muy parecida y, una de las soluciones que les funcionó a algunos es añadir /System/Library/CoreServices/System Events a Accesibilidad. Me parece una solución muy extraña pero como no es peligrosa no te cuesta nada probarla.


https://apple.stackexchange.com/questions/291574/osascript-is-not-allowed-assistive-access-1728

17/12/2022 12:35 p.m. en respuesta a Santiagosir

Puedes usar los nombres de los menús y acciones en lugar de los números. Incluso de los que requieren la tecla Opción. Lo bueno es que aunque añadan algún menú en una actualización seguirá funcionando.

tell application "Finder" to activate
tell application "System Events" to click menu item "Cerrarlo todo" of menu "Archivo" of menu bar item "Archivo" of menu bar of process "Finder"


También existe la versión extra larga:

tell application "Finder" 
	activate
end tell
tell application "System Events"
	tell process "Finder"
		tell menu bar 1
			tell menu bar item "Archivo"
				tell menu "Archivo"
					click menu item "Cerrarlo todo"
				end tell
			end tell
		end tell
	end tell
end tell



Debe ser el texto exacto del menú y yo lo he traducido por lo que podría haber algún error.

19/12/2022 06:33 a.m. en respuesta a Santiagosir

También tienes la opción de ordenar a las aplicaciones que hagan esas acciones. Puede ser más complicado encontrar la orden exacta pero entonces no necesitas habilitar permisos.


Para crear una nueva carpeta en el Escritorio llamada "Carpeta buena":

tell application "Finder" to make new folder at desktop with properties {name:"Carpeta buena"}


Como puedes ver así no es necesario activar el Finder para que funcione ya que le indicas la carpeta donde crearla.

19/12/2022 01:13 p.m. en respuesta a _APB_

Como dices que si ejecutas el script desde el Editor no tienes problemas de permisos se me ha ocurrido una opción.

Crea una nueva app con este texto:

tell application "Script Editor"
	set segon_script to (open "(la dirección del script, sin crear la app)")
	execute segon_script
	--delay 0.5
	quit
end tell


Incluyo la instrucción delay por si la ejecución es larga y necesita tiempo para terminarla antes de cerrar el Editor. Si aún se está ejecutando el segundo script cuando llegue a quit dejará el Editor abierto.

16/12/2022 01:12 p.m. en respuesta a _APB_

Hola. Muchas gracias por la idea. Es una manera de rodear el problema. La pena es que mi nivel de conocimientos con scripts es muy bajo. El script que dices, funciona. Ahora bien, cambio los números y o no entiendo la mecánica o no me funcionan. Por ejemplo:

tell application "System Events" to click menu item 2 of menu 1 of menu bar item 3 of menu bar of process "Finder"

No crea "Nueva carpeta".

Saludos

16/12/2022 03:41 p.m. en respuesta a Santiagosir

Has entendido correctamente la mecánica.

No te crea ninguna carpeta porque no sabe donde hacerlo. Finder necesita ser la aplicación en primer plano para así tener una carpeta activa, o el Escritorio, donde crearla.


tell application "Finder" to activate
tell application "System Events" to click menu item 2 of menu 1 of menu bar item 3 of menu bar of process "Finder"


Me gustan las instrucciones en una línea pero si necesitas dar varias instrucciones seguidas a una misma aplicación puede usar la formula tradicional.


tell application "Finder"
	activate

	beep --hace que suene un beep
	beep
	beep

	tell application "System Events"
		click menu item 2 of menu 1 of menu bar item 3 of menu bar of process "Finder"

	end tell --del System Events
end tell --del Finder

17/12/2022 09:55 a.m. en respuesta a _APB_

Muchas Gracias. Dada mi inexperiencia me apaño mejor con la formulación tradicional. No acabo de comprender el número de los submenús, y lo estoy encontrado con error/acierto. Cuento el numero de entradas, los separadores… ¿también los menús que no se listan pero aparecen cn la tecla option?… pero aún así no logro encontrar la razón. Por ejemplo, pedir en Finder cerrar todas las ventanas es el número 13 (para ello debo empezar a contar desde la manzana) cuando para un profano es 8:

tell application "System Events"

click menu item 13 of menu 1 of menu bar item 3 of menu bar of process "Finder"

end tell

18/12/2022 11:14 a.m. en respuesta a _APB_

De nuevo, gracias. Al ponerme con este tema ya había visto que existía esta modalidad pero pero aún me resultaba más complejo desentrañarla. La veo más interesante para no cometer errores porque hay que ser preciso a la hora de indicar el nombre del comando y si te equivocas el script no funcionará, en cambio con los número puedes cometer un error y, por ejemplo, borrar lo que no querías. Saludos

18/12/2022 02:51 p.m. en respuesta a Santiagosir

Mi gozo en un pozo. He preparado el script con múltiples aperturas de aplicaciones y ejecución de algunos menús (usando sus nombres) y todo perfecto según lo iba haciendo y comprobando. Acabo. Convierto el script en aplicación, le doy permisos en Ajustes > Privacidad y seguridad y… ¡******!

No se ejecuta… el mensaje es:

No tienes autorización para enviar eventos Apple a System Events. (-1743)



18/12/2022 11:53 p.m. en respuesta a _APB_

El script tiene permisos en Privacidad y seguridad en (Ventura 13.1): Automatización, Grabar pantalla, Monitorización de entrada, Accesibilidad, Acceso al disco (aparece en Archivos y carpetas), Bluetooth… algunas sé que no lo necesita.

Ahora al ejecutar el script como aplicación dice:

no tiene permitido el acceso de ayuda. (-1728)

Por supuesto, si lo abro en su aplicación y lo ejecuto, funciona.

19/12/2022 03:24 p.m. en respuesta a Santiagosir

Yo no veo ninguna diferencia con el mío, dirección aparte, y a mi me funciona correctamente.

Aunque ya lo has solucionado mediante Automator puedes probar cambiando los dos segon_script por un nombre sin guión inferior, por si acaso lo interpreta diferente.


Tienes razón en que Apple se ha liado, sea con Automator o con el Editor de Scripts. No tiene ningún sentido tener que darle una multitud de permisos a una app creada por ti para que te funcione en tu usuario. No lo considero un fallo de seguridad, es tu app y tu usuario, pero falla la coherencia.


Después de todo el lío que menos que reírte un mucho, no te cortes. 🤣

Este debate ha sido cerrado por el sistema o por el equipo de la Comunidad. Puedes votar por el contenido que consideres útil o buscar respuestas adicionales en la Comunidad.

No tiene permiso para enviar pulsaciones de teclas. (1002)

Bienvenido a la Comunidad de soporte de Apple
Un foro donde los clientes de Apple se ayudan entre sí con sus productos. Comienza con tu cuenta de Apple.