やりたいこと
マウスの拡張ボタンを押しこむと、修飾キー+中央ボタンを押した状態になり、拡張ボタンを離すと、修飾キー+中央ボタンを離したことにしたい。
つまり、「マウスの拡張ボタン」と「修飾キー+中央ボタン」を連動させたような動作をさせたい。
logicoolのゲームソフトウェアには、マルチキーという機能があり、複数のキーをマウスボタンに対応させることができる。しかし、マウスのボタンを割り当てることができず、目的を達成することができない。

目的の動作を実現するために、私はこのソフトウェアで用意されているスクリプト機能を使用した。
Logicoolゲームソフトウェアのスクリプト機能
Logicoolゲームソフトウェアには、Lua言語で記述することによって、自由度の高い動作を実現することができます。
スクリプトは、自動ゲーム検出モードに変更して、

プロファイルからスクリプトを選択します。

下のコードでは、G6のマウスボタンをShift+中央クリックと同等の機能にすることができます。
LEFT_CTRL_KEY = "lctrl"
RIGHT_CTRL_KEY = "rctrl"
CTRL_KEY = "ctrl"
LEFT_SHIFT_KEY = "lshift"
RIGHT_SHIFT_KEY = "rshift"
SHIFT_KEY = "shift"
LEFT_ALT_KEY = "lalt"
RIGHT_ALT_KEY="ralt"
ALT_KEY = "alt"
LEFT_BUTTON = 1
CENTOR_BUTTON = 2
RIGHT_BUTTON = 3
-----------------------
conditionMouseButton = 6
modificationKey = LEFT_SHIFT_KEY
invocationMouseButton = CENTOR_BUTTON;
-----------------------
function OnEvent(event, arg, family)
if event == "MOUSE_BUTTON_PRESSED" then
if arg == conditionMouseButton then
PressKey(modificationKey);
Sleep(100)
PressMouseButton(invocationMouseButton );
end
elseif event == "MOUSE_BUTTON_RELEASED" then
if arg == conditionMouseButton then
ReleaseMouseButton(invocationMouseButton );
ReleaseKey(modificationKey);
end
end
end
conditionMouseButtonがマウスのG?ボタンの数値で、今回はG6ボタンにしています。
modificationKeyは修飾キーで、今回は左Shiftにしています。
invocationMouseButtonは代替ボタンを押すことによって、実際に発動することになるボタンで、今回は中央ボタンにしています。
コードの上のほうにいくつかの変数を定義しておいたので、多少は利用者側で変更することができます。
簡単なコードの説明
function OnEvent(event, arg, family)でマウスボタンが押されたときに発生するイベント関数です。
引数のeventは、マウスボタンが押されたのか離されたのか等の情報が文字列として入っています。マウスボタンが押されたのなら"MOUSE_BUTTON_PRESSED"、離されたのなら"MOUSE_BUTTON_RELEASED"になります。
引数のargは、eventがどのボタンによって発生したかを示す数値が入ります。G6なら6が入ります。
引数のfamilyには、なんのハードウェアによって発生したかを示していますが、今回は使用していません。
あとは単純に、if文によって条件分けし、押されたときはShift(modificationKey)+中央ボタン(invocationMouseButton)を押し、離されたときは先のキーとボタンを離します。
参考 というかこれを見れば大体わかります
G-series Lua API のメモ
おまけメモ
logicoolでマウスの動作等をアプリケーションによって切り替えるとき、アプリの実行ファイルを知る必要があるのですが、実際にアプリを起動して、タスクマネージャーからそのアプリのプロパティを見ればわかります。
fusion360は実行ファイルの場所が分かりにくかったのでメモ