IT マウスマクロ

Logicoolマウスのマクロサンプル - 特定キーを押しっぱなしにする(ON/OFF切り替えパターン)

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

Logicoolゲーミングマウスのマクロ(スクリプト)についてサンプルコードをご紹介する記事です。本記事では、特定のキーを押しっぱなしにする簡単なサンプルをご紹介させていただきます。

前回の記事では ctrl キーなどで押しっぱなし状態を解除するサンプルをご紹介しましたが、今回は起動ボタンを再度押すことで押しっぱなし状態を解除できるサンプルとなっています。

なお、マルチキー機能でも似たようなことができますので、スクリプトを書くよりもマルチキー機能の方が良いという人は以下の記事もご参照ください。

Logicoolマウスのマルチキー機能 - 特定キーを押しっぱなしにする

サンプルコード

ある機能や操作を長時間実行する際に、特定のキーを押しっぱなしにしなければならない場合、手が疲れてしまいますよね。そのような場合に、固定で押しておかなければならないキーをマクロ(スクリプト)で押しっぱなしの状態にしておくと、疲れを軽減できます。

以下は番号 4 のボタンを押すと、特定キーを押しっぱなし状態にするサンプルコードです。
番号 4 のボタンを再度押すと、キーの押しっぱなし状態を解除できるようになっています。

bPressKeepMode = false	-- 押しっぱなし状態のモードかどうかを表すフラグ

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");
		
		-- 押しっぱなし状態のモードかどうかをチェックする
		if not bPressKeepMode then
			-- 押しっぱなし状態のモードではない場合

			-- shift + a キーを押した状態とする
			PressKey( "lshift" )
			PressKey( "a" )
			
			-- 押しっぱなし状態のモードにフラグを変更する
			bPressKeepMode = true

		else
			-- すでに押しっぱなし状態のモードの場合

			-- shift + a キーを離す
			ReleaseKey( "a" )
			ReleaseKey( "lshift" )

			-- 押しっぱなし状態のフラグを解除する
			bPressKeepMode = false

		end

		OutputLogMessage("End script\n");

	end

end

コード解説

押しっぱなし状態を識別するためのフラグの宣言

対象行 : 1 行目

bPressKeepMode = false -- 押しっぱなし状態のモードかどうかを表すフラグ

キーが押しっぱなし状態になっているかどうかを識別するためのフラグを OnEvent 関数の外にグローバル変数として宣言しています。
ここで宣言したフラグ(変数)の内容は処理が終わった後もずっと記憶されていますので、スクリプトの起動トリガーとなるボタンを押した時にこのフラグ(変数)の内容をチェックして、キーを押しっぱなしにするのか離すのかを判断します。

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

対象行 : 7 行目

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

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

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

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

キーが押しっぱなしの状態かどうかチェックする

対象行 : 13 ~ 33 行目

if not bPressKeepMode then
    -- 押しっぱなし状態のモードではない場合

    -- shift + a キーを押した状態とする
    ~

else
    -- すでに押しっぱなし状態のモードの場合

    -- shift + a キーを離す
    ~

end

bPressKeepMode の状態をチェックし、状態に応じて処理を分岐させています。

bPressKeepMode が false の場合、キーがまだ押されていない状態を示しています。bPressKeepMode の前に not を付けて結果を反転させていますので、キーがまだ押されていない状態の場合に true となり、特定のキーを押しっぱなしの状態にする処理を行っています。(if と else 間の処理)

bPressKeepMode が true の場合、すでにキーが押しっぱなしの状態となっているため、押下状態を解除する処理を行っています。(else 以降の処理)

キーを押しっぱなしにする

対象行 : 16 ~ 21 行目

-- Shift + a キーを押した状態とする
PressKey( "lshift" )
PressKey( "a" )

-- 押しっぱなし状態のモードにフラグを変更する
bPressKeepMode = true

lshift と a キーを押しっぱなしの状態にしています。
PressKey関数で Shift キーを押すには lshift(キーボード左側の Shift キー)と rshift(キーボード右側の Shift キー)のどちらかで指定する必要がありますので、ご注意ください。ctrl, alt キーの場合も同様に lctrl, rctrl, lalt, ralt を区別する必要があります。

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

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

その後、フラグに true を設定し、キーが押しっぱなし状態になったことを記憶しています。

押しっぱなしにしていたキーを離す

対象行 : 26 ~ 31 行目

-- Shift + a キーを離す
ReleaseKey( "a" )
ReleaseKey( "lshift" )

-- 押しっぱなし状態のフラグを解除する
bPressKeepMode = false

押しっぱなしにしていた lshift と a キーを離しています。
ここでも lshift, rshift を厳密に区別して指定する必要がありますので、ご注意ください。

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

その後、フラグに false を設定し、キーの押しっぱなし状態が解除されていることを記憶しています。

まとめ

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

  • OnEvent 関数の外にグローバル変数として宣言したフラグに状態を記憶させておき、ボタンを押すごとにフラグの状態に応じて処理を切り替える

特定のキーを長時間押しっぱなしにしなければならないシーンで、ぜひ活用してみてください。

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

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.