(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【SikuliX】mouseMoveによるカーソル移動のポイント

スポンサーリンク

ポイント

mouseMove関数にLocationとして値を引数に入れると絶対値としてカーソルが移動し、スカラーとして値を入れると相対的にカーソルが移動します。

以下、補足です。

補足

例えばSikuliXにて

nowlocation = Env.getMouseLocation()

として現在のマウス(カーソル)位置を取得し、それらをprintにて出力すると以下のように表示されます。

nowlocation(754,69)@S(0)[0,0 1366x768]

これは「ディスプレイ全体は1366x768の座標を持ち現在のカーソル位置は754,69」と読みます。

このLocation型を用いて例えば以下のような構文で任意の座標情報を持つLocationを用意できます。

Location(X,Y)

例えば以下をSikuliXで実行すると

nowlocation = Env.getMouseLocation()
xlocation = Location(683,384)
mouseMove(xlocation)
mouseMove(nowlocation)

以下のように画面中心に移動した後に最初の位置に戻ってくる動きをします。
f:id:mtiit:20190815215032g:plain
(ヨーヨーみたいな動きのGifになりました。)

ここまでは分かりやすいのですが

mouseMove(10,10)

とするとどうなるでしょうか?

冒頭で記載した通り、現在位置から右に10、左に10動きます。

例えば以下を実行すれば

mouseMove(10,20)
sleep(1)
mouseMove(10,40)
sleep(1)
mouseMove(10,80)
sleep(1)
mouseMove(10,-100)

以下のような挙動をします。マイナスもきちんと効いていることが分かります。
f:id:mtiit:20190815220347g:plain

まとめ

再掲となりますがmouseMove関数にLocationとして値を引数に入れると絶対値としてカーソルが移動し、スカラーとして値を入れると相対的にカーソルが移動します。特にスカラーを入れると演算不要で相対的に小刻みに動かせるので使いようによっては便利です。

以上、ご参考になれば幸いです。