IT マウスマクロ

Logicoolマウスのマクロサンプル - 特定座標のボタンを繰り返しクリックする

投稿日:2019年4月20日 更新日:

Logicoolゲーミングマウスのマクロ(スクリプト)についてサンプルコードをご紹介する記事です。本記事では、特定座標にマウスを移動し、マウスボタン/キーを繰り返しクリックする簡単なサンプルをご紹介させていただきます。

サンプルコード

まずはサンプルコードをご覧ください。
以下は特定座標をクリックし、enter キーをクリックする動作を繰り返し行うサンプルコードです。

マウスボタンやキーを繰り返しクリックする動作自体は、ボタンの割り当てやマルチキー機能でも実現することができます。
ただし、マウスのボタンを押している間のみ繰り返しクリックさせることができるため、常にマウスボタンを押しておく必要があります。また、マウスカーソルの移動はできません。

一方、以下のサンプルでは ctrl キーを押すまで処理が永遠に続くようになっています。
そのため、処理を起動した後は、自分は別のことをやりながらマウス/キー操作を自動で行わせておき、任意のタイミングで処理を中断することができます。
手を離していても自動で処理させられる点がスクリプトによるマクロの非常に優秀な点です。

-- ディスプレイの解像度
SCREEN_WIDTH = 1920	-- ディスプレイの横の解像度
SCREEN_HEIGHT = 1080	-- ディスプレイの縦の解像度

-- マウスカーソルの移動先 X,Y座標(ピクセル)
MOVE_X_1 = 490
MOVE_Y_1 = 300

function OnEvent(event, arg)
	--OutputLogMessage("event = %s, arg = %s\n", event, arg);

	-- イベントが発生したボタン番号をチェックする
	if arg == 4 and event == "MOUSE_BUTTON_PRESSED" then
		-- 番号 4 のマウスボタンでイベントが発生した場合
		
		OutputLogMessage("Start script\n");

		-- ctrl キーが押されていない間は処理を続ける
		while not IsModifierPressed( "ctrl" ) do
		
			-- 指定座標にマウスカーソルを移動させる
			MoveMouseTo( 65535 * MOVE_X_1/SCREEN_WIDTH, 65535 * MOVE_Y_1/SCREEN_HEIGHT )
			Sleep( 200 )
			-----------------------------
			-- マウスを左クリックする(押す→離す)
			-----------------------------
			PressMouseButton( 1 )
			Sleep( 200 )
			ReleaseMouseButton( 1 )

			Sleep( 1000 )
		
			-----------------------------
			-- enter キーをクリックする(押す→離す)
			-----------------------------
			PressKey( "enter" )
			Sleep( 200 )
			ReleaseKey( "enter" )

			Sleep( 1000 )
		
		end

		OutputLogMessage("End script\n");

	end

end

コード解説

ディスプレイの解像度やマウスカーソルの移動先座標を定義する

対象行 : 1 ~ 7 行目

-- ディスプレイの解像度
SCREEN_WIDTH = 1920 -- ディスプレイの横の解像度
SCREEN_HEIGHT = 1080 -- ディスプレイの縦の解像度

-- 最初のマウスカーソルの移動先 X,Y座標
MOVE_X_1 = 490
MOVE_Y_1 = 300

ディスプレイの解像度やマウスカーソルを移動させる座標をピクセルで定義しています。
マウスカーソルを移動させる命令では座標を 1 ~ 65535 の範囲で指定する必要があり、ピクセルの座標に変換するためにディスプレイの解像度を定義しておく必要があります。
詳しくは以下の記事で解説していますので、そちらをご参照ください。
Logicoolマウスのマクロ作成(マウスカーソル操作編)

イベントが発生したボタン番号をチェックする

対象行 : 13 行目

if arg == 4 and event == "MOUSE_BUTTON_PRESSED" then

番号 4 のボタンが押されたかどうかを判定しています。処理の起動トリガとして使いたいボタンに合わせてボタン番号は適宜変更してください。

ボタン番号の確認方法などは以下の記事でも解説していますので、ご参照ください。
Logicoolマウスのマクロ作成(エディタ起動方法~初期コード解説)

ちなみに、私が使っている G502 HERO では親指のあたりのボタンが番号 4 に当たります。つまり、赤い丸で囲まれているボタンを押すと、サンプルコードの処理が行われることになります。

ctrl キーが押されていない間、処理を続ける

対象行 : 19 ~ 42 行目

while not IsModifierPressed( "ctrl" ) do
~~~
end

条件を満たす間、while と end の間に記述された処理を繰り返し実行します。条件は while と do の間に記載し、今回の場合は not IsModifierPressed( "ctrl" ) が該当します。

IsModifierPressed 関数は指定したキーが押されているかどうかを教えてくれる命令です。パラメータとして"ctrl"を指定していますので、ctrl キーが押されていれば True、押されていなければ False が返ってきます。
さらに IsModifierPressed の前に not を付けていますので、結果は反転し、ctrl キーが押されていない場合に True となり、条件が成立します。
つまり、ctrl キーが押されていない間、while と end に囲まれた 20 ~ 41 行目の処理を繰り返し実行することになります。

なお、処理を中断させるキーとして ctrl キーを使っていますが、shift や alt キーでも構いません。

IsModifierPressed 関数については以下の記事でも解説していますので、ご参照ください。
Logicoolマウスのマクロ作成(キー操作編)

指定座標にマウスカーソルを移動させる

対象行 : 22 ~ 23 行目

MoveMouseTo( 65535 * MOVE_X_1/SCREEN_WIDTH, 65535 * MOVE_Y_1/SCREEN_HEIGHT )
Sleep( 200 )

6 ~ 7 行目で定義しておいた座標にマウスカーソルを移動させています。
マウスカーソルを移動させてすぐに次の処理を行うと、アプリケーションがマウスカーソルの移動をまだ認識していない可能性があるので、Sleep 命令で 200 ミリ秒ほど待機させています。
待機させる適切な時間は環境によって異なりますので、必要に応じて増減させてみてください。

MoveMouseTo 関数については以下の記事でも解説していますので、ご参照ください。
Logicoolマウスのマクロ作成(マウスカーソル操作編)

マウスを左クリックする

対象行 : 27 ~ 29 行目

PressMouseButton( 1 )
Sleep( 200 )
ReleaseMouseButton( 1 )

マウスの左ボタンでクリックさせています。
PressAndReleaseMouseButton 命令でもクリックさせられるのですが、アプリケーションによってはクリックとして認識しない場合があります。そのため、ボタンを押す動作(PressMouseButton)とボタンを離す動作(ReleaseMouseButton)に分けて命令しています。

PressMouseButton 関数や ReleaseMouseButton 関数については以下の記事でも解説していますので、ご参照ください。
Logicoolマウスのマクロ作成(ボタン操作編)

enter キーをクリックする

対象行 : 36 ~ 38 行目

PressKey( "enter" )
Sleep( 200 )
ReleaseKey( "enter" )

enter キーをクリックさせています。
PressAndReleaseKey 命令でもクリックさせられるのですが、アプリケーションによってはクリックとして認識しない場合があります。そのため、キーを押す動作(PressKey)とキーを離す動作(ReleaseKey)に分けて命令しています。

PressKey 関数や ReleaseKey 関数については以下の記事でも解説していますので、ご参照ください。
Logicoolマウスのマクロ作成(キー操作編)

まとめ

今回のサンプルのポイントは以下の通りです。

  • 繰り返し行いたい処理を while ~ end で囲む
  • IsModifierPressed 関数によって ctrl, shift, alt キーのいずれかが押されていないことを判定し、while 文の繰り返し条件とする

処理を繰り返す条件を「特定キーのクリック有無」としていますが、実行を開始してからの時間(〇〇分経過するまで など)や特定時刻までとするなどの派生形も考えられます。
また、while ~ end で囲まれた処理をすべて実行しないと終了条件の判定を行わないため、処理のどこにおいても自由に処理を中断できるようにすると、より使い易くなると思います。

機会がありましたら、上記の派生形や改善を組み込んだサンプルコードについてもご紹介させていただければと思います。

その他のマクロ(スクリプト)関連ページはこちら

Logicoolゲーミングマウスのマクロ(スクリプト)関連ページ一覧

ディスプレイやキーボード・マウス・スマホ 汚れていませんか?

皮脂や唾、手垢、汗などで表面は見えない雑菌だらけです。 衛生上も問題ですし、気持ち良く使うためにも、こまめに拭きとってキレイにしましょう。

エレコム クリーナー ウェットティッシュ 液晶用

  • 拭き跡が残りにくい
  • 帯電防止効果で拭いた後にホコリがつきにくい
  • ディスプレイの表面加工を傷めないノンアルコールタイプ

液晶用と書いてありますが、キーボードやマウス、タブレット、スマホなどにも使えます。
大容量なので 1つ置いておくだけでも、気付いた時にすぐ掃除ができて便利です。

おすすめのゲーミングマウス

Logicool ロジクール ゲーミング マウス G402

  • 500IPSを超えるトラッキング速度
  • 8個のプログラム可能なボタン
  • ボタンによるDPIの素早い切り替え
  • 1msのレポートレート
  • 高速なクリック(連打)を実現

Logicool ロジクール ゲーミング マウス G502 HERO

  • 400IPSを超えるトラッキング速度
  • 11個のプログラム可能なボタン
  • 100~16,000の全DPIでゼロスムージング、ゼロフィルタリング、ゼロアクセラレーションを達成
  • 1msのレポートレート
  • マウスの重さを調整可能

Logicool G ゲーミングマウス ワイヤレス G604

  • 400IPSを超えるトラッキング速度
  • 15個のプログラム可能なボタン
  • 100~16,000の全DPIでゼロスムージング、ゼロフィルタリング、ゼロアクセラレーションを達成
  • 1msのレポートレート
  • ワイヤレス

Logicool ロジクール ゲーミング マウス G600t

  • MMO に最適な 20個のプログラム可能なボタン
  • 親指だけで 12個のボタンを瞬時に押せるサムパネル
  • 1msのレポートレート


スポンサーリンク

毎日の飲料は箱買いで年間数千円もお得に (Amazon)




おすすめ記事

1
Logicool(ロジクール)のゲーミングマウスではマクロを作って自動的な操作を実現することができます。 ボタン 1 つ押すだけで複雑な操作が自動で行えるようになり、定型的な操作を効率良く楽に行えるよ ...
2
バウヒュッテ(Bauhutte)のゲーミングチェア : RS-950RR の使用感などをレポートさせていただきたいと思います。一般的なオフィスチェアよりも断然座り心地が良く、私には合っていました。オス ...
3
キーボード・マウスでの操作に慣れているのに、PS4 や Xbox のコントローラで FPS/TPSゲームをプレイするとうまく操作できず、歯がゆい思いをされていないでしょうか。ゲームソフト側が対応してい ...
4
「なろう系」作品の中で、定期的に読み返したくなるオススメの作品をご紹介させていただきます。 ありがちな俺TUEEEチート系の作品はなく、これだけは読んでほしいという面白い作品を厳選しています。 「なろ ...

-IT, マウスマクロ

Copyright© ArekoReport , 2023 All Rights Reserved.