2021年9月7日火曜日

LuaMacrosでバッチを実行する(プログラマブルキーボードもどき)

外付けのテンキーが押し入れから出てきたので、LuaMacrosを使って

ボタンひと押しでバッチを実行できるように遊んでみた。

エセプログラマブルキーボードですね。

で、設定で思いの外ハマったのでメモを残しておきます。

※例によってこの記事を真似して何が起ころうと、私は責任を取りません。


解説は省いて、LuaMacrosに書いたコードを置いておきます。

----------------------------------------------------------------------------------------

-- 最小化時にタスクトレイに隠す

lmc.minimizeToTray = true


-- 最小化

lmc_minimize()


-- キーボードに名前を割り当て

lmc_device_set_name("extnumpad", "11X1111X")


-- キー割り当て

lmc_set_handler("extnumpad", function(button, direction)

    if (direction == 1) then return end

    -- 0

    if (button == 96)  then

        lmc_send_keys("#(c)") 

    -- 1

    elseif (button == 97)  then

        lmc_spawn("C:\\test\\pdf.bat")

    -- 2

    elseif (button == 98)  then

        lmc_spawn("C:\\test\\jpghiraku.bat")

    -- 3

    elseif (button == 99)  then

        lmc_send_keys("#(d)")

    -- 4

    elseif (button == 100)  then

        lmc_spawn("C:\\test\\gamenlock.bat")

    end

end)

----------------------------------------------------------------------------------------


ちなみになんですが、私は以下がわからなくてハマりました。

・バッチや実行ファイルを指定するときは「lmc_spawn」を使う

・lmc_spawnの引数で「\」を使うときは「\\」でエスケープ

・「-- 」始まりでコメントアウト


その他ハマった点。

・Windows+Lの画面ロックがなぜかできない。

→試しにsendkeysしようとしたのがこれでハマった。

 コマンドを書いたバッチをキックする方法で回避。

 どの道自室のパソコンなので使うことはないけど…。


・ショートカットに割り当てたショートカットキーをキックするとなんか遅い

→Windowsの仕様らしい。

 Windows10のショートカットキーが重い件(Superfetch)

 SuperfetchとかSysMainを落としても変わらなかったので

 ファイルを開くバッチをキックする方法に逃げました。


・「00」を押すと「0」を2回押したことになる

→テンキーはハード的にそうなっているそうで、調べたけど対処法は不明。

 諦めました。一番下段の「0」「00」「・」の並びのキーを使いたかったけど

 まぁいいか…。。


・IMEオン(全角入力)のときにテンキーを押すと、ショートカットは効くが

 数字が入力されてしまう

→Google 日本語入力のプロパティで「テンキーからの入力」を

 「直接入力」にすることで回避。IMEだとできないかも? 


あとは以下のような感じのショートカットを作ってスタートアップに

入れて自動起動。いい感じです。

リンク先を
「C:\luamacros\LuaMacros.exe -r "C:\luamacros\tenkey.lua"」
にしてます。

今思うと、lmc_spawnでバッチじゃなくてショートカットを実行して
やったほうが簡素でいいのかな?

0 件のコメント:

コメントを投稿