1000円のテンキーを高機能なプログラマブルキーボードにする方法 2【RPAの補助にも】

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

前回はLuaMacrosの基本的な使い方をご紹介しました。

ただ前回の方法では、起動するたびにLuaMacrosで使いたいキーボードを設定する必要があります。ただ、実際の運用ではいちいち、どのキーボードをLuaMacrosで使うか指定するのではなく、起動したらそのまま使い始めたいですよね。

ということで、今回はLuaMacrosの設定ファイルに、使用するキーボードを指定する方法、起動と同時にマクロを実行する方法、キー指定を少しだけ楽にする方法をご紹介します。

LuaMacrosのダウンロード

https://github.com/me2d13/luamacros

設定ファイルに使用するキーボードを記載する方法

下準備

LuaMacrosの設定ファイルに、使用するキーボードを指定するには、まず最初に、使いたいキーボードを取り外しておく必要があります。

次に、LuaMacrosのマクロ入力欄に

lmc_print_devices()

と、1行だけ入力して実行ボタンをクリックします。すると、ずらずらと接続されているデバイスが以下のように表示されます。

筆者はことの他、つながっているデバイス類が多いのでこんなことになりますが、普通は表示される数はもっと少ないです。

このリストをメモするか、筆者のようにスクリーンショットを撮るなどして保存しておきます。そうしたら、LuaMacros用としたいキーボードやテンキーを接続します。初回接続の場合にはセットアップ後に、もう一度、実行ボタンをクリックします。

すると、新しいデバイスが1つ表示されます。が、4つ増えていますね。これは、ゲーム向けのデバイス(ただし、マクロなどのツールはついていないもの)だからです。少し面倒ですが、その分キー数や配置などに工夫が凝らされているので一長一短ですね。

今回は、

<unassigned> : \?\HID#VID_0C45&PID_760A&MI_01&COL06#7&D7A6FEF&0&0005#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [18355659] : keyboard
<unassigned> : \?\HID#VID_0C45&PID_760A&MI_01&COL05#7&D7A6FEF&0&0004#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [43455963] : keyboard
<unassigned> : \?\HID#VID_0C45&PID_760A&MI_01&COL04#7&D7A6FEF&0&0003#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [208282277] : keyboard
<unassigned> : \?\HID#VID_0C45&PID_760A&MI_00#7&3151ADB1&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [126359831] : keyboard

の4つが新しく表示されたものですね。

さらに、1行の中に、&数字とローマ字&0&0000#{数字とローマ字、ハイフン記号}という部分があることが分かります{}からたどると探しやすいですね。後は、上野黎では0000だけではなく、0003や0004, 0005がありますが、基本的には0000だけです。

この中で、さらに&と&0&に挟まれた数字とローマ字の部分を控えておきます。今回でいえば、以下の太字の部分ですね。

<unassigned> : \?\HID#VID_0C45&PID_760A&MI_00#7&3151ADB1&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [126359831] : keyboard

これはLuaMacrosの中で、キーボードを特定するためのID, マイナンバーみたいなものです。これを利用して、マクロをどのキーボードで実行するか決定します。

もっと簡単にキーボードのIDを調べられないの?

そう思って筆者も調べてみたのですが、今の所、キーを押したキーボードのIDを取得する、などの機能は実装されていないようです。

もしかしたら、他の開発系ツールではあるのかもしれません。情報ありましたら教えていただけると助かります。

(ただ、マクロツールでもキーボードの区別をしてくれるものがほとんどないので、難しそうです)

マクロファイルにIDを指定して記載する

lmc_device_set_name("MACROS", "3151ADB1")
lmc_set_handler("MACROS", function(btn, dir)
if(dir == 1) then
return
end
if(btn == 96) then
lmc_send_keys("{TAB}")
end
end
)

前回と異なるところは、1行目のlmc_assign_keyboardがlmc_device_set_nameになり、第2引数として先ほどのデバイスIDを入力している点です(サンプルでは筆者のキーボードを入れていますが、皆さんは自分で調べた値を入れて下さいね)。これで、キーボード指定のダイアログなしでマクロが起動するようになります。

起動してマクロを実行するだけで動作するようになるので便利ですが、その一方で仕事の同僚に配布したいとなった場合は、同じ会社のキーボードを利用しているとしても、IDを入力しなおさないと動作しないので、その点には注意が必要です。

LuaMacrosを起動すると同時に、マクロを実行する方法

LuaMacrosの起動とマクロの開始を同時に行うには、ショートカットかバッチファイルを使う方法があります。

ここでは、お手軽なショートカットを利用する方法をご紹介します。

ショートカットを作成して起動とマクロ実行を同時に行う

1.ショートカットを作成する

LuaMacros.exeを右クリックし、ショートカットの作成をクリックしてショートカットを作成します。

2.ショーカットの編集ダイアログを表示する

ショートカットのアイコンを右クリックし、プロパティをクリックして編集ダイアログを表示します。

3.リンク先に引数を追加する

「リンク先」にLuaMacrosのパス(PC上の場所)が入力されているので、ここに以下のように起動引数を追加します。

“LuaMacros.exeへのパス” -r “実行したいマクロのパス”

例えば、筆者のようにD:\Documents\myLuaMacros フォルダにマクロを格納している場合は、上図のようになります。

パスが間違っていない場合(-rも忘れないように)、LuaMacrosが起動し、マクロも実行されます。ただ、ウィンドウが表示されてしまうので、それが嫌な場合はバッチファイルを使った方がいいかもしれません。

4.Windows起動時にマクロを実行する

Windowsキー + Rで、「ファイル名を指定して実行」ダイアログを表示します。

ここに、shell:startup と入力して、Enter(またはOKをクリック)します。スタートアップ用のフォルダが表示されるので、そこに先ほど作成したショートカットを移動、またはコピーすれば、Windows起動と同時にLuaMacrosが起動し、さらにマクロが実行されるのでわざわざ起動する手間がなくなります。

キー指定を少しだけ楽にする方法

LuaMacrosは、マクロの記述にLua言語を利用しています。

そこで、Luaの標準関数を用いて、スキャンコードの指定を楽にします。

string.byte

組み込みのstring.byte関数は、第一引数の文字を、内部文字コードの数値に変換して返します。

http://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/library.html#string.byte

1byte(半角)の0~9, A~Z(大文字)はそれぞれのキーボードのスキャンコードと一致します。

そのため、

if(btn == 65) then

という記述は、

if(btn == string.byte('A')) then

という記述に直すことができます。ただし、キーボードのタイプ数が増えることや、対応できるキー数に限りがあることに注意が必要です。

また、ほぼ無視できるとは思いますが、直接数字を記載するのに対して、数値に変換する処理が入るのでマクロの実行速度に悪影響がでることが考えられます。複雑なマクロを作りたいときは、一応気をつけておきたいところです。

終わりに

前回から少し間が空いてしまいましたが、これでプログラマブルなキーボードは実現できるようになりました。

ただ、まだまだ高価な製品と比較すると不便さが目立つので、今後もLuaMacrosの記事は更新していく予定です。

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

最新の記事