6 votos

¿Cuando MouseKeys, cómo haga clic o mueva el ratón utilizando AppleScript?

Este post sugiere que el comando tell application "System Events" to key code 37 en AppleScript debe mover el puntero del ratón un píxel hacia abajo y a la izquierda si se ejecuta cuando MouseKeys están habilitados. En OS X 10.7.2, sin embargo, tiene el efecto de generar una minúscula l, y no se mueve el ratón.

Del mismo modo, yo tenía la esperanza de tell application "System Events" to key code 34 using control down habría enviado un control haga clic en el punto actual del cursor del ratón, pero que no parece ser el efecto.

¿Alguien sabe una manera que funciona en Lion en un mediados de 2011 MacBook Air para generar un clic o pulse control y haga clic en la actual ubicación del ratón usando AppleScript? Está bien si se basa en MouseKeys y/o la interfaz de usuario de secuencias de comandos.

Yo preferiría si no se trataba de la instalación de compilado de utilidades de línea de comandos, pero si existen utilidades y Lion compatible, que es mucho mejor que nada.

9voto

alex gray Puntos 479

Hay toneladas de utilidades de línea de comandos para hacer esto... y me gustaría contar de que va esta ruta es tu mejor apuesta... Uno de los beneficios? es que estas soluciones deben trabajar, independientemente de que sea o no "teclas para el ratón", a la derecha? Uno de mis particular favoritos es cliclick

Cliclick" es la abreviatura de "Interfaz de Línea de Comandos haga Clic en". > Es una pequeña consola / Terminal de la aplicación que se encarga de emular los clics del ratón o de una serie de clics de ratón (incluyendo doubleclick y control-clic) en el arbitrarias en coordenadas de pantalla.

Por lo tanto, es una herramienta para la automatización / secuencias de comandos cosas que de otro modo no se secuencias de comandos (por ejemplo, usando AppleScript). Otro de GUI de secuencias de comandos, que no requiere de "Acceso para dispositivos de ayuda" para ser activado en las Preferencias del Sistema.

Uso:

$ cliclick c m

"control-click" en el actual ubicación del ratón, pero también puede especificar las coordenadas, pulse mayús y haga clic, doble clic, etc. También puede devolver las coordenadas del ratón con un -q argumento, y devolver el ratón a la ubicación original (cuando la especificación de coordenadas) con el -r argumento.

En su caso.. supongo que solo le...

do shell script "cliclick c m"

desde el interior de su AppleScript / Flujo de trabajo / lo que sea...

Hay un GRAN post sobre este tema en la MacWorld del sitio (née Mac OS X Hints) - que he recogido un montón de buena información de, a través de los años. Si no te gusta mi respuesta será seguramente encontrar una solución que te gusta, hay... hay hacks para hacer sonreír a todos - de un Automator freak = a un malhumorado C acérrimos.

Actualización:

No parecen ser algunas de las maneras de "hacer" en AppleScript.. pero parece que todas requieren saber donde está el ratón... que supongo que no. Así, en una embarazosa nerd juego por algún rep... escribí esto..

do shell script "python -c 'import sys, time; from Quartz.CoreGraphics import *;

def mouseEvent(type, posx, posy):
  theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft);
  CGEventPost(kCGHIDEventTap, theEvent);

def mouseclickdn(posx,posy):
  mouseEvent(kCGEventLeftMouseDown, posx,posy);

def mouseclickup(posx,posy):
  mouseEvent(kCGEventLeftMouseUp, posx,posy);
  ourEvent = CGEventCreate(None);
  currentpos = CGEventGetLocation(ourEvent);
  print currentpos[0];
  print currentpos[1];
  mouseclickdn(currentpos.x, currentpos.y);
  mouseclickup(currentpos.x, currentpos.y)'
"

¿Qué diablos es?

  1. AppleScript llamadas 'do shell script'.
  2. Que, a continuación, llama Python - con un argumento de línea de comandos (-c) = que se ha escapado y engatusados = a cooperar con Un/S.
  3. Python, a continuación, las "importaciones" CoreGraphics/Cuarzo, etc.
  4. Y define algunos de Cacao-API/PyObjC métodos para "tratar con" el ratón.
  5. Python "figuras" donde está el ratón.
  6. Y clics! (abajo, luego hacia arriba)
  7. Como un bono, devuelve las coordenadas del ratón, 'si usted se interested_.

Funciona 100% y no es ni siquiera QUE lento. Espero que te guste!

Editar:

Aquí es la fiesta de una línea, para los puristas / a/S de los haters.

echo -e "import sys, time; from Quartz.CoreGraphics import *\ndef mouseEvent(type, posx, posy): theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft); CGEventPost(kCGHIDEventTap, theEvent);\ndef mouseclickdn(posx,posy): mouseEvent(kCGEventLeftMouseDown, posx,posy);\ndef mouseclickup(posx,posy): mouseEvent(kCGEventLeftMouseUp, posx,posy);\nourEvent = CGEventCreate(None); currentpos = CGEventGetLocation(ourEvent); print currentpos[0]; print currentpos[1]; mouseclickdn(currentpos.x, currentpos.y);\nmouseclickup(currentpos.x, currentpos.y);" | python

0voto

GWLlosa Puntos 10701

Aquí está el script que utilizo para generar clics

tell application "System Events" to key code 88
tell application "System Events" to key code 87

A modo de explicación encontré que tenía que crear un pequeño ratón movement(88) antes el clicking(87) ratón trabajaría constantemente. Esto depende de MouseKeys.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X