インスタントマクロ (Instant Macro)
インスタントマクロは、キーボードからの入力文字列や制御キー操作をその場でリアルタイムに記録し、登録した拡張キーからワンキーで高速再生する機能です。...
インスタントマクロは、キーボードからの入力文字列や制御キー操作をその場でリアルタイムに記録し、登録した拡張キーからワンキーで高速再生する機能です。
基本的な操作方法
マクロの記録と再生は、キー拡張マッピングに割り当てた以下の2つの特殊コマンド(デフォルトマッピングでは L1の . が再生、SSの . が記録トグル)を通じて行います。
{Macro}(マクロ記録の開始 / 停止トグル):- マクロが停止している状態(
idle)で実行すると、以前の記録メモリを消去して新しく記録を開始します。 - 記録中は、キャレットインジケーターの横にマクロ記録中であることを示す文字(デフォルト
"M"、カラー"FF00FF")が合成表示されます。 - 記録中にもう一度
{Macro}を実行すると、それまでの入力を保存して記録を完了(コミット)します。インジケーター表示は通常に戻ります。
- マクロが停止している状態(
{ExecuteMacro}(マクロの再生):- 記録されたマクロをその場で一括して再生実行します。
正確な記録と誤動作防止技術
打鍵タイミングのズレや修飾キーの競合を防ぐため、以下のような高度な制御ロジックを搭載しています。
1. OnChar フックベースの文字記録
物理的な打鍵キー(スキャンコード等)をそのまま記録するのではなく、Windows 上で実際に出力された「文字」を OnChar APIフックで正確にバッファします。これにより、IMEのオン/オフや修飾キーの適用状態に左右されず、見かけ通りのテキストを記録できます。
2. チャタリング・重複入力の防止
チャタリングや同一キーの二重フックによる重複記録をガードするため、150ms以内の同一キーの連続入力を自動的に無視します。
3. 再生時のキー送信保護と Text モード
1文字のテキストデータを送信する際、SendEvent("{Text}" key) を使用して送信します。これにより、再生中のIME状態や修飾キーのすり抜けによる誤入力を防止します。
4. マクロ再生中の競合ブロック
- 物理 Space キーの退避: 再生中、物理的に Space キー(Space Shift)が押し下げられている場合は、競合を避けるために一時的に論理的な
Space Upを送信して安全に文字を流し込み、再生が完了した瞬間に自動的に元の Space Down 状態へ復帰させます。 - フックの一時停止: 再生処理の実行中は、修飾キーロック用のフック(
LockInputHook)などを一時的に停止(Stop/Start)し、マクロ自身の送信キーがフックされて誤作動を起こすのを防ぎます。 - 二重出力ガード: 送信したマクロ内のキーが再度フックされて「マクロの中にマクロが記録される」ループを防ぐため、送信中ガードフラグ(
IsSendingKey)と、キー送信間クールダウン(LastSendTime)による非同期遅延ガードを適用しています。