4

Rコンソールからマウスポインタを制御することは可能ですか?

私はこのようなことを念頭に置いています:

move_mouse(x_pos=100,y_pos=200)   # move the mouse pointer to position (100,200)
mouse_left_button_down            # simulate a press of the left button
move_mouse(x_pos=120,y_pos=250)   # move mouse to select something
mouse_release_left_button          # release the pressed button

MATLAB では、次のコードでこのようなことが可能です。

import java.awt.Robot;
mouse = Robot;
mouse.mouseMove(0, 0);
mouse.mouseMove(100, 200);

上記を次のような R に直接変換してみました。

install.packages("rJava")          # install package
library(rJava)                     # load package
.jinit()                           # this starts the JVM
jRobot <- .jnew("java/awt/Robot")  # Create object of the Robot class

RでjRobotを取得したら、以下の2つのコマンドを使用してそのメソッド「MouseMove(100,200)」を呼び出そうとしましたが、どちらもエラーになりました。

jRobot$mouseMove(10,10)

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
              java.lang.NoSuchMethodException: No suitable method for the given parameters

また

.jcall(jRobot,, "mouseMove",10,10)
Error in .jcall(jRobot, , "mouseMove", 10, 10) : 
              method mouseMove with signature (DD)V not found
4

4 に答える 4

8

最後に私は問題を見つけました。R に 100 が整数であることを伝えて、Java に正しく渡す必要があります。

install.packages("rJava")          # install package
library(rJava)                     # load package
.jinit()                           # this starts the JVM
jRobot <- .jnew("java/awt/Robot")  # Create object of the Robot class

# Let java sleep 500 millis between the simulated mouse events
.jcall(jRobot,, "setAutoDelay",as.integer(500))

# move mouse to 100,200 and select the text up to (100,300)         
.jcall(jRobot,, "mouseMove",as.integer(100),as.integer(200))
.jcall(jRobot,, "mousePress",as.integer(16))
.jcall(jRobot,, "mouseMove",as.integer(100),as.integer(300))
.jcall(jRobot,, "mouseRelease",as.integer(16))
于 2013-11-01T11:10:49.173 に答える
2

どのオペレーティング システムですか。xdotoolLinux では、Rsystem関数から使用して呼び出すことができます。

> mousemove=function(x,y){system(paste0("xdotool mousemove ",x," ",y))}
> mousemove(0,0)
> mousemove(500,500)

これらは画面座標であり、R グラフィックス ウィンドウの座標とは何の関係もないことに注意してください。必要に応じて、他の X11 ユーティリティを使用して R グラフィックス ウィンドウの画面座標を取得し、プロット上の位置を取得できる場合があります。

Windows では、他のマウス操作プログラムにリーチできる可能性があります。IDK。

xdotool 情報: http://tuxradar.com/content/xdotool-script-your-mouse

その記事をさらに読むと、特定のウィンドウをアクティブにしてマウス操作を行う方法が示されます。

于 2013-11-01T09:55:48.170 に答える