¿Cómo asigno un atajo de teclado a un AppleScript que escribí?

¿Cómo asigno un atajo de teclado a un AppleScript? Encontré un script para volver automáticamente a la bandeja de entrada en Office 2011.

Como se señala en esta respuesta , los atajos de teclado asignados a través de los servicios no siempre son consistentes.

Respuestas (7)

¡También es posible sin aplicaciones pagas de terceros!
1. Abra Automator.
2. Realice una nueva acción rápida.
3. Asegúrese de que no reciba ninguna entrada en todos los programas.
4. Seleccione Ejecutar Apple Script y escriba su código.
5. ¡Ahorra!

Ahora ve a Preferencias del sistema > Teclado > Accesos directos. Seleccione Servicios en la barra lateral y encuentre su servicio. Agregue un acceso directo haciendo doble clic (none).

Finalmente, vaya a Preferencias del sistema> Seguridad> Privacidad> Accesibilidad y agregue Automator y la aplicación preferida para ejecutar el acceso directo.

Ese último "Finalmente" es importante: si se lo pierde, obtendrá un cuadro de diálogo confuso "La acción [...] encontró un error", que solo le ofrece Mostrar flujo de trabajo, lo que probablemente no lo haga más sabio.
Descubrí el problema, el último paso es diferente en mi sistema operativo mizage.com/help/accessibility.html#10.7
¿A qué te refieres con la aplicación preferida?
Sería bueno si hubiera una manera de automatizar el paso "ahora go to System Preferences > Keyboard > Shortcuts. Select Services from the sidebar and find your service. Add a shortcut by double clicking (none).". Debe ser posible, aunque no tengo idea de cómo...
@William como si escribiera un AppleScript en el Finder, simplemente seleccione Automator y Finder en la configuración de Accesibilidad.
Estoy tratando de asignar F1, F2, etc. para iniciar aplicaciones y este método casi funciona. Por alguna razón, al iniciar una nueva aplicación, los accesos directos de la tecla F no se registran hasta que primero he hecho cmd + F1. Es como si los servicios no estuvieran cargando. ¿Algunas ideas?
Para usuarios de MacOS 10.13 ("High Sierra"): "Accesibilidad" se encuentra en "Seguridad y privacidad"
Para ciertas versiones de MacOS (p. ej., mi 10.13.6 "High Sierra"), la tecla de acceso directo no funciona si el escritorio o Finder están enfocados; sin embargo, funciona cuando cualquier otra aplicación está enfocada. Bueno, esto es aceptable porque MacOS siempre está lleno de errores que en su mayoría no afectan el uso normal.
Recibí una solicitud para dejar un enlace a mi respuesta a una pregunta relacionada . Implica el uso de AppleScript en Automator para reposicionar/cambiar el tamaño de las ventanas de la aplicación.
"Parece que a veces tengo que ejecutar el script en servicios para que se registre antes de que registre el atajo de teclado, lo cual es una pena". (los servicios significan ir a su App, luego ir al menú App > Services > Your script, luego dar permiso) - ¡Este comentario de @William a la respuesta de monomeeth es importante!
¡Muchas gracias por esto, realmente ayuda!

En resumen, necesitarás usar:

  • Automator para crear un servicio que ejecute un Apple Script
  • Preferencias del sistema para asignar un atajo de teclado al servicio

A continuación se muestran los pasos necesarios para cada uno.

1. Crea un servicio usando Automator

  1. Inicie Automator (generalmente se encuentra dentro de su carpeta de Aplicaciones)
  2. Vaya a Archivo > Nuevo
  3. Seleccione Servicio y haga clic en Elegir
  4. En la parte superior derecha de la ventana que aparece, asegúrese de que "Sin entrada" esté seleccionado en la lista desplegable El servicio recibe
  5. Asegúrese de que la lista desplegable En muestre "Cualquier aplicación"
  6. En la segunda columna que contiene la lista larga, busque "Ejecutar AppleScript" y haga doble clic en él
  7. Esto agregará la ventana Ejecutar AppleScript a la derecha
  8. Ahora, reemplace (* Su script va aquí *) con el script que desea
  9. Guarde el servicio con un nombre significativo (p. ej., GoToInbox).

Ahora al siguiente paso.

2. Creando tu atajo

  1. Vaya a Preferencias del sistema > Teclado > Accesos directos
  2. Seleccione Servicios en la barra lateral
  3. Encuentra tu servicio (estará en la lista del lado derecho)
  4. Agregue un acceso directo haciendo doble clic en el nombre del servicio
  5. Ahora ve a Preferencias del Sistema > Seguridad y Privacidad > Privacidad
  6. Seleccione Accesibilidad en la barra lateral
  7. Haga clic en el signo + (es posible que deba desbloquear el candado si está bloqueado)
  8. Añadir Automatizador.
  9. Agregue Finder (para encontrar esto, deberá navegar a /System/Library/CoreServices/Finder.app ).
  10. Sal de tus Preferencias del Sistema.

Ahora deberías poder hacer dos cosas:

1. Ejecute el servicio desde cualquier aplicación yendo a la lista de Servicios dentro de cualquier menú de la aplicación (por ejemplo, Finder > Servicios, Safari > Servicios, TextEdit > Servicios, etc.) y seleccione el servicio que acaba de crear.

2. Use el atajo de teclado para ejecutar el servicio.

NOTA: Soy consciente de que, para algunos usuarios, los métodos abreviados de teclado no parecen funcionar aunque hayan sido asignados a un servicio. Este es otro tema, pero si esto sucede en su caso, al menos puede ejecutar el servicio desde cualquier aplicación que esté usando.

Déjame saber cómo vas.

¿Por qué debo agregar el buscador manualmente y en qué aplicaciones no funciona esto en general? Parece que a veces tengo que ejecutar el script en los servicios para que se registre antes de que registre el atajo de teclado, lo cual es una pena.
Sí, el problema que mencioné en mi Nota al final a menudo (pero no siempre) se puede corregir ejecutando primero un servicio (y, a veces, solo acceder al menú Servicios es suficiente) antes de que se reconozca el atajo de teclado. Este es un error extremadamente molesto que existe desde hace mucho tiempo y sin duda le recomiendo que envíe un informe de error a Apple . En cuanto a por qué tiene que agregar Finder manualmente , simplemente porque no se agrega de forma predeterminada. Finalmente, no entendí lo que quisiste decir con ¿en qué aplicaciones no funciona esto en general ?
Ignorando mi pregunta sobre la aplicación que no funciona en algunas aplicaciones. Parece que ejecutar el script una vez en el menú Servicio corrige este problema y su explicación explica el problema que estaba teniendo. ¿Por qué debo agregar Automator Finder en la lista Lista de accesibilidad parece que no hace una diferencia al ejecutar comandos (esa era mi pregunta básica)?
¡Buena pregunta! Si encuentra que los pasos 5 a 9 anteriores para crear un acceso directo no son necesarios para usted, entonces eso es genial. Sin embargo, ayudé a muchas personas a crear atajos de teclado para ejecutar scripts personalizados y descubrí que incluir esos pasos a menudo evita un mensaje de error (no recuerdo qué es ahora o en qué circunstancias aparecería). Tal vez no debería incluir esos pasos de forma predeterminada, pero eso es lo que he estado haciendo ahora durante bastantes años (aunque los pasos exactos diferirán según su versión de macOS; arriba incluí los pasos para El Capitán según su generosidad).
Los pasos del 5 al 9 deberían ser completamente innecesarios para asignar un acceso directo, aunque podrían ser necesarios para que el script desencadenado se ejecute sin problemas si utiliza funciones de automatización de la interfaz de usuario (clics del mouse y pulsaciones de teclas simulados). Sin embargo, ese último caso es otro tema completamente diferente; no debe combinar dos problemas al incluir estos pasos en su respuesta.
@kopischke Hmm, ¡gracias por esto! Es posible que haya arrojado algo de luz sobre por qué los pasos 5 a 9 son necesarios algunas veces y otras no. Lo tendré en cuenta para futuras pruebas y actualizaré esta respuesta (y otras) si es necesario. :)
Al menos en MacOS 10.14.6, debe aprobar todas las demás aplicaciones antes de que pueda controlar su navegador.
FWIW, esto solo funciona para mí si elijo una combinación de teclas de método abreviado que incluye la tecla de comando (manzana). Hay algunos informes de un error relacionado con esto: apple.stackexchange.com/questions/260683/…
En Automator, Serviceha sido renombradoQuick Action
NOTA: Para MacOS Monterey: si el acceso directo funciona y no genera conflictos, aparecerá detrás del servicio en Finder > Servicios. Así que sigue cambiando hasta que lo veas aparecer allí.

No puede asignar métodos abreviados de teclado a AppleScripts de forma inmediata. Sin embargo, puedes:

  1. use un iniciador que admita la configuración de teclas de acceso rápido globales y la ejecución de AppleScripts ( Alfred , Keyboard Maestro , FastScripts , lo que le apetezca), o
  2. coloque el script en una acción Ejecutar AppleScript dentro de un servicio de Automator . Tenga en cuenta que tiene que ser un servicio, no una aplicación o un flujo de trabajo ordinario: a los servicios se les pueden asignar teclas de acceso rápido en la configuración del teclado de Preferencias del Sistema.
Simplemente siga los pasos en la respuesta de @MegaCookie .
¿Qué versión de sistema operativo tienes? Mi mac 10.6.5 no parece tener la opción "Selecciona Ejecutar Apple Script y escribe tu código"?
No es "Seleccionar Ejecutar AppleScript", es, como se indica en mi respuesta, la acción Ejecutar AppleScript que debe agregar a su servicio de Automator; simplemente arrástrelo al área de acción de la biblioteca, eso le dará un campo de texto con un andamio de funciones al que puede agregar su código. Además, dudo que se necesiten las configuraciones de accesibilidad en la respuesta de @MegaCookie; estas se relacionan con la automatización de la interfaz de usuario.
Después de probar casi ~TODAS~ las soluciones propuestas en esta pila, esto es lo que aprendí. Automator es muy lento para ejecutar scripts. No importa si es un script de Python o un script de Shell. Ambos tardan de 1 a 3 segundos en ejecutarse en mi Mac (el script simula un clic en la pantalla). Probé FastScripts y tuve los mismos problemas, más rápido que Automator, pero lento (1-2 segundos). No pude probar Alfred porque es una función paga. Sin embargo, probé Keyboard Maestro y es increíblemente rápido. ¡Sin retraso perceptible! La mejor solución sin duda.
@GuilhermeSalomé Sí, Automator es increíblemente lento, gracias por especificar que Keyboard Maestro es más rápido, ¡voy a probarlo ahora!

Nota: en macOS Mojave se cambió el nombre de "Servicio" a "Acción rápida" en Automator.

  1. cmd+ spacey escriba "automatizador"
  2. Seleccione: Archivo > Nuevo
  3. Seleccione "Acciones rápidas"
  4. Busque en la parte superior de la sección izquierda "applescript" o "shellscript" o "javascript"
  5. Arrastre la acción deseada al flujo de trabajo del lado derecho
  6. Archivo > Guardar con el nombre deseado

Para agregar pulsaciones de teclas a su flujo de trabajo:

  1. Preferencias del sistema abierto
  2. Seleccione Teclado > Accesos directos
  3. Seleccione Servicios a la izquierda
  4. Encuentre el servicio recién creado y haga doble clic en "ninguno" para agregar un atajo de teclado
Nota: si no lo convierte en una acción rápida (por ejemplo, lo convierte en un "flujo de trabajo"), la lista de accesos directos no lo detectará.
¡Lo hice! Todavía no detecta los atajos de teclado. ¡Necesito ejecutar la acción rápida manualmente dentro de Automator!

Solo para reiterar un punto muy importante que se señaló por primera vez en la publicación de @MegaCookie:

Al crear una secuencia de comandos que emule la actividad del mouse o del teclado, debe agregar no solo Automator, sino también todas y cada una de las aplicaciones en las que desea usar su secuencia de comandos a la lista de aplicaciones Preferencias del sistema > Seguridad > Privacidad > Accesibilidad .

Esto es contrario a la intuición, ya que en realidad no desea que esas aplicaciones controlen la computadora, pero esto es lo que requiere Apple. De lo contrario, recibirá una ventana emergente como esta (varía dependiendo de lo que intente hacer):

La acción "Ejecutar AppleScript" encontró un error: "Los eventos del sistema obtuvieron un error: com.automator.runner.xpc no puede enviar pulsaciones de teclas".

Al hacer clic en Mostrar flujo de trabajo en la ventana emergente, se abre una ventana del Finder en la ubicación del script. Aceptar cierra la ventana emergente.

Es posible que esto no siempre haya sido necesario, pero lo encontré necesario en macOS 10.15 (Catalina).

Como ejemplo de cuándo necesitaría esto, creé un script para emular el pegado del portapapeles simplemente "escribiendo" el contenido del portapapeles en una aplicación que no acepta operaciones de pegado.

En mi caso, esta es la consola remota proporcionada por el vCenter de VMware al buscar máquinas virtuales en hosts ESXi. Necesitaba agregar el navegador que se usa para ver vCenter, que en mi caso es Chrome. Definitivamente un riesgo de seguridad, en mi humilde opinión.

Si, esto apesta :(

Usé BetterTouchTool que también funciona rápido. También es de pago, pero es popular.

Puede ir a Preferencias del sistema -> Teclado -> Accesos directos -> agregar un nuevo acceso directo. A continuación, puede seleccionar su script.

https://support.apple.com/kb/PH18418?locale=en_US

Eso no funcionará. El documento al que está enlazando describe cómo (re)asignar una tecla de acceso rápido a un comando de menú de una aplicación .
Enlace roto, hace mucho tiempo que Apple deshabilitó esta funcionalidad de un solo clic, reemplazándola con una operación de 90 clics que involucra aplicaciones de terceros.