見出し画像

LuaMacrosを用いた外付けテンキー便利技

1.LuaMacrosとは

ネットの先人達からもっと詳しくて十分な情報が得られるとは思いますが、LuaMacrosとは外付けのテンキーやフルキーボードの入力を別の文字やコードに置き換えてくれる非常に便利なフリーウェアです。作者はPetr Medek(me2d13)というチェコのプラハにお住まいの方で、GitHub上でソースも公開されてます。Readmeは、最初に”Don't use this software. ”と書いてしまうお茶目な人のようです。もともとはフライトシミュレータ「X-Plane」用に作ったとあるので、同様にフライトシミュレータ好きの私にもぴったしだったりします。Windows用です。

2.用意するもの

Windows10が動いてるPC
メインのキーボード以外のテンキーまたはフルキーボード(有線無線問わず)

3.LuaMacrosのダウンロード

下記のリンクからLuaMacrosをダウンロードします。
リンク先の下のほうにある「Binary download」の「luamacros.zip」を保存して解凍してください。
https://github.com/me2d13/luamacros

4.マクロスクリプトの作成(準備編)

上記で解凍してできたフォルダにある「LuaMacros.exe」を実行します。
外付けキーボードを接続した状態でLuaMacrosの上の窓(スクリプトを記述するところ)に、キーボードの認識コードを取得するために下記をコピペしてメニューバーにある三角ボタンを押して実行します。
lmc_print_devices()

画像1

↑が実行例ですが、下窓の情報欄に4台分のキーボードが表示されました。
(実際にはメインのものとエレコムの無線テンキーとBluetooth接続のテンキーなしキーボードの3台しか繋がってないのですが。。。)
で、対象とするキーボードがどの行か分かるまで差したり外したりしてこれを実行してみて下さい。

で、今後スクリプトを書くために必要となる認識コードですが、対象とするテンキー等の「&0&0000#」の左側の文字列で「&」から右側の7文字となります。上の例では「573E1D」となります。
対象とするキーボードの認識コードが分かるまで差したり外したりを繰り返し、認識コードを付箋かテキストエディタ等にコピペしておいて下さい。

5.マクロスクリプトの作成(テスト編)

きちんとキーボードが認識されるているかどうかを喋らせることでテストしてみます。

lmc_device_set_name("SubKeys","573E1D(例です)")
lmc_set_handler("SubKeys",function(button,direction)
   if (direction == 1) then return end
   if (button == 90) then
      lmc_say('Apple Wireless Keyboard')
   end
end
)

1行目で対象とするキーボードにSubKeyという名前を付けてます。このページで紹介している範囲ではマクロスクリプト内で1回使うだけなので効率が悪いですが仕様なのでこのように記述して下さい。
2行からがキーへの割り付けです。
3行目はリピート防止のおまじない。キーを押し続けても1回だけしか反応させたくない場合に記述します。
4~6行目がキーの割り当てで、対象の「z」をキーコード90で指定し、'Apple Wireless Keyboard'と喋るようにしています。
なお、キーコードの表示はhttps://keycode.info/が便利です。LuaMacro実行中は反応しませんので必ずLuaMacroを終了してからアクセスして下さい。
と、ま、ここまで順調に進めばあとは自由に設定することができるようになると思います。

5.マクロスクリプトの作成(本編)

では、フライトシミュレータ向きの設定も良かったのかも知れませんが、ここではRhinocerosやAutoCADでよく使うコマンドについてテンキーでの設定例を示します。例えば1を押すとコピーモードになるとかです。

lmc_device_set_name("SubKeys","******(コード)")
lmc_set_handler("SubKeys",function(button,direction)
   if (direction == 1) then return end
   -- 1 to copy
   if (button == 97) then
      lmc_send_keys("copy~",50)
      lmc_say('copy')
   end
   -- 2 to Move
   if (button == 98) then
      lmc_send_keys("move~")
      lmc_say('move')
   end
   -- 3 to scratch
   if (button == 99) then
      lmc_send_keys("scratch~")
      lmc_say('scratch')
   end
   -- 4 to Line
   if (button == 100) then
      lmc_send_keys("line~")
      lmc_say('line')
   end
   -- 0 to {ESC}
   if (button == 96) then
      lmc_send_keys("{ESC}")
      lmc_say('escape')
   end
end
)

上記で、例えば"copy~"や"{ESC}"のように「~」や「{}」が含まれてますが、これは特殊な入力のことで、前者はエンター、後者は特殊キーを各々定義しています。これらは下記リンク先をご参照下さい。コントロールやシフトについては左右別々に定義することも可能です。
https://github.com/me2d13/luamacros/wiki/List-of-Keys

また、上記以外のスクリプティングの詳細はこちらをどうぞ。
https://github.com/me2d13/luamacros/wiki/Basic-Functions

キー入力のほかにアプリを起動したりすることもできるようです。
なお、保存したスクリプトはテキストエディタでも編集可能です。

注意事項

設定したキーはLuaMacroの実行中のみ有効です。LuaMacroを終了すると元に戻ります。複数のアプリで使用するには、使用するアプリ毎に別々にマクロを用意して都度LuaMacroを実行すれば良いでしょう。
ちなみに筆者の場合は、フライトシミュレータで使用する際は飛行機ごとのマクロを用意してます(笑)。

MS-IME、ATOK、Google日本語等の漢字変換がオンになっているとすべてのキー操作が入力に反映されてしまうようですので、ローマ字直接入力モードにしておく必要があります

お礼
見出しのキーボードの画像は下記から利用させていただきました。
http://www.sharots.com/sozai/keyboard.html

この記事が気に入ったらサポートをしてみませんか?