teclado reconoce problemas parear macbook mac lento inalambrico imac funciona configurar conectar con como apple macos input mouse touchscreen

macos - reconoce - Simulación de entrada de mouse mediante programación en OS X



parear mouse apple (4)

Aquí hay un programa C en funcionamiento basado en la respuesta de jweyrick:

// Compile instructions: // // gcc -o click click.c -Wall -framework ApplicationServices #include <ApplicationServices/ApplicationServices.h> #include <unistd.h> int main(int argc, char *argv[]) { int x = 0, y = 0, n = 1; float duration = 0.1; if (argc < 3) { printf("USAGE: click X Y [N] [DURATION]/n"); exit(1); } x = atoi(argv[1]); y = atoi(argv[2]); if (argc >= 4) { n = atoi(argv[3]); } if (argc >= 5) { duration = atof(argv[4]); } CGEventRef click_down = CGEventCreateMouseEvent( NULL, kCGEventLeftMouseDown, CGPointMake(x, y), kCGMouseButtonLeft ); CGEventRef click_up = CGEventCreateMouseEvent( NULL, kCGEventLeftMouseUp, CGPointMake(x, y), kCGMouseButtonLeft ); // Now, execute these events with an interval to make them noticeable for (int i = 0; i < n; i++) { CGEventPost(kCGHIDEventTap, click_down); sleep(duration); CGEventPost(kCGHIDEventTap, click_up); sleep(duration); } // Release the events CFRelease(click_down); CFRelease(click_up); return 0; }

Alojado en https://gist.github.com/Dorian/5ae010cd70f02adf2107

¿Es posible simular las acciones de un mouse desde un programa en OS X? Específicamente, la versión corta es que estoy tratando de simular una pantalla táctil usando dos cámaras web. Entonces, suponiendo que pueda obtener las posiciones X, Y, ¿puedo enviar información al sistema operativo como un movimiento del mouse o hacer clic?

Edición- O si es particularmente fácil en otro sistema operativo, estaría dispuesto a considerar eso.


Si no quiere compilar cosas y está buscando una herramienta basada en shell, Cliclick puede ser la solución.


Swift mouse mueve y haz clic en el ejemplo:

func mouseMoveAndClick(onPoint point: CGPoint) { guard let moveEvent = CGEvent(mouseEventSource: nil, mouseType: .mouseMoved, mouseCursorPosition: point, mouseButton: .left) else { return } guard let downEvent = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: point, mouseButton: .left) else { return } guard let upEvent = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: point, mouseButton: .left) else { return } moveEvent.post(tap: CGEventTapLocation.cghidEventTap) downEvent.post(tap: CGEventTapLocation.cghidEventTap) upEvent.post(tap: CGEventTapLocation.cghidEventTap) }


Sí, es posible. Puede usar Quartz Event Services para simular eventos de entrada.

Asumiendo C, escribí este rápido ejemplo:

#include <ApplicationServices/ApplicationServices.h> #include <unistd.h> int main() { // Move to 200x200 CGEventRef move1 = CGEventCreateMouseEvent( NULL, kCGEventMouseMoved, CGPointMake(200, 200), kCGMouseButtonLeft // ignored ); // Move to 250x250 CGEventRef move2 = CGEventCreateMouseEvent( NULL, kCGEventMouseMoved, CGPointMake(250, 250), kCGMouseButtonLeft // ignored ); // Left button down at 250x250 CGEventRef click1_down = CGEventCreateMouseEvent( NULL, kCGEventLeftMouseDown, CGPointMake(250, 250), kCGMouseButtonLeft ); // Left button up at 250x250 CGEventRef click1_up = CGEventCreateMouseEvent( NULL, kCGEventLeftMouseUp, CGPointMake(250, 250), kCGMouseButtonLeft ); // Now, execute these events with an interval to make them noticeable CGEventPost(kCGHIDEventTap, move1); sleep(1); CGEventPost(kCGHIDEventTap, move2); sleep(1); CGEventPost(kCGHIDEventTap, click1_down); CGEventPost(kCGHIDEventTap, click1_up); // Release the events CFRelease(click1_up); CFRelease(click1_down); CFRelease(move2); CFRelease(move1); return 0; }

Y suponiendo que GCC compile con:

gcc -o program program.c -Wall -framework ApplicationServices

Disfruta la magia