Ruby를 사용하여 키보드 및 마우스 명령을 기본 운영 체제로 보내는 방법은 무엇입니까?
-
22-07-2019 - |
문제
루비가 키보드 및 마우스 이벤트를 기본 운영 체제로 보내는 운영 체제 중립 방법이 있습니까?
명백한 (나에게) 한 가지 접근 방식은 루비/자바 바인딩을 사용하고 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을 사용할 수 있습니다. 루비를위한 보석도 있지만, KeyStrokes를 보내는 것을 고려할 때 실제로는 다음과 같습니다.
%x(xdotool key super+w) #this would press the keys super and w simultaneoulsy
마우스 이벤트도 있습니다.
불행히도 rb-applescript
약간 날짜가 많고 기발합니다.
Mac의 경우 다음을 사용할 수 있습니다.
%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')
제휴하지 않습니다 StackOverflow