IT マウスマクロ

Logicoolマウスのマクロサンプル - 特定キーを押しっぱなしにする

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

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

サンプルコード

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

以下は Shift + a キーを押しっぱなしにするサンプルコードです。
Ctrl キーで押しっぱなし状態を解除できるようになっています。

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");
		
		-- Shift + a キーを押した状態とする
		PressKey( "lshift" )
		PressKey( "a" )

		-- ctrl キーが押されていない間、待機する
		while not IsModifierPressed( "ctrl" ) do

			Sleep( 100 )
		
		end

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

		OutputLogMessage("End script\n");

	end

end

コード解説

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

対象行 : 5 行目

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

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

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

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

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

対象行 : 10 ~ 12 行目

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

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

なお、キーではなくマウスの左ボタンや右ボタンを押しっぱなし状態にしたい場合、PressMouseButton 関数を使うことで実現できます。

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

ctrl キーが押されていない間、待機する

対象行 : 14 ~ 19 行目

-- ctrl キーが押されていない間、待機する
while not IsModifierPressed( "ctrl" ) do

    Sleep( 100 )

end

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

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

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

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

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

対象行 : 21 ~ 23 行目

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

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

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

まとめ

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

  • 特定のキーをスクリプトで押しっぱなし状態にした後、IsModifierPressed 関数によって ctrl キーが押されるまで Sleep 処理で待機する
  • ctrl キーが押されて待機処理(ループ)を抜けたら、押しっぱなし状態を解除する

このサンプルのネックは、キーを押しっぱなしにしている間、while 文で処理がループしているので、他のボタンを押してもイベントが発生しません。
そのため、キーを押しっぱなしにしている間は他のボタンのイベントをトリガーにして処理を行うスクリプトを実行できません。
この問題を解消するために、別の方法でボタンを押しっぱなしにするスクリプトも以下の記事でご紹介させていただきます。

特定キーを押しっぱなしにする(ON/OFF切り替えパターン)

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

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

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

超高速FPSゲーミングマウス(ボタン: 8 個)

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

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

高パフォーマンスのゲーミングマウス(ボタン: 11 個)

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

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

15 個のプログラム可能なボタンを持つ高性能ワイヤレスマウス

Logicool G ゲーミングマウス ワイヤレス G604 ブラック

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

カスタマイズ可能な 20 個ものボタンを備える MMO 向けゲーミングマウス

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

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

スポンサーリンク

そういえば買いたい物があったんだった、日用品補充しなきゃ、などがあれば





おすすめ記事

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

-IT, マウスマクロ

Copyright© ArekoReport , 2020 All Rights Reserved.