Simular atajos de teclado y pulsaciones de teclas en MacOS con AppleScript

En el sistema operativo MacOS se suele tener un buen acceso a la funcionalidad de las aplicaciones a través del teclado ya que, por norma, las aplicaciones permiten el uso de atajos de teclado.

La gestión de los atajos de teclado se realiza desde el sistema operativo por lo que es posible utilizar estos atajos de teclado para poder crear scripts de AppleScript específicos para una aplicación y crear nuestras propias personalizaciones de uso de una aplicación utilizando nuestros propios scripts de AppleScript

Esto también permite que una aplicación no compatible con AppleScript pueda ser manipulada por un script utilizando los propios elementos y controles de interfaz de la aplicación no compatible.

La aplicación System Events

La aplicación System Events es un servicio del sistema operativo que permite realizar ciertas operaciones a otras aplicaciones y programas en ejecución. System Events no tiene interfaz de usuario por lo que hay que utilizarlo a través de otra aplicación o un script de AppleScript

Con System events podemos controlar el teclado, el ratón, el volumen de nuestro Macbook y muchas cosas más. Veremos en más detalles a System Events en otros artículos.

Dentro del diccionario de System Events para AppleScript se encuentra el comando keystroke el cual nos permite simular una pulsación de teclas desde nuestro script.

El comando keystroke para ser utilizado sobre una aplicación requiere que dicha aplicación esté siendo ejecutada en ese momento. Pero si el comando es un atajo de teclado general de MacOS entonces el comando keystroke puede ser utilizado sin ningún requisito previo.

Para el comando keystroke debemos indicar qué teclas queremos pulsar pero hay que identificar entre teclas alfanuméricas y teclas modificadoras. Las teclas modificadoras son la tecla de mayúsculas, comando, control, alt, etc.

La forma de usar el comando keystroke es la siguiente:


tell application "System Events" to keystroke "letra a pulsar" using teclas modificadoras

También podemos utilizar el código numérico de la tecla en lugar de su representación literal. Su sintaxis es la siguiente:


tell application "System Events" to key code número de la tecla using teclas modificadoras

Unos ejemplos simples

En un editor de textos vamos a escribir la frase Hola mundo simulando las pulsaciones de teclado. El código es:


tell application "System Events" to keystroke "Hola mundo!"

Vamos a enviar el atajo de teclado Comando+n para abrir una nueva ventana en la aplicación que esté activa en ese momento. El código es el siguiente:


tell application "System Events" to keystroke "n" using command down

2 opiniones en “Simular atajos de teclado y pulsaciones de teclas en MacOS con AppleScript”

  1. Buenos días Jonathan:

    Un artículo muy interesante, con gran potencial para usarse.

    Desde el desconocimiento más absoluto de applescript, entiendo que estos comandos han de ser utilizados desde el terminal, o como funcionaría la ejecución?

    Se me ocurren varios casos de uso en los que podría usar esta utilidad para ahorrar tiempo.

    Por ejemplo: soy usuario de atext, una utilidad muy parecida a textexpander. En ella puedo configurar teclas para usar pulsaciones, incluso comandos con teclas modificadoras, sin embargo los que implican al VoiceOver no me los permite.

    Así que me pregunto si sería viable mezclar ambas herramientas: atext con el sistem events, por ejemplo en la creación de eventos de calendario para usarlos con ifttt.

    Tengo una receta que si publico #tw en el título, me publica el twitter, así que me hice un snippet en atext en el que le meto la hora actual +10 minutos y un intro.
    Después tengo que desplazarme hasta el botón de notas, donde pego el contenido de la nota, que será lo que se publique en el tweet.

    Sería viable hacer algo que permitiera automatizar la tarea al máximo?
    Es decir, que ponga el #tw en el título que da la orden más la hora de publicación, coloque el cursor en notas, pegue el. Contenido del portapapeles y acepte el evento?

    Un saludo y muchas gracias.

    1. Buenas Aitor, para ejecutar scripts de AppleScripts hay que programar los disparadores o combinaciones de teclas. Ya escribiré un artículo sobre ello.

      Sobre actuar con campos y controles de una aplicación se puede hacer con AppleScript pero se hace de otra forma además de usar pulsaciones de teclas.
      De todas formas este método de simular pulsaciones de teclas no se lleva bien con las últimas versiones de VoiceOver. Más adelante publicaré unos artículos para manejar VoiceOver con AppleScript

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.