Logicoolゲーミングマウスのマクロ作成において、マウスカーソルを移動したり、現在のマウスカーソルの座標を取得するなどのマウスカーソルに関連する関数についてご紹介していきます。
目次
マウスカーソルを移動する(MoveMouseTo)
マウスカーソルを移動するには MoveMouseTo 関数を使います。
ただし、マルチディスプレイ環境でもメインディスプレイの中でしかマウスカーソルを移動することができません。 サブディスプレイにもマウスカーソルを移動させたい場合は、後述する MoveMouseToVirtual 関数を使用してください。
MoveMouseTo( x座標, y座標 )
メインディスプレイの一番左上が x座標:0, y座標:0 となります。
x座標と y座標の最大値は 65535 であり、 x座標:65535, y座標:65535 はメインディスプレイの一番右下を表します。

65535 以上の座標を指定するとエラーとなります。そのため、メインディスプレイを超えてマウスカーソルを移動させることはできません。
座標の最大値である 65535 という数字は解像度とも一致しないため、座標を指定しづらいと思います。
どちらかと言えばピクセルで指定する方が分かりやすいのではないでしょうか。
ピクセルの座標で移動位置を指定したい場合、以下のような計算式を使うと便利です。
(移動先のピクセル座標 ÷ メインディスプレイの解像度) × 65535
移動先のピクセル座標とメインディスプレイの解像度(最大ピクセル座標)の比率を算出し、65535 を掛けることで座標を変換しています。
画面左上を基点として右に 1000px、下に 800px の場所にマウスカーソルを移動させる例を考えてみます。

上記の例の場合、以下のように MoveMouseTo 関数を実行すると意図した座標にマウスカーソルを移動させることができます。
MoveMouseTo( (1000/1280)*65535, (800/1024)*65535 )
-- 画面左上にマウスカーソルを移動させる
MoveMouseTo( 0, 0 )
-- 画面中央にマウスカーソルを移動させる
MoveMouseTo( 32767, 32767 )
-- x座標:100, y座標:200 の位置にマウスカーソルを移動させる
SCREEN_SIZE_X = 1920 -- 画面横の解像度
SCREEN_SIZE_Y = 1080 -- 画面縦の解像度
MoveMouseTo( (100/SCREEN_SIZE_X)*65535, (200/SCREEN_SIZE_Y)*65535 )
マルチディスプレイ環境でマウスカーソルを移動する(MoveMouseToVirtual)
マルチディスプレイ環境でマウスカーソルを移動するには MoveMouseToVirtual 関数を使います。
MoveMouseToVirtual( x座標, y座標 )
MoveMouseTo 関数と異なりサブディスプレイにもマウスカーソルを移動させることができます。
0 ~ 65535 の範囲で座標を指定する点は MoveMouseTo 関数と同じですが、サブディスプレイも含めた画面全体の中での座標を 0 ~ 65535 で指定します。

ピクセルの座標で移動位置を指定したい場合、以下のような計算式を使うと便利です。
x座標 : { 移動先のピクセル座標 ÷ (メインディスプレイの解像度 + サブディスプレイの解像度) } × 65535
y座標 : ( 移動先のピクセル座標 ÷ 縦の解像度が大きい方のディスプレイの解像度 ) × 65535
サブディスプレイの中央真下にマウスカーソルを移動させる例を考えてみます。

上記の例の場合、以下のように MoveMouseToVirtual 関数を実行すると意図した座標にマウスカーソルを移動させることができます。
MoveMouseTo( (1792/(1280+1024))*65535, (768/1024)*65535 )
DISPLAY_1_SCREEN_SIZE_X = 1920 -- メインディスプレイの横の解像度
DISPLAY_1_SCREEN_SIZE_Y = 1080 -- メインディスプレイの縦の解像度
DISPLAY_2_SCREEN_SIZE_X = 1024 -- サブディスプレイの横の解像度
-- 画面左上にマウスカーソルを移動させる
MoveMouseToVirtual( 0, 0 )
-- メインディスプレイとサブディスプレイの中間にマウスカーソルを移動させる
MoveMouseToVirtual( (DISPLAY_1_SCREEN_SIZE_X/(DISPLAY_1_SCREEN_SIZE_X+DISPLAY_2_SCREEN_SIZE_X))*65535, 0.5*65535 )
-- x座標:100, y座標:200 の位置にマウスカーソルを移動させる
MoveMouseTo( (100/(DISPLAY_1_SCREEN_SIZE_X+DISPLAY_2_SCREEN_SIZE_X))*65535, (200/DISPLAY_1_SCREEN_SIZE_Y)*65535 )
マウスカーソルを相対座標で移動する(MoveMouseRelative)
現在の位置からの相対座標でマウスカーソルを移動するには MoveMouseRelative 関数を使います。
MoveMouseRelative( x軸の移動値, y軸の移動値 )
MoveMouseTo 関数や MoveMouseToVirtual 関数と異なり、指定する値の単位はピクセルです。
x座標にマイナスの値を指定すると左方向に、プラスの値を指定すると右方向にマウスカーソルが移動します。
y座標にマイナスの値を指定すると上方向に、プラスの値を指定すると下方向にマウスカーソルが移動します。
-- 左に 100ピクセル分マウスカーソルを移動する
MoveMouseRelative( -100, 0 )
-- 右に 100ピクセル分マウスカーソルを移動する
MoveMouseRelative( 100, 0 )
-- 上に 100ピクセル分マウスカーソルを移動する
MoveMouseRelative( 0, -100 )
-- 下に 100ピクセル分マウスカーソルを移動する
MoveMouseRelative( 0, 100 )
マウスカーソルの座標を取得する(GetMousePosition)
現在のマウスカーソルの位置を取得するには GetMousePosition 関数を使います。
GetMousePosition()
1. マウスカーソルの現在の x座標
2. マウスカーソルの現在の y座標
座標はメインディスプレイの縦、横のサイズを 65535 とした場合の値で返されます。
サブディスプレイ上の座標については、メインディスプレイの解像度との比率で計算されます。
以下は横の解像度が 1920px と 1024px のディスプレイを使っている場合の例です。
全体の解像度に対するメインディスプレイとサブディスプレイの解像度の比率は 1 : 0.53 となります。
メインディスプレイの横のサイズを 65535 とした時のサブディスプレイの横のサイズは 34970 となり、こちらも比率が 1 : 0.53 となっています。

DISPLAY_1_SCREEN_SIZE_X = 1920 -- メインディスプレイの横の解像度
DISPLAY_1_SCREEN_SIZE_Y = 1080 -- メインディスプレイの縦の解像度
DISPLAY_2_SCREEN_SIZE_X = 1024 -- サブディスプレイの横の解像度
-- 現在のカーソルの位置を取得する
curX, curY = GetMousePosition()
-- y座標は動かさず、指定した x座標(左から600pxの場所)にマウスカーソルを移動させる
MoveMouseToVirtual( (600/(DISPLAY_1_SCREEN_SIZE_X+DISPLAY_2_SCREEN_SIZE_X))*65535, curY )
まとめ
今回はマウスカーソルの操作に関連する 4 つの関数をご紹介させていただきました。
- マウスカーソルを移動する(MoveMouseTo)
- マルチディスプレイ環境でマウスカーソルを移動する(MoveMouseToVirtual)
- マウスカーソルを相対座標で移動する(MoveMouseRelative)
- マウスカーソルの座標を取得する(GetMousePosition)
これまでの記事で Logicool 製のゲーミングマウスでマクロをプログラミングするための基本的なノウハウについては解説できたと思います。
今後はプログラミング言語の Lua に関する解説やサンプルコードなどをご紹介できればと考えています。
Logicoolマウスのマクロ作成(ボタン操作編)
Logicoolマウスのマクロ作成(キー操作編)
Logicoolゲーミングマウスのマクロ(スクリプト)関連ページ一覧
皮脂や唾、手垢、汗などで表面は見えない雑菌だらけです。 衛生上も問題ですし、気持ち良く使うためにも、こまめに拭きとってキレイにしましょう。