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ゲーミングマウスのマクロ(スクリプト)関連ページ一覧
皮脂や唾、手垢、汗などで表面は見えない雑菌だらけです。 衛生上も問題ですし、気持ち良く使うためにも、こまめに拭きとってキレイにしましょう。