マウスマクロ

Logicoolマウスのマクロサンプル - 2桁以上の数字を入力する

投稿日:

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 までのキーコードは以下の通りです。

数字キーコード
00x0b
10x02
20x03
30x04
40x05
50x06
60x07
70x08
80x09
90x0a

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ゲーミングマウスのマクロ(スクリプト)関連ページ一覧

ディスプレイやキーボード・マウス・スマホ 汚れていませんか?

皮脂や唾、手垢、汗などで表面は見えない雑菌だらけです。 衛生上も問題ですし、気持ち良く使うためにも、こまめに拭きとってキレイにしましょう。

エレコム クリーナー ウェットティッシュ 液晶用

  • 拭き跡が残りにくい
  • 帯電防止効果で拭いた後にホコリがつきにくい
  • ディスプレイの表面加工を傷めないノンアルコールタイプ

液晶用と書いてありますが、キーボードやマウス、タブレット、スマホなどにも使えます。
大容量なので 1つ置いておくだけでも、気付いた時にすぐ掃除ができて便利です。

おすすめのゲーミングマウス

Logicool ロジクール ゲーミング マウス G402

  • 500IPSを超えるトラッキング速度
  • 8個のプログラム可能なボタン
  • ボタンによるDPIの素早い切り替え
  • 1msのレポートレート
  • 高速なクリック(連打)を実現

Logicool ロジクール ゲーミング マウス G502 HERO

  • 400IPSを超えるトラッキング速度
  • 11個のプログラム可能なボタン
  • 100~16,000の全DPIでゼロスムージング、ゼロフィルタリング、ゼロアクセラレーションを達成
  • 1msのレポートレート
  • マウスの重さを調整可能

Logicool G ゲーミングマウス ワイヤレス G604

  • 400IPSを超えるトラッキング速度
  • 15個のプログラム可能なボタン
  • 100~16,000の全DPIでゼロスムージング、ゼロフィルタリング、ゼロアクセラレーションを達成
  • 1msのレポートレート
  • ワイヤレス

Logicool ロジクール ゲーミング マウス G600t

  • MMO に最適な 20個のプログラム可能なボタン
  • 親指だけで 12個のボタンを瞬時に押せるサムパネル
  • 1msのレポートレート


スポンサーリンク

毎日の飲料は箱買いで年間数千円もお得に (Amazon)




おすすめ記事

1
Logicool(ロジクール)のゲーミングマウスではマクロを作って自動的な操作を実現することができます。 ボタン 1 つ押すだけで複雑な操作が自動で行えるようになり、定型的な操作を効率良く楽に行えるよ ...
2
バウヒュッテ(Bauhutte)のゲーミングチェア : RS-950RR の使用感などをレポートさせていただきたいと思います。一般的なオフィスチェアよりも断然座り心地が良く、私には合っていました。オス ...
3
キーボード・マウスでの操作に慣れているのに、PS4 や Xbox のコントローラで FPS/TPSゲームをプレイするとうまく操作できず、歯がゆい思いをされていないでしょうか。ゲームソフト側が対応してい ...
4
「なろう系」作品の中で、定期的に読み返したくなるオススメの作品をご紹介させていただきます。 ありがちな俺TUEEEチート系の作品はなく、これだけは読んでほしいという面白い作品を厳選しています。 「なろ ...

-マウスマクロ

Copyright© ArekoReport , 2023 All Rights Reserved.