Comment envoyer des commandes clavier et souris au système d'exploitation sous-jacent à l'aide de Ruby?
-
22-07-2019 - |
Question
Existe-t-il un moyen neutre pour le système d'exploitation permettant à Ruby d'envoyer des événements de clavier et de souris au système d'exploitation sous-jacent?
Une approche évidente (pour moi) consiste à utiliser les liaisons Ruby / Java et à utiliser java.awt.Robot, mais cela semble simplement idiot.
La solution
Pour Mac:
gem install rb-appscript
Ensuite, vous pouvez le tester avec un script comme celui-ci:
require "rubygems"
require "appscript"
include Appscript
app("TextEdit").activate
app("System Events").keystroke("Look Ma, keystrokes!")
Pour Windows: (non testé, emprunté à ce fil )
require "win32ole"
wsh = WIN32OLE.new("WScript.Shell")
wsh.Run("Notepad.exe")
while not wsh.AppActivate("Notepad")
sleep .1
end
wsh.SendKeys("Look Ma, keystrokes!")
Autres conseils
Par souci d'exhaustivité, je pensais inclure une solution pour ceux qui utilisent Linux.
Sous Linux, vous pouvez utiliser xdotool pour automatiser les frappes au clavier. Il y a aussi un petit bijou pour Ruby, mais ce n’est pas vraiment nécessaire, étant donné que l’envoi de frappes au clavier est aussi simple que:
% x (clé xdotool super + w) # vous appuieriez sur les touches super et w simultanément
Il y a aussi des événements de souris.
Malheureusement, rb-applescript
est un peu daté et saturé.
Pour le Mac, vous pouvez utiliser:
%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')