7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MATLABからマウスを操作する

Posted at

1.はじめに

だいぶ前に、EXCEL VBAを用いてマウスを動かす記事を見かけました。「数分間に一度、マウスをちょっとだけ動かす」というものですが、何に使うのでしょうか(と書いてみた)。
本記事では、MATLABを用いてマウスを操作する方法についてまとめました。

2.MATLABからマウスの操作はできない

いきなり書いてしまいましたが、MATLABからマウスを操作することはできないようです。
それどころか、特殊な条件(Figureの上)でなければ、マウスの位置情報も得ることはできないということで。
ですので、ここではJavaのお世話になり、この問題を解決することにします。

3.マウスをちょっとだけ動かす方法

JavaにはRobotクラスというものがあって、これを使ってマウスを動かします。
スクリプトは以下のようになります。

% 関係するJavaのクラスをインポートする
import java.awt.Robot;
import java.awt.MouseInfo;
import java.awt.event.*;

robot = Robot();% Robotクラスのインスタンス

pause(5);% 単なる時間かせぎ

a = MouseInfo.getPointerInfo();
b = a.getLocation();% マウス位置を得る
x =  b.getX();% マウスのX座標を取得
y =  b.getY();% マウスのY座標を取得

for t=1:10
    robot.mouseMove(x+100,y);% マウス移動
    pause(0.1);
    robot.mouseMove(x,y);% マウスを戻す
    pause(1);
end

マウス移動はスクリーン座標をもとに指定するので、「現在位置からどれだけ動かす」というようにするため、マウスの現在座標を取得し、それに移動量を加えて制御します。
マウスの位置を動かすのはmouseMoveというメソッドを使っています。

4.マウスで描画する

マウスの位置を動かすmouseMove、マウスのボタンを押すmousePress、マウスのボタンを離すmouseRelease を組み合わせると描画ができます。Paintアプリの上で描画するスクリプトの例を示します。

% 関係するJavaのクラスをインポートする
import java.awt.Robot;
import java.awt.MouseInfo;
import java.awt.event.*;

robot = Robot();% Robotクラスのインスタンス

pause(5);%単なる時間かせぎ

% 描画する四角形の座標
x=[100 200 200 100 100];
y=[300 300 200 200 300];

% 始点にマウスを移動
robot.mouseMove(x(1),y(1));

% マウスの左ボタンを押す
robot.mousePress(InputEvent.BUTTON1_MASK);

for t=2:5
    pause(1);
    % マウスを動かす
    robot.mouseMove(x(t),y(t));
end

% マウスの左ボタンを離す
robot.mouseRelease(InputEvent.BUTTON1_MASK);

これで、下記のように四角形が描画できます。

MouseDraw.gif

5.マウスのスクロール

マウスをホイールでスクロールさせるメソッドmouseWheel も使えます。スクリプトの例を示します。

% 関係するJavaのクラスをインポートする
import java.awt.Robot;
import java.awt.MouseInfo;
import java.awt.event.*;

robot = Robot();% Robotクラスのインスタンス

pause(5);% 単なる時間かせぎ

%ペイントのウインドウ上にマウスを移動する
robot.mouseMove(100,100);

for t=1:3
    % スクロール(プラスがロールアップ)
    robot.mouseWheel(1);
    pause(0.5);
end

for t=1:3
    % スクロール(ロールダウン)
    robot.mouseWheel(-1);
    pause(0.5);
end

これでスクロールができるようになります。

MouseScrool.gif

6.マウスじゃなくて、キーボードを制御する方法

キーボードを操作する方法については、@HppyCtrlEngnrng さんの記事『MATLABによるChromeの恐竜のアレ』をご参照ください。

以上です。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?