1000円のテンキーをプログラマブルキーボードにするLuaMacrosをもっと便利に

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

前々回前回とご紹介してきた、1000円のテンキーを高機能なプログラマブルキーボードにするLuaMacrosをもっと便利に、ドライバつきの高価な専用品レベルにまで引き上げる設定を引き続きご紹介していきます。

前回までの記事

1000円のテンキーを高機能なプログラマブルキーボードにするLuaMacrosをもっと便利に使う方法

設定ファイルの切り替えを行う方法

LuaMacrosでは、設定ファイルを切り替える(実行するマクロを変える)ことができます。

これにより、指定のキーを押すと、違うキーバインドに切り替えることができます。

使用する関数はlmc_load()関数です。

使い方は至ってシンプルで、lmc_load(‘保存されたマクロ.lua’)と実行すると指定されたファイルを読み込み、自動でそのマクロを実行するようになります。並行して2つ動作したりはしないので、競合を気にする必要はなさそうです(その代わり、複雑なマクロを記載しておいて、モジュール化したりはできません……そこまで複雑なマクロを記載する能力もLuaMacros単体ではないのですが)。

ただ、注意点として、ファイルは基本的にフルパスで書くことになりますが、\記号は\とふたつ続けて書く必要があります。

どういうことかというと、筆者の環境では、

D:\Documents\myLuaMacros

というフォルダに、LuaMacrosにマクロファイルを保存していますが、例えばここにある、test.luaファイルを読み込んで実行したい、という場合には、

lmc_load(‘D:\Documents\myLuaMacros\test.lua’)

では動作しません。

lmc_load(‘D:\Documents\myLuaMacros\test.lua’)

このように記載する必要があります。プログラムを書いている方にはおなじみなので説明不要かと思いますが、\という記号が、大体のプログラムで特殊な意味を持つ文字であるため、「これは文字としての\記号ですよ」と指示してあげるために、\と続けて書いています。

これだけだと使い方のイメージがつきづらいかと思うので、実際の例となるマクロファイルを2つ用意しました。

test4.lua

lmc_device_set_name("MACROS", "3151ADB1")

lmc_set_handler("MACROS", function(btn, dir)
    if(dir == 1) then
        return
    end
        if(btn == 65) then
            lmc_load('D:\\Documents\\myLuaMacros\\test5.lua')
        end
        if(btn == 83) then
            lmc_send_keys("1", 50)
        end
        if(btn == 68) then
            lmc_send_keys("2", 50)
        end
end
)

test5.lua

lmc_device_set_name("MACROS", "3151ADB1")

lmc_set_handler("MACROS", function(btn, dir)
    if(dir == 1) then
        return
    end
        if(btn == 65) then
            lmc_load('D:\\Documents\\myLuaMacros\\test4.lua')
        end
        if(btn == 83) then
            lmc_send_keys("a", 50)
        end
        if(btn == 68) then
            lmc_send_keys("b", 50)
        end
end
)

マクロの解説

大事なのは、ボタン65(A)のキーアップのタイミングに実行されるlmc_loadの内容です。先に記載した通り、\が2つ続いていること(フォントの都合で\になっているかと思いますが、同じ記号です)に注意してください。

これは、それぞれのマクロでAキーが(押して)離されると、test4.luaではtest5.luaが読み込まれ、test5.luaではtest4.luaが読み込まれることになります。これにより、s, dキーを押したときの動作が、aキーを押すごとに入れ替わるということになります。

実際に2パターンのみで運用することはあまり多くないと思いますが、特定のキーを押したら順番にキーバインドが入れ替わる(1.lua→2.lua→3.lua→4.lua→1.lua…)といったキーバインドの方法や、特定キーで必ず特定のキーバインドを呼び出すといった方法が考えられます。

余談

ちなみに、スキャンコードがa,s,dなのは、通販で売っている、安いゲーム用のキーパッドを利用しているからです。テンキーでもいいのですが、ゲーム用キーパッドの方がキー数が多く、配置にこだわっているので手元を見ないで使いやすいという利点があります。逆に、持ち運ぶノートPCでは、薄型テンキーがお勧めです。