Как отправить команды клавиатуры и мыши в основную операционную систему, используя Ruby?
-
22-07-2019 - |
Вопрос
Есть ли у Ruby нейтральный способ операционной системы отправлять события клавиатуры и мыши в основную операционную систему? Р>
Один очевидный (для меня) подход - использовать привязки Ruby / Java и использовать java.awt.Robot, но это просто глупо.
Решение
Для 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!")
Другие советы
Для полноты картины я решил включить решение, если вы используете Linux.
В Linux для автоматизации нажатий клавиш вы можете использовать xdotool. Для Ruby также есть жемчужина, но на самом деле это не требуется, учитывая, что отправка нажатий клавиш является легкой задачей:
% x (клавиша xdotool super + w) # при этом одновременно нажимаются клавиши super и w
Также есть события мыши.
К сожалению, rb-applecript
немного устарел и шаток.
Для Mac вы можете использовать:
%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')