Ruby를 사용하여 키보드 및 마우스 명령을 기본 운영 체제로 보내는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1446327

  •  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!"')
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top