多数のホットキーを含むスクリプトを作成しました(一般的な構造は次のとおりです)。押すと、スクリプトに含まれるすべてのホットキーとそれに対応する説明のリストが適切な形式のテーブルに表示される別のホットキーを作成したいと思います。
AutoHotkeyの出力はメッセージボックスに制限されているため、フォーマットと表示は希薄ですが、可能です。さらに問題なのは、ホットキーと対応する説明を取得することです。
ホットキーはすべて、異なる引数を使用して同じ関数を呼び出します。関数に変数を追加して、値に応じて、関数が通常のホットキーによってトリガーされたときに通常の機能を実行するか、特別な表示ホットキーからトリガーされたときに文字列などを作成することを検討しました。
スクリプトのホットキーにプログラムでアクセスする方法がまったくわかりません。A_
ドキュメントを確認しましたが、この目的に使用できる変数はないようです。また、Hotkey
コマンドは適切ではありません(ホットキーが存在するかどうかをテストするために使用できますが、無数の組み合わせをループすることは、最高の、退屈な)。
失敗した試行:
- スクリプト自体を解析するというElliotの提案を使用してみました(パスを%A_ScriptFullPath%に置き換えます。これは、生のスクリプトでは機能しますが、スクリプトのコンパイル時には機能しません。
- スクリプトのホットキーセクション全体を継続セクションとして変数に割り当ててから、変数を解析し、
Hotkey
コマンドを使用してホットキーを作成してみました。Hotkey
コマンドは宛先として任意のコマンドを取ることができず、既存のラベルを必要とするため、これは最後の部分までうまく機能しました。 - この
ListHotkeys
コマンドは、コントロールウィンドウにプレーンテキストとしてのみホットキーを表示するため、適用できません。
ホットキーのリストとそれに対応する引数またはコメントを表示する方法を知っている人はいますか?
スクリプト例:
SomeFunc(foobar)
{
MsgBox %foobar%
}
!^#A::SomeFunc("a") ; blah
^+NumpadMult::SomeFunc("c") ; blivet
^+!#`::SomeFunc("b") ; baz
^#Space::SomeFunc("d") ; ermahgerd
…
必要な「出力」の例:
C+A+ W+ A a | C+ S+ NumpadMult b
------------------+----------------------
C+A+S+W+ ` c | C+ W+ Space d
また
Ctrl Alt Shift Win Key Action
-----------------------------------------
× × × A blah
× × NumpadMult baz
× × × × ` blivet
× × Space ermahgerd
etc.