Logicoolゲーミングマウスのマクロ(スクリプト)についてサンプルコードをご紹介する記事です。本記事では、2桁以上の数字(例:12345、1000 など)をキー入力するサンプルをご紹介させていただきます。
2桁以上の数字をキー入力する場合、例えば 12345 では 1、2、3、4、5 と分解して 1回ずつキーを入力する必要があります。あらかじめ入力する数字が決まっているのであれば以下のように固定でプログラムに組み込んでも構いません。
PressAndReleaseKey( "1" ) PressAndReleaseKey( "2" ) PressAndReleaseKey( "3" ) PressAndReleaseKey( "4" ) PressAndReleaseKey( "5" )
また、数値が変わった場合に毎回コードを変更するのも面倒ですよね。
そのような場合に使えるサンプルコードをご紹介させていただきます。
目次
サンプルコード
以下は 54321 という数値をキーで入力するサンプルです。
function OnEvent(event, arg)
-- イベントが発生したボタン番号をチェックする
if arg == 9 and event == "MOUSE_BUTTON_PRESSED" then
InputNumber( 54321 )
end
end
---------------------------------------
-- 数値を入力する
---------------------------------------
function InputNumber( iNum )
----------------------------------------
-- 初期化
----------------------------------------
-- 引数として渡された数値を計算用の変数に再格納する
nWkCnt = iNum
-- 数値を入れる配列を初期化する
nNumList = {}
----------------------------------------
-- キー入力する数値を分解して 1つずつ配列に格納する
----------------------------------------
-- 1 の位の数字を配列に格納する
table.insert( nNumList, nWkCnt % 10 )
while nWkCnt / 10 > 0 do
-- 10で割って小数点以下を切り捨てる
nWkCnt = math.floor( nWkCnt / 10 )
-- 1 の位の数字を配列に格納する
table.insert( nNumList, 0, nWkCnt % 10 )
end
----------------------------------------
-- 数値の配列から1つずつ取り出してキーを入力する
----------------------------------------
for i=1, #nNumList do
-- 数値の配列から1つ取り出す
nInputNum = nNumList[i]
-- 数字に合わせたキーコードを決定する
if nInputNum == 0 then
nKeyCode = 0x0b
else
nKeyCode = 0x01 + nInputNum
end
-- 数字に合わせたキーを入力する
PressAndReleaseKey( nKeyCode )
end
end
コード解説
数値をキー入力する関数を呼び出す
対象行 : 3 ~ 8 行目if arg == 9 and event == "MOUSE_BUTTON_PRESSED" then InputNumber( 54321 ) end
番号9 のボタンを押した時、InputNumber という関数を呼び出しています。
InputNumber は引数として指定された任意の数値をキー入力してくれる関数です。あらかじめ用意されている関数ではなく、独自に定義した関数となります。
今回は 54321 という固定の数値を引数で指定していますが、可変の値が格納される変数などを渡すようにすれば、計算結果に応じてキー入力させることができます。
InputNumber 関数の定義
対象行 : 12 ~ 59 行目--------------------------------------- -- 数値を入力する --------------------------------------- function InputNumber( iNum ) ~ end
引数の iNum で指定された任意の数値をキー入力する InputNum 関数を定義しています。
変数の初期化
対象行 : 20 ~ 23 行目-- 引数として渡された数値を計算用の変数に再格納する nWkCnt = iNum -- 数値を入れる配列を初期化する nNumList = {}
入力対象の数値を後程計算で変更したいため、引数の値を作業用の変数 nWkCnt に再格納しています。
また、入力対象の数値を 1つずつ分解してキー入力する必要があるため、分解した数値を格納する配列を初期化しています。
キー入力する数値を分解して 1つずつ配列に格納する
対象行 : 29 ~ 39 行目-- 1 の位の数字を配列に格納する table.insert( nNumList, nWkCnt % 10 )
まず最初に 1の位の値(10で割った余り)を配列 nNumList に格納しています。
while nWkCnt / 10 > 0 do
~
end
2桁目以降があるかどうか(10で割った値が 1以上かどうか)をチェックし、処理をループさせています。
while nWkCnt / 10 > 0 do
-- 10で割って小数点以下を切り捨てる
nWkCnt = math.floor( nWkCnt / 10 )
-- 1 の位の数字を配列に格納する
table.insert( nNumList, 0, nWkCnt % 10 )
end
1 の位の値は先ほど配列に格納して不要なため、10 で割って桁を 1つ右にシフトしています。
math.floor は小数点以下を切り捨てる関数です。
例えば入力対象の値が 54321 で 1回目のループ処理であれば、nWkCnt は 54321 から桁がシフトして 5432 となります。
while nWkCnt / 10 > 0 do
-- 10で割って小数点以下を切り捨てる
nWkCnt = math.floor( nWkCnt / 10 )
-- 1 の位の数字を配列に格納する
table.insert( nNumList, 0, nWkCnt % 10 )
end
1の位の値(10で割った余り)を配列 nNumList に再度格納しています。
ただし、配列の末尾に格納していくと 12345 と数値が逆転してしまうため、以下の部分で配列 nNumList の一番最初に挿入するように指定しています。
table.insert( nNumList, 0, nWkCnt % 10 )
配列内の数値を 1つずつキー入力する
対象行 : 45 ~ 57 行目 for i=1, #nNumList do
~
end
配列 nNumList 内の何番目から数値を取り出すかを指定する添字番号 i を 1 に初期化しています。
また、 #nNumList は配列 nNumList 内の最大添字番号を表しています。
このサンプルでは 54321 と 5 つの数字が配列に格納されているため、i の数値が 1 から 5 になるまで 5回処理されます。
for i=1, #nNumList do
-- 数値の配列から1つ取り出す
nInputNum = nNumList[i]
-- 数字に合わせたキーコードを決定する
if nInputNum == 0 then
nKeyCode = 0x0b
else
nKeyCode = 0x01 + nInputNum
end
-- 数字に合わせたキーを入力する
PressAndReleaseKey( nKeyCode )
end
配列 nNumList から変数 nInputNum に数字を 1つ取り出します。
for i=1, #nNumList do
-- 数値の配列から1つ取り出す
nInputNum = nNumList[i]
-- 数字に合わせたキーコードを決定する
if nInputNum == 0 then
nKeyCode = 0x0b
else
nKeyCode = 0x01 + nInputNum
end
-- 数字に合わせたキーを入力する
PressAndReleaseKey( nKeyCode )
end
次に取り出した値に応じて入力するキーコードを決定しています。
0 ~ 9 までのキーコードは以下の通りです。
数字 | キーコード |
---|---|
0 | 0x0b |
1 | 0x02 |
2 | 0x03 |
3 | 0x04 |
4 | 0x05 |
5 | 0x06 |
6 | 0x07 |
7 | 0x08 |
8 | 0x09 |
9 | 0x0a |
1 から 9 までは連続したキーコードとなっていますので、0x01 に数字そのものを足してしまえばキーコードになります。
例えば、1 なら 0x01 + 1 で 0x02、5 なら 0x01 + 5 で 0x06 となります。
しかし、0 は 9 の次になっているため、上記の計算が使えません。
そのため、数字が 0 の時だけ処理を分けています。
for i=1, #nNumList do
-- 数値の配列から1つ取り出す
nInputNum = nNumList[i]
-- 数字に合わせたキーコードを決定する
if nInputNum == 0 then
nKeyCode = 0x0b
else
nKeyCode = 0x01 + nInputNum
end
-- 数字に合わせたキーを入力する
PressAndReleaseKey( nKeyCode )
end
そして、最後に決定したキーコードを使って、キーを入力させています。
まとめ
今回のサンプルのポイントは以下の通りです。
- 数値を 1桁ずつ分解して配列に格納する
- 分解した数字ごとにキーコードを計算して入力させる
Logicoolゲーミングマウスのマクロ(スクリプト)関連ページ一覧
皮脂や唾、手垢、汗などで表面は見えない雑菌だらけです。 衛生上も問題ですし、気持ち良く使うためにも、こまめに拭きとってキレイにしましょう。