我编写了包含许多热键的脚本(一般结构如下)。我想创建另一个,按下时会显示所有热键的列表及其相应的描述,脚本包含在一个漂亮的格式化表格中。
由于 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.