【アプリ】HidKeySequenceの代替 (5) -LuaMacrosで設定してみる-

起動したものの、何をしたら良いのかわからない画面が表示されるLuaMacros。

スクリプトを書く(というか最初は先人のスクリプトをコピペ)ということはわかった。

 

【アプリ】HidKeySequenceの代替 (4) -LuaMacros-

 

 

 

大まかな流れは以下のような感じだろう。

  1. 左手キーボードの認識コードを取得
  2. 認識コードに名称を設定
  3. 押されるキーのキーコードで分岐&それぞれの処理内容を設定
  4. 動く!

なんだ簡単じゃないか。

 

 

1. 設定するキーボードの識別コードを取得

 

スクリプトを実行してキーボードの一覧を出す。

 

入力エリアに

lmc_print_devices()

と入力して実行ボタンを押す。

 

<unassigned> : \\?\MICROSOFT KEYBOARD RID\0 [32708145] : keyboard
<unassigned> : \\?\HID#VID_046D&PID_C232#2&2269EA1C&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [9768055] : keyboard
<unassigned> : \\?\HID#VID_056E&PID_1059&MI_00#B&21AFEAEF&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65607] : keyboard
<unassigned> : \\?\HID#VID_046D&PID_C52B&MI_00#B&2F2CFD67&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65605] : keyboard
<unassigned> : \\?\HID#VID_248A&PID_8367&MI_01#B&4062FE4&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65603] : keyboard
Total number of devices: 5

ズラッと結果が出てくる。

 

HID macrosの時にリストアップされた中で キーボードとして認識されたものに絞られている。

VID_056E&PID_1059が該当のキーボードであることがわかっているので、その行を見る。

 

<unassigned> : \\?\HID#VID_056E&PID_1059&MI_00#B&21AFEAEF&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65607] : keyboard

デバイスごとに出力される内容が微妙に違う。

俺のテンキーはMI_00#Bってのがあるけど、他のデバイスには無かったりするし・・・。

場所的には&0&0000の前っぽい。

その行の21AFEAEFが識別コードになる。

 

 

 

どうでも良いことだけど、このアプリの入力エリアは、

あくまでもエリア内の内容を実行するためだけのためにあるようだ。

つまりスクリプトのエディタではない。

改行しているのにカーソルキーでどんどん右に行けてしまうし

行頭で左キーを押しても前行の最後に移動するなんてこともしない。

基本的なショートカットキーは効くけど、右クリックをしても何も出ないし

メニューバーなんかも無いので、そういうのに頼っている人は門前払い。

 

不親切この上ないw

 

なので、スクリプトを作るときは、最低でもテキストエディタ(Notepad++なんか良いかも)、

ガッツリ取り組む人はVS Codeを使った方が良いと思う。

 

さぁ楽しくなってきたぞ(・∀・)

 

 

 

 

2. 認識コードに名称を設定

 

lmc_device_set_name("LHKey","21AFEAEF")

 

これだけw

 

前述の認識コードに”LHKey”(LeftHandKey)という名前を付けている。

以降この名称のデバイスに対してガシガシ処理を作り込んでいくことになる。

 

 

3. 押されるキーのキーコードで分岐&それぞれの処理内容を設定

 

lmc_set_handler("LHKey",function(button,direction)
  if (direction == 1) then return end
 if (button == 103) then lmc_send_keys("^{F24}",50) return end
end
)
 
lmc_set_handler("LHKey",function(button,direction)

buttonで押された(離された)キーが取得できる。

directionは キー押下:1、キー離し:0。

 

if (direction == 1) then return end

としているので、キー押下時は無視されて、キーを離したときに発動する。

 

if (button == 103) then lmc_send_keys("^{F24}",50) return end

103はHID macrosの時にも使ったテンキーの7。

その場合にCtrl+F24をSendKeyしている。

 

 

4. 動く!

 

動いた。

 

でもLuaMacrosもF13+1とかは使えなかった。

そもそもそんな押し方を考える方が悪いw

リファレンス読んでると、ほとんどHID macrosのままじゃないか。

+(abc)と指定しても Abc になるし。

 

あかんやん('A`)

 

 

これだったらHID macros使う方が楽だろう。

 

 

使い方

 

これも自動で起動なんてしないので、

LuaMacrosの実行ファイルのショートカットを作って、引数でスクリプトを指定する必要がある。

~LuaMacros.exe -r "d:\macros\hoge.lua"

みたいに。

で、Windowsのスタートアップに入れる。

 

この場合実行ファイルを叩いているだけなので、ウィンドウが表示されてしまう。

それを防ぐためにマクロファイルの最初に

lmc.minimizeToTray = true
lmc_minimize()

を記入しておけば良さそう。

 

 

 

HID macrosと比較して何かアドバンテージがあるのかどうかは

もうちょっと深入りしていかないとわからないなぁ。

 

To Be Continued

 

 

カテゴリー: PC, ソフトウェア, 技術的 タグ: , ,  [パーマリンク]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です