¿Cómo enviar comandos de teclado y mouse al sistema operativo subyacente usando Ruby?

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

  •  22-07-2019
  •  | 
  •  

Pregunta

¿Existe una forma neutral del sistema operativo para que Ruby envíe eventos de teclado y mouse al sistema operativo subyacente?

Un enfoque obvio (para mí) es usar los enlaces Ruby / Java y usar java.awt.Robot, pero eso parece una tontería.

¿Fue útil?

Solución

Para Mac:

gem install rb-appscript

Entonces puedes probarlo con un script como este:

require "rubygems"
require "appscript"
include Appscript

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

Para Windows: (no probado, tomado de este hilo )

require "win32ole"

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

Otros consejos

Para completar, pensé que incluiría una solución para si estás usando Linux.

En Linux, para automatizar las pulsaciones de teclas, puede usar xdotool. También hay una gema para Ruby, pero en realidad no es necesario teniendo en cuenta que enviar pulsaciones de teclas es tan fácil como:

% x (tecla xdotool super + w) # esto presionaría las teclas super y w simultáneamente "

También hay eventos de mouse también.

Desafortunadamente, rb-applescript está un poco anticuado y es inestable.

Para la Mac, es posible que desee utilizar:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top