Есть ли способ захватить элементы управления консоли (клавиатура / мышь / пульт) в OSX, чтобы их можно было реплицировать на другой компьютер? - PullRequest
0 голосов
/ 08 декабря 2011

Мне нужно отразить активность консоли GUI на одном MacBook, чтобы она дублировалась на втором идентичном Macbook.

Идея состоит в том, чтобы управлять приложением, которое будет работать на двух Macbooks одновременно. Приложение представляет собой презентацию с двумя вариантами содержания, но идентичными элементами управления. Думайте об этом как о двух версиях презентации PowerPoint с различными слайдами.

Я думаю, что возможно зафиксировать нажатия клавиш и события мыши на одном Mac, а затем использовать протокол RFB для отправки их по сети на другой Mac. Я смотрю на rfbproxy и rfbplaymacro , но это несколько нелегкие хаки, и любое решение, построенное на них, также будет чем-то вроде хака. И, конечно, я бы предпочел избежать решения, которое требует от меня компиляции и, возможно, отладки программного обеспечения, которое не было затронуто в течение полувека. : -)

Я мог бы использовать Cliclick или xdotool (из MacPorts) для запуска событий консоли на «подчиненном» Mac. Но тогда я не знаю, что бы я использовал, чтобы запечатлеть события на «хозяине». Или для решения на основе xdotool требуется, чтобы оба Mac были подчиненными, а затем использовали какое-то другое устройство в качестве главного?

Устройствами ввода могут быть презентационная мышь, пульт Apple или, в крайнем случае, клавиатура MacBook или даже третье устройство.

Можете ли вы предложить инструменты? Или есть другая стратегия, о которой я не думал?

Ответы [ 3 ]

2 голосов
/ 17 декабря 2011

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

Рассматривали ли вы AppleScript? Он довольно хорош при отправке нажатий клавиш на ssh-доступные Mac. Получающему приложению даже не нужно знать AppleScript (т. Е. Сценарий). Вам просто нужно убедиться, что сценарии графического интерфейса пользователя включены на целях, отметив параметр Включить доступ для вспомогательных устройств на панели настроек системы Universal Access.

Вот пример команды оболочки, которая отправит нажатие клавиши в самое переднее приложение с помощью applecript:

osascript -e "tell application \"System Events\" to keystroke \"a\""

Если вы установили ssh-аутентификацию на основе ключей между ведущим и подчиненным, вы можете просто прикрепить ssh к передней части этой команды:

ssh slave osascript -e "tell application \"System Events\" to keystroke \"a\""

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

1 голос
/ 02 февраля 2012

Несколько лет назад я пытался синхронизировать подобные системы, которые НЕ являются Mac, используя rfbproxy и rfbplaymacro, о которых вы уже знаете.Обе системы были X-терминалами, работающими с одинаковым разрешением.У нас все еще были проблемы из-за разных настроек размера шрифта, помещавших элементы управления приложения в разные места, но базовая VNCiness решения, казалось, работала просто отлично.

Тем не менее, если вы хотите написать отдельное приложение дляотправляйте вещи, используя osascript или clicklick или xdotool, и у вас есть Wii, вы можете получить некоторую радость от DarwiinRemote .

1 голос
/ 17 декабря 2011

Kindof запутанный, но вы можете использовать clusterSSH для OSX , чтобы запускать сеансы оболочки из главного окна третьей машины, а затем отправлять команды двум ведомым.Это может быть связано с утилитой управления экраном, аналогичной той, что вы перечислили выше, другой из которых является pymaCursor .

Если вместо этого все можно записать заранее, вы можете попробоватьзапись appleScript / automator или более новый проект, такой как sikuli - http://sikuli.org/

...