События Apple для удаленного управления мышью - PullRequest
6 голосов
/ 29 октября 2010

Я даже не уверен, с чего начать этот вопрос ...

Я хочу иметь возможность отправлять события щелчка мышью на другой компьютер, как если бы пользователь нажал на этот компьютер.

Я могу сделать это на той же машине через:

 CGEventSourceRef source = CGEventSourceCreate(NULL);
 CGEventType eventType = kCGEventLeftMouseDragged;
 CGPoint mouseCursorPosition;
 mouseCursorPosition.x = point.x;
 mouseCursorPosition.y = point.y;
 CGMouseButton mouseButton = kCGMouseButtonLeft;

 CGEventRef mouseEvent = CGEventCreateMouseEvent ( source,
               eventType,
               mouseCursorPosition,
               mouseButton );
 CGEventSetType(mouseEvent, kCGEventLeftMouseDragged); // Fix Apple Bug
 CGEventPost( kCGSessionEventTap, mouseEvent );
 CFRelease(mouseEvent);

Но как мне отправить это событие куда-нибудь еще? Applescript? Я читал кое-что о том, что AppleEvents - это связь между приложениями и приложениями, но я хотел бы просто создать системное событие на другом компьютере?

Совершенно неуверенно.

Спасибо


[Изменить 11/1/10 7: 30а]

Просто чтобы уточнить, я не смотрю на экран обмена. По крайней мере, я так не думаю. У меня есть кластер из нескольких Mac Pro, связанных между собой, каждый из которых имеет 4 монитора. Я пытаюсь использовать только 1 устройство для передачи "кликов" на каждый из узлов. Поэтому, если устройство подключено к узлу 3, но устройство подключено к узлу 0, узел 0 должен сообщить узлу 3, что ему нужно ответить на щелчок.

Спасибо


[Изменить 11/4/10 9:32 утра]

В самом деле? Никто не может дать мне конкретный пример кода генерации событий Apple программно для создания событий мыши на удаленных машинах в C / C ++ / Objc-C ???

Ответы [ 4 ]

3 голосов
/ 08 ноября 2010

Насколько я понимаю, вы можете использовать Распределенные объекты для передачи событий Apple.

Они могут работать через сеть через Bonjour. Вы можете сериализовать или закодировать событие Apple, передать его по сети, а затем запустить приложение-помощник на компьютере на другом конце, чтобы прослушать, декодировать событие и запустить его. Вы можете просто закодировать координаты щелчка мыши для простоты.

Я также считаю, что книга Маркуса Зарры о Базовые данные содержит пример кода для приложения Базовые данные, работающего в сети, использующей DO. Возможно, вы сможете увидеть, что он сделал, и сделать что-то подобное, чтобы начать. Смотрите также этот превосходный Q & A на DO от Mike Ash.

1 голос
/ 20 января 2013

«Системные события», «приложение» (просто процесс в реальности) позволяет отправлять события с использованием applecript:

tell application "System Events"
tell process "Finder"
click at {10, 10}
end tell
end tell
0 голосов
/ 04 ноября 2010

Скорее всего, будет писать драйвер устройства и притворяться мышью.

0 голосов
/ 02 ноября 2010

Я собираюсь ответить из коробки и предлагаю вам попробовать Синергия , так как это звучит так, как вы ищете. Если нет, так как это открытый исходный код, может дать вам представление о том, что делать дальше.

...