Как отправить команды клавиатуры и мыши в основную операционную систему, используя Ruby? - PullRequest
8 голосов
/ 18 сентября 2009

Существует ли для Ruby нейтральный способ операционной системы отправлять события клавиатуры и мыши в основную операционную систему?

Один очевидный (для меня) подход - использовать привязки Ruby / Java и использовать java.awt.Robot, но это просто глупо.

Ответы [ 3 ]

7 голосов
/ 19 сентября 2009

Для Mac:

gem install rb-appscript

Затем вы можете проверить это с помощью скрипта, подобного этому:

require "rubygems"
require "appscript"
include Appscript

app("TextEdit").activate
app("System Events").keystroke("Look Ma, keystrokes!")

Для Windows: (не проверено, заимствовано из этой темы )

require "win32ole"

wsh = WIN32OLE.new("WScript.Shell")
wsh.Run("Notepad.exe")
while not wsh.AppActivate("Notepad")
  sleep .1
end
wsh.SendKeys("Look Ma, keystrokes!")
4 голосов
/ 04 июня 2013

Для полноты картины я подумал, что я бы включил решение, если вы используете Linux.

В Linux для автоматизации нажатий клавиш вы можете использовать xdotool. Существует также драгоценный камень для Ruby, но на самом деле это не требуется, учитывая, что отправка нажатий клавиш - это просто:

%x(xdotool key super+w) #this would press the keys super and w simultaneoulsy

Также есть события мыши.

0 голосов
/ 05 сентября 2014

К сожалению, rb-applescript немного устарел и шаток.

Для Mac вы можете использовать:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...