2009-09-18 31 views
8

Có hệ điều hành trung lập nào để Ruby gửi sự kiện bàn phím và chuột đến hệ điều hành cơ bản không?Làm thế nào để gửi các lệnh bàn phím và chuột cho hệ điều hành bên dưới bằng Ruby?

Một cách tiếp cận rõ ràng (đối với tôi) là sử dụng các ràng buộc Ruby/Java và sử dụng java.awt.Robot, nhưng điều đó có vẻ ngớ ngẩn.

+0

hệ điều hành gì? Mỗi nền tảng có các ràng buộc Ruby riêng. – tadman

+0

"hệ điều hành trung lập". Nếu không có thư viện như vậy tồn tại, sau đó Windoze và Mac. – John

Trả lời

7

Đối với Mac:

gem install rb-appscript 

Sau đó, bạn có thể thử nghiệm nó với một kịch bản như thế này:

require "rubygems" 
require "appscript" 
include Appscript 

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

Đối với Windows: (chưa được kiểm tra, borrowed from this thread)

require "win32ole" 

wsh = WIN32OLE.new("WScript.Shell") 
wsh.Run("Notepad.exe") 
while not wsh.AppActivate("Notepad") 
    sleep .1 
end 
wsh.SendKeys("Look Ma, keystrokes!") 
+0

Còn Linux (Ubuntu) thì sao? –

+0

@AndreyBotalov Tôi không biết. Ai đó nên đăng câu trả lời cho điều đó. :-) –

4

F hoặc vì đầy đủ, tôi nghĩ tôi sẽ đưa ra một giải pháp cho nếu bạn đang sử dụng Linux.

Trên Linux, để tự động hóa tổ hợp phím, bạn có thể sử dụng xdotool. Ngoài ra còn có một viên ngọc cho Ruby, nhưng nó không thực sự cần thiết xem xét rằng gửi tổ hợp phím là một dễ dàng như:

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

Ngoài ra còn có các sự kiện chuột quá.

0

Thật không may, rb-applescript là một ít ngày và hào nhoáng.

Đối với mac, bạn có thể muốn sử dụng:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"') 
Các vấn đề liên quan