- 自动热键本身不做任何事情;它需要一个脚本来告诉它要做什么,每个热键后面都跟着一个或多个热键,当按下热键时可以采取这些操作。
- 脚本是一个简单的纯文本文件,扩展名为.ahk,包含程序的指令,类似于配置文件,但是功能更强大。
- 脚本可以只执行一个操作,然后退出。多数脚本都定义了许多热键,每个热键后面都跟着一个或多个热键,当按下热键时可以采取这些操作。
- https://www.autohotkey.com/docs/AutoHotkey.htm
- 复杂功能设计需要多线程和定时器、中断、线程同步控制。
- 定时器+信号量 XXX up:: { if ( XXX_flag ) { ... return } XXX_flag :=True ... SetTimer, XXX_time, -time return } XXX_time: { ... XXX_flag :=False return } 异步检测 InputHook 或者 异步通知 异步通知 ~XXX:: { if ( XXX_msg ) { ... return } SetTimer, XXX_time, -time XXX_msg :=True ... return } ~XXX up:: { ... if( !XXX_msg ) { } } XXX_time: { ... ; chck msg } 状态机套娃。 MButton::return MButton up:: { if( !MButton_flag ) { .. MButton_flag :=True return } ... MButton :=False return } 一个硬件标志位配合时间信息可以跳转执行的多个服务数 状态机+异步信号, 子状态接收异步信号跳往对应下一态 定时器检测硬件标志,配合状态机1跳转相应状态,单击、双击、多次击键。 定义:单击按键,双击按键,3击及其它。