LuaMacrosで通常のUSBテンキーをプログラマブル化する。
USBテンキーを「Alt+Ctrl+数字」「強制終了」にします。
自動起動します。
(2022年2月25日更新。ファイル共有を修正。すぐにDLできるようにしました。)
(2022年4月20日更新)
- ■概要
- ■Luaのコード
- ■スクリプト例(1)
- ■今回のスクリプトの理由
- ■OS起動時に自動で起動する
- ■与太話
- ■LuaMacroの利点
- ■2022年4月現在のLuamacros使用方法例
- ■スクリプト例(2)改造版20200420版
■概要
USBテンキーのキーアサインを変更します。
この記事では最小限の解説のみです。
ツール導入方法等、各種情報はネット検索でお願いします。
Cubaseでの使用を最大の目的としているので、ちょっと変則的な実装です。
■Luaのコード
クソ丁寧なコメント付き。
1行目の80A13CEはデバイスIDです。
あなたが使用するデバイスのIDに置き換えてください。
デバイス番号の特定方法は、
lmc_print_devices()
を実行。
&■■■■■■■■&の部分が接続されているキーボードのデバイス番号です。
ここで表示されているのはPCに接続されているメインのキーボード。
USBテンキーを差し込み、認識するまでちょっと待ちます。
で、もう一度同じ
lmc_print_devices()
を実行。
メインキーボードと異なるキーボードIDが表示されました。
これが新しく接続したUSBキーボードのIDです。
このIDを使ってスクリプトを書いていきます。
非常に無様なチェック方法ですが、Luamacrosのデバイス確認方法はこれしかありません。
--------------------
USBを差し替える等をするとデバイス割当て場所は変わります。USBを差し替えた時はやりなおし。
--------------------
■スクリプト例(1)
有線USBテンキーBuffalo BSTK01での例です。画像右は対応するキーコードです。
別のモデルの場合にはソースを改造、各数値を変更して活用してください。
--------------------
USBテンキーの入力を「Alt+Ctrl+テンキー」に変更します。
BSは「Alt+F4」にします。
lmc_device_set_name("SubKeys","8A51F16")
lmc_set_handler("SubKeys",function(button,direction)
if (direction == 1) then return endif (button == 97) then lmc_send_keys("%^{Num1}",50) end
if (button == 98) then lmc_send_keys("%^{Num2}",50) end
if (button == 99) then lmc_send_keys("%^{Num3}",50) end
if (button == 100) then lmc_send_keys("%^{Num4}",50) end
if (button == 101) then lmc_send_keys("%^{Num5}",50) end
if (button == 102) then lmc_send_keys("%^{Num6}",50) end
if (button == 103) then lmc_send_keys("%^{Num7}",50) end
if (button == 104) then lmc_send_keys("%^{NUM8}",50) end
if (button == 105) then lmc_send_keys("%^{NUM9}",50) end
if (button == 96) then lmc_send_keys("%^{NUM0}",50) endif (button == 107) then lmc_send_keys("%^{NUMPLUS}",50) end
if (button == 109) then lmc_send_keys("%^{NUMMINUS}",50) end
if (button == 106) then lmc_send_keys("%^{NumMultiply}",50) end
if (button == 111) then lmc_send_keys("%^{NumDivide}",50)endif (button == 13) then lmc_send_keys("%^{Enter}",50)end
if (button == 110) then lmc_send_keys("%^{NumDecimal}",50)end
if (button == 8) then lmc_send_keys("%{F4}",50)end
if (button == 144) then lmc_send_keys("{F24}")endend
)
上の三角を押して実行。
他のアイコンは左から順に「読み込み、セーブ」。
・上のスクリプトの説明を少し
今回は入れていませんが、「+はShift」です。
"+%^{Num1}"
にすれば「Shift+Alt+Ctrl+テンキー1」になります。
Backspaceは「Alt+F4」にしてあります。
if (button == 8) then lmc_send_keys("%{F4}",50)end
%はAlt、{F4}はFと4になってしまわないための囲みです。
・変えたい人
ググってがんばれ
・上のスクリプト例のダウンロード
ダウンロード版は説明コメント付き。
https://drive.google.com/file/d/1r-yPJc6UEORgHXdKqEvgJsfXnc9ln_Le/view?usp=sharing
■今回のスクリプトの理由
さまざまな理由によりこのようなスクリプトが最適だと判断した。
・Cubaseの都合
Cubaseでの使用を目的としているので、「Alt+Ctrl+テンキー」という変則的な操作が多めです。
これらに専用のCubaseショートカットを割り当てることを主目的にしています。
--------------------
Cubase9.5が追加テンキーをF13~Fが19までしか認識しない。
Cubase9.5がテンキーの3モディファイアを受け付けない。
なのでAlt+CtrlL+テンキーにした。
もしかしたら後発のCubaseではF24もしくはそれ以降も認識するかもしれません。可能であればもっとシンプルにすべてF13以降の追加キーにすれば良いです。
・USBテンキーのモデル都合
NumLock(キーコード144、8)は定義できません。
定義できるものもあるかもしれません。
・テンキー「000」は連打キーである
USBテンキーによくある「000」はデバイス内部の回路で強制的に3回押しているだけで、「0」と同じです。連打しても問題の無いCubase機能をアサインしましょう。
■OS起動時に自動で起動する
(フォルダ名、ファイル名は適時置き換えで。)
- Luamacrosのショートカットを作る。
- プロパティを開く。
引数にスクリプト読み込みと実行(-r)をつける。(半角スペースを使う)
C:\キーボードカスタマイズ\USBテンキー変更\luamacros\LuaMacros.exe -m -r "Luamacros20210908_AltCtrl_TEN_BS_AltF4.lua" - ショートカットをstartupに入れる。(app~は隠しフォルダ)
C:\Users\kousuke\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
なお、Luamacrosでは最小化のオプションは使えない。(強引にやる方法は存在するかもしれません。)
・別の自動起動の方法
バッチファイルを作る方法もあります。
試しましたが普通にスタートアップの方がスマートなのでやめた。
■与太話
ハードオフで実験用に買ってきたジャンクのUSBテンキー(buffalo BSTK01)が何も問題なく動作したので、せっかくだから作った。
キーピッチが16mm。極薄なのでキーピッチ15mmのFKB1420キーボードと相性が良い。せっかくだから物理改造もほどこしつつ使ってみようと思う。
eki-docomokirai.hatenablog.com
■LuaMacroの利点
Autohotkeyではできない(できるかもしれない)特定デバイスのみキー変更ができる。
すでにAutohotkeyは常用しているので、可能であれば一本化したいが、Autohotkeyでのデバイス指定方法がわからん!
--------------------
Autohotkeyで通常のキーボードのPause|BreakキーをAlt+F4化するのは非常に便利。 (後日追記。不安定だったので使用を停止しました。)
eki-docomokirai.hatenablog.com
■2022年4月現在のLuamacros使用方法例
こうなっています。
複数キーの上に薄い板を貼り、実質「4キー」しか無い状態になっています。
気が向いたらあとで写真貼ります、かも。
こういう追加デバイスを使う際には、全ての入力キーを有効活用しようとするより、限定的な機能を最小限に割り当てるのがコツです。まじで。
・Windows OSへの適用
USBテンキーに「Alt+F4」を組み込んでいます。
複数のキーのいずれかを押すと「閉じ」になります。
・Cubaseへの適用例
モニター、リファレンスチェック関連の操作を組み込んでいます。
「モニター1」「モニター2」「切り替え」「リセット」の4種です。
通常は「切り替え」だけで運用します。
Cubaseを直接操作した後、なにかの拍子に「モニター切り替え」が正しく挙動しないので、「強制的にモニター1、2」「リセット」を組み込んでいます。
■スクリプト例(2)改造版20200420版
その後の改造例。
パクりたい人は上の例(1)をベースにした方が扱いやすいはずです。
lmc_device_set_name("SubKeys","8A51F16")
lmc_set_handler("SubKeys",function(button,direction)
if (direction == 1) then return end--NUMBERS
if (button == 97) then lmc_send_keys("%^{Num1}",50) end
if (button == 98) then lmc_send_keys("%^{Num2}",50) end
if (button == 99) then lmc_send_keys("%^{Num3}",50) end
if (button == 100) then lmc_send_keys("%^{Num4}",50) end
if (button == 101) then lmc_send_keys("%^{Num5}",50) end
if (button == 102) then lmc_send_keys("%^{Num6}",50) end
if (button == 103) then lmc_send_keys("%^{Num7}",50) end
if (button == 104) then lmc_send_keys("%^{NUM8}",50) end
if (button == 105) then lmc_send_keys("%^{NUM9}",50) end
if (button == 96) then lmc_send_keys("%^{NUM0}",50) end
--OTHER KEYS
--Enter(13) to ALT+F4
if (button == 13) then lmc_send_keys("%{F4}",50)end--BackSpace(8)to ALT+F4
if (button == 8) then lmc_send_keys("%{F4}",50)end
--DOT.(110)NumDecimal
if (button == 110) then lmc_send_keys("%^{NumDecimal}",50)end--NumLock(144)to F24
if (button == 144) then lmc_send_keys("{F24}")end--PLUS+(107)NUMPLUS
if (button == 107) then lmc_send_keys("%^{NUMPLUS}",50) end
--MINUS-(109)NUMMINUS
if (button == 109) then lmc_send_keys("%^{NUMMINUS}",50) end
--ASTERISK*(106)NUMMULTIPLY
if (button == 106) then lmc_send_keys("%^{NumMultiply}",50) end
--SLASH/(111)NUMDIVIDE
if (button == 111) then lmc_send_keys("%^{NumDivide}",50)end
--end
)
例(2)の配布URL
(あとでGoogleドライブのリンク入れる)
--------------------