Logicoolゲーミングマウスのマクロ(スクリプト)についてサンプルコードをご紹介する記事です。本記事では、特定のキーを押しっぱなしにする簡単なサンプルをご紹介させていただきます。
なお、マルチキー機能でも似たようなことができますので、スクリプトを書くよりもマルチキー機能の方が良いという人は以下の記事もご参照ください。
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ゲーミングマウスのマクロ(スクリプト)関連ページ一覧
皮脂や唾、手垢、汗などで表面は見えない雑菌だらけです。 衛生上も問題ですし、気持ち良く使うためにも、こまめに拭きとってキレイにしましょう。