2009-09-18 11 views
8

¿Hay una forma neutral del sistema operativo para que Ruby envíe eventos de teclado y mouse al sistema operativo subyacente?¿Cómo enviar comandos de teclado y mouse al sistema operativo subyacente utilizando Ruby?

Un enfoque obvio (para mí) es utilizar las vinculaciones de Ruby/Java y usar java.awt.Robot, pero eso simplemente parece una tontería.

+0

¿Qué sistema operativo? Cada plataforma tiene sus propios enlaces Ruby. – tadman

+0

"sistema operativo neutral". Si no existe tal biblioteca, entonces Windoze y Mac. – John

Respuesta

7

Para Mac:

gem install rb-appscript 

A continuación, se puede probar con un script como el siguiente:

require "rubygems" 
require "appscript" 
include Appscript 

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

Para Windows: (no probado, 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

¿Qué hay de Linux (Ubuntu)? –

+0

@AndreyBotalov No lo sé. Alguien debería publicar una respuesta para eso. :-) –

4

F o por completitud, pensé que incluiría una solución para si estás usando Linux.

En Linux, para automatizar las teclas, puede usar xdotool. Hay también una joya para Ruby, pero no es realmente necesario teniendo en cuenta que enviar pulsaciones de teclas es un fácil como:

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

También hay eventos de ratón también.

0

Por desgracia, rb-applescript es un poco anticuado y poco convencional.

para el Mac, es posible que desee utilizar:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"') 
Cuestiones relacionadas