Cuando las MouseKeys están activadas, ¿cómo hago clic o muevo el mouse con AppleScript?

5

Esta publicación sugiere que el comando tell application “System Events” to key code 37 in AppleScript debe mover el puntero del mouse un píxel hacia abajo y hacia la izquierda si se ejecuta cuando las MouseKeys están habilitadas. Sin embargo, en OS X 10.7.2, tiene el efecto de generar un l en minúsculas, y no mover el mouse en absoluto.

De forma similar, esperaba que tell application “System Events” to key code 34 using control down enviara un clic de control en el punto actual del cursor del mouse, pero ese no parece ser el efecto.

¿Alguien sabe una manera que funcione en Lion en una MacBook Air de mediados de 2011 para generar un clic o presionar con el botón en la ubicación actual del mouse usando AppleScript? Está bien si se basa en MouseKeys y / o secuencias de comandos UI.

Preferiría si no implicara la instalación de utilidades de línea de comandos compiladas, pero si tales utilidades existen y son compatibles con Lion, eso es mucho mejor que nada.

    
pregunta Daniel 12.02.2012 - 21:12

2 respuestas

8

Hay toneladas de utilidades de línea de comando para hacer esto ... y creo que esta es la mejor opción ... ¿un beneficio? es que estas soluciones deberían funcionar, independientemente de si las "teclas del mouse" están activadas, ¿no? Uno de mis favoritos en particular es hacer clic en

  

Cliclick ”es la abreviatura de" Interfaz de la línea de comandos ". > Es una pequeña aplicación de shell / terminal que emulará clics del mouse o una serie de clics del mouse (incluyendo dobleclicks y clics de control) en coordenadas de pantalla arbitrarias.

     

Por lo tanto, es una herramienta para automatizar / hacer scripts de cosas que de otra manera no pueden ser escritas (por ejemplo, usando AppleScript). Aparte de las secuencias de comandos GUI, no requiere que se active el "Acceso para dispositivos de asistencia" en las Preferencias del sistema.

Uso:

$ cliclick c m

hará "control-clic" en la ubicación actual del mouse, pero también puede especificar las coordenadas, shift-click, doble clic, etc. También puede devolver las coordenadas del mouse con un argumento -q y regresar el mouse a la ubicación original (cuando se especifican coordenadas) con el argumento -r .

En tu caso ... supongo que simplemente ...

do shell script "cliclick c m"

desde tu AppleScript / Workflow / lo que sea ...

Hay un GRAN publicación sobre este tema en el sitio de MacWorld ( née Mac OS X Sugerencias ) - a lo largo de los años, he recopilado muchos de buena información. Si no te importa mi respuesta, seguramente encontrará una solución que le GUSTE, hay ... hay trucos para hacer que todos sonrían, desde un monstruo de Automator = hasta un C diehard gruñón.

Actualizar:

Parece que hay algunas formas de "hacerlo" en AppleScript ... pero parece que todas requieren saber dónde está su mouse ... cuál asume que no lo haces Así que en un juego vergonzosamente nerd para un representante ... 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 llama 'do shell script'.
  2. que luego llama a Python - con un argumento de línea de comando ( -c ) = que se ha escapado y engatusado = para cooperar con A / S.
  3. Python luego "importa" CoreGraphics / Quartz, etc.
  4. Y define algunos métodos Cocoa-API / PyObjC para "tratar con" el mouse.
  5. Python "se da cuenta" donde está el mouse.
  6. ¡Y clics! (abajo, luego arriba)
  7. Como beneficio adicional, devuelve las coordenadas del mouse, 'si estuvieras interesado_.

Funciona al 100% y ni siquiera ES TAN lento. Espero que te guste!

Editar:

Aquí está el BASH de una sola línea, para los puristas / A / S que odian.

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

    
respondido por el alex gray 18.02.2012 - 22:01
0

Aquí está el script que utilizo para generar clics del mouse

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

A modo de explicación, descubrí que tenía que crear un pequeño movimiento del mouse (88) antes de que el clic del mouse (87) funcionara de manera consistente. Esto se basa en MouseKeys.

    
respondido por el deltanovember 14.02.2012 - 21:15

Lea otras preguntas en las etiquetas