前々回、前回とご紹介してきた、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では、薄型テンキーがお勧めです。
こういうものです。筆者が実際に使っているものは、既に取り扱いがありませんでした……。しかし、簡単に他社製のキーパッドに乗り換えられるのが、LuaMacrosの利点でもあります。メーカーのドライバで設定するタイプは、他メーカーのものにコピーができませんからね。
ウィンドウのタイトルを取得する方法
上の、設定ファイルの切り替えとセットで使うにはちょっと難しい、ウィンドウタイトルを取得する方法があります。
lmc_get_window_title()という関数で、実行するとアクティブなウィンドウのタイトルが取得できます。ただ、ウィンドウタイトルなので、正規表現を用いたりしないとならず、ブラウザのようにタイトルが全くかわってしまうようなものだと上手く動作しません。
しかも、LuaMacrosは基本的にキー操作時にのみ動作するような仕組みなので、ウィンドウが切り替わったらシームレスにマクロを切り替えたい場合は、if構造を入れ子にして判定しなければ期待通りの動作をしてくれません。
そのため、筆者はLuaMacros単体でこれを使うことはお勧めしません。
マクロを実行と同時にLuaMacrosを最小化する方法
前回の記事では、Windows起動と同時にLuaMacrosを実行し、さらに最初のマクロを読み込ませておく方法を紹介しました。
しかし、それだけだとLuaMacrosのウィンドウが表示されていていかにも邪魔でした。これを起動と同時に最小化するには、以下の2行をマクロファイルの先頭に記述するだけです。
lmc.minimizeToTray = true
lmc_minimize()
意味としては、lmc_minimize()関数だけで最小化されます。されるのですが、
こんな感じの、「小さくされたウィンドウ」が表示されたままになります。もちろん、タスクバーにも残ってしまっていて、あんまり嬉しくないです。間違って閉じてしまったりしますし。
そこで、lmc.minimizeToTray = trueもあわせて記載することで、タスクバーからも表示を消し、タスクトレイにアイコンとして表示されるようになります。
表示されるアイコンはこんな感じの小さなキーボード風で、今までのアイコンとちょっと違う感じなので、見失わないようにしましょう。このアイコンからできる操作は、終了したり表示を戻したりといった程度で、特別な操作はできません。
終わりに
LuaMacrosはいかにもベータ版といった、素っ気のないアプリケーションでとっつきづらいですが、機能が絞られている分、慣れてくると簡単に設定ファイルを作成できるので(元あるものをコピー&ペーストで改造など)、いろいろなアプリケーションを楽に使いたい、複雑なショートカットキーを覚えずに使いたい、といった用途に便利です。
もちろん、FunctionキーがないノートパソコンでFunctionキーを使いたいといったシンプルな要望にも応えられます。
この後も、まだ解説していない機能や応用編などをご紹介していきます。