luamacros・luamacrosコード解説



さて、今回の解説はluamacrosです。

https://www.hidmacros.eu/forum/viewtopic.php?t=241


はい、URLからみて分かる通り

このソフト一応hidmacrosの後継ソフトでして

(いやもう開発終わってるんですが)


hidmacrosではできなかった

キーの押しっぱなしや

コマンドの発行、など

色々便利になったソフトです。


…いや、便利にはなったんですが

そのかわり、長ったらしいコードを

書かなきゃならんハメになり

さらにhidmacrosの強みであった

「他の非リマップキーに干渉しない」という

利も手放してしまいました。


ちなみにmicrosoft IMEでは動かず

google日本語入力じゃないと

日本語入力ができませんし

できたとしてもブラウザや検索欄では

元キーと変換キーの

両方が出力されます。


要するに先程の説明を聞いた方なら

hidkeysequenseでいいんじゃね?

という話になるわけですが


あちらはあちらで無理やり互換性モード(windows7)

で動かしていますし、どっちもどっちという話ですね。

(やっぱり・nodokaが・ナンバーワンッ…!)


そもそも、僕が辿った経緯が

luamacros→hidmacros→hidkeysequense

→autohotkey→nodoka という順番なので

しょうがないっちゃしょうがないです。


まあ、たしかにhidmacrosと比べると

できることは多くなってはいるので


せっかく作ったんで供養がてら

公開しておこうかなー、なんて・・・・・・


さて、その前にまずは導入方法ですね。

こちらのサイトを御覧ください。(ぶん投げ)

https://nigauri.me/remapping-external-numeric-keypad/


あと、エラーコード3が出た場合は

C:直下に全部移動するといいらしいです。

https://hidmacros.eu/forum/viewtopic.php?t=4246


あとあと、sendkeyコードが使えます。

(ちなみにspaceキーは「 」です)

https://learn.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364423(v=msdn.10)?redirectedfrom=MSDN




それでは、各コマンドの解説ですね。


lmc_device_set_name("AAA", "000")

→デバイスID「000」を「AAA」として設定する。


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

→「AAA」の定義を決定し、押されたボタン

&そのボタンが押されているかどうかを検知する


if (button == 65 and direction == 1) then

 lmc_send_keys("y")

→もし、キーコード65(=a)が「押されている」とき

キー「y」を入力する。

(direction=1を条件に入れておかないと入力が重複する)


if (button ==134 and direction == 1) then

lmc_send_input(16, 0, 0)

end

→もし、キーコード134(=f23)が「押されている」とき

キー「shift」を押し続ける。

(16=shiftのキーコード、押す=0)


if (button ==134 and direction == 0) then

lmc_send_input(16, 0, 2)

end

→もし、キーコード134(=f23)が「離された」とき

キー「shift」を離す。(16=shiftのキーコード、離す=2)





 ※書き始めはif,以降の段落はifelseを使用する※

※条件式の最後はendで締めくくる※




if (direction == 1) then return end

→ボタンを押したとき(押しっぱなし)を検知しない(return)

・・・つまり、ボタンを離したときにしか作動しない




とまあ、こんな感じです。

他にもbutton == 65 という記述は

button == string.byte('A') と

書き換えることもできます。

(使ったことあまりないので

誤作動や遅延あるかも)


キーコード調べたい方は

こちらのサイトをどうぞ。

https://web-designer.cman.jp/javascript_ref/keyboard/keycode/


トグルの組み方は

こちらを参照ください。

https://www.hidmacros.eu/forum/viewtopic.php?t=4425



それではコード例、いってみましょう。


(なお、事前にchangekeyで

tab=f21(キーコード132)

caps=f22(キーコード133)

左shift=f23(キーコード134)

に変換してあります)


以下コード

ーーーーーーーーーーーーーーーーーーーーー


lmc_device_set_name("righthand", "36A92E95")


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

if (button == 132 and direction == 1) then

lmc_send_keys("y")

elseif (button ==48 and direction == 1) then

lmc_send_keys("6")

elseif (button ==49 and direction == 1) then

lmc_send_keys("7")

elseif (button ==50 and direction == 1) then

lmc_send_keys("8")

elseif (button ==51 and direction == 1) then

lmc_send_keys("9")

elseif (button ==52 and direction == 1) then

lmc_send_keys("0")

elseif (button ==81 and direction == 1) then

lmc_send_keys("u")

elseif (button == 87 and direction == 1) then

lmc_send_keys("i")

elseif (button ==69 and direction == 1) then

lmc_send_keys("o")

elseif (button ==133 and direction == 1) then

lmc_send_keys("h")

elseif (button ==65 and direction == 1) then

lmc_send_keys("j")

elseif (button ==83 and direction == 1) then

lmc_send_keys("k")

elseif (button ==68 and direction == 1) then

lmc_send_keys("l")

elseif (button ==134 and direction == 1)then

lmc_send_keys("n")

elseif (button ==90 and direction == 1) then

lmc_send_keys("m")

elseif (button ==82 and direction == 1) then

lmc_send_keys("p")

end

end

)


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

if (direction == 1) then return end

if (button ==88) then

lmc_send_keys(",")

elseif (button ==67) then

lmc_send_keys(".")

elseif (button ==86) then

lmc_send_keys("?")

elseif (button ==70) then

lmc_send_keys("!")

elseif (button ==84) then

lmc_send_keys("[")

elseif (button ==71) then

lmc_send_keys("]")

elseif (button ==17) then

lmc_send_keys("{ENTER}")

elseif (button ==54) then

lmc_send_keys("{F16}")

end


end)


lmc_device_set_name("lefthand", "1BC93A1E")


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

if (button ==81 and direction == 1) then

lmc_send_keys("-")

elseif (button ==48 and direction == 1) then

lmc_send_keys("1")

elseif (button ==49 and direction == 1) then

lmc_send_keys("2")

elseif (button ==50 and direction == 1) then

lmc_send_keys("3")

elseif (button ==51 and direction == 1) then

lmc_send_keys("4")

elseif (button ==52 and direction == 1) then

lmc_send_keys("5")

elseif (button ==87 and direction == 1) then

lmc_send_keys("w")

elseif (button == 69 and direction == 1) then

lmc_send_keys("e")

elseif (button ==84 and direction == 1) then

lmc_send_keys("t")

elseif (button ==65 and direction == 1) then

lmc_send_keys("a")

elseif (button ==83 and direction == 1) then

lmc_send_keys("s")

elseif (button ==68 and direction == 1) then

lmc_send_keys("d")

elseif (button ==70 and direction == 1) then

lmc_send_keys("f")

elseif (button ==71 and direction == 1) then

lmc_send_keys("g")

elseif (button ==90 and direction == 1) then

lmc_send_keys("z")

elseif (button ==82 and direction == 1) then

lmc_send_keys("r")

elseif (button ==88 and direction == 1) then

lmc_send_keys("x")

elseif (button ==67 and direction == 1) then

lmc_send_keys("c")

elseif (button ==86 and direction == 1) then

lmc_send_keys("v")

elseif (button ==66 and direction == 1) then

lmc_send_keys("b")

end

end)


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

if (button ==134 and direction == 1) then

lmc_send_input(16, 0, 0)

end

if (button ==134 and direction == 0) then

lmc_send_input(16, 0, 2)

end

if (button ==133 and direction == 1) then

lmc_send_input(131, 0, 0)

end

if (button ==133 and direction == 0) then

lmc_send_input(131, 0, 2)

end

if (direction == 0) then return end

if (button ==132) then

lmc_send_keys("{BACKSPACE}",150)

end

if (button ==32) then

lmc_send_keys(" ",150)

end

end)

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る