logicoolマウスで修飾キー+マウスボタンの動作

やりたいこと

マウスの拡張ボタンを押しこむと、修飾キー+中央ボタンを押した状態になり、拡張ボタンを離すと、修飾キー+中央ボタンを離したことにしたい。

つまり、「マウスの拡張ボタン」と「修飾キー+中央ボタン」を連動させたような動作をさせたい。

logicoolのゲームソフトウェアには、マルチキーという機能があり、複数のキーをマウスボタンに対応させることができる。しかし、マウスのボタンを割り当てることができず、目的を達成することができない。

f:id:woodenCaliper:20180708003054p:plain

目的の動作を実現するために、私はこのソフトウェアで用意されているスクリプト機能を使用した。

Logicoolゲームソフトウェアのスクリプト機能

Logicoolゲームソフトウェアには、Lua言語で記述することによって、自由度の高い動作を実現することができます。

スクリプトは、自動ゲーム検出モードに変更して、 f:id:woodenCaliper:20180708005336p:plain

プロファイルからスクリプトを選択します。 f:id:woodenCaliper:20180708005516p:plain

下のコードでは、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は実行ファイルの場所が分かりにくかったのでメモ