¿Cómo enviar comandos de teclado y mouse al sistema operativo subyacente usando Ruby?
-
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.
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!"')