# #HotkeyModifierTimeout

影响 热键 修饰符的行为: CTRL, ALT, WIN, 和 SHIFT.

#HotkeyModifierTimeout Milliseconds

#### 参数

Milliseconds | 以毫秒为单位的时间间隔.值为-1时,从不超时 (在 Send 命令后修饰键总是被推回到按下的状态), 值为0时,总是超时 (修饰键从不被推回到按下的状态).

#### 备注

该指令 不会 影响下面的情况:

- 热键通过 SendInput 或 SendPlay 模式发送的键击. 这是因为这些模式缓存用户的物理键击直到发送完成才释放。
- 脚本安装了键盘钩子 (如果你的脚本使用了钩子,你可以通过主窗口 "View->Key history" 菜单项目, 或者使用 KeyHistory 命令查看). 这是由于钩子可以记录用户实际按住的修饰键 (ALT/CTRL/WIN/SHIFT), 所以不需要使用超时.

为了说明这个指令的效果, 请思考这个例子:
^!a::Send, abc

当 Send 命令执行时, 首先它释放 CTRL 和 ALT 按键使得这些字符可以正确地发送. 在发送所有的按键后, 此命令不知道是否应该安全的推回到按住 CTRL 和 ALT 的状态 (以匹配在这过程中用户持续的按住它们). 不过如果过去的时间还没达到指定的毫秒数值, 它将假定用户还没来得及释放这些按键而把他们推回到按下的状态以匹配他们的物理状态. 否则, 修饰键将不会被推回到按下的状态, 用户必须再次按下他们以让他们修饰相同的或另一个热键.

此超时时间应该被设置为小于用户从实际按下修饰键到释放他们的时间. 否则, 修饰键可能被恢复到按下的状态(卡住)即使用户实际上并没有按住他们.

出现下列情况的其中一种时你可以减少或不使用此指令:

- 在脚本中的任何位置增加一行 #InstallKeybdHook 来安装键盘钩子 (然而, Win9x 系统中不支持键盘钩子).
- 使用 SendInput 或 SendPlay 模式代替传统的 SendEvent 模式.
- 当使用传统的 SendEvent 模式时, 减小 SetKeyDelay 的延时到 0 或 -1, 这样有助于更快速的发送键击.

如果脚本中没有指定这个指令, 默认设为 50.

#### 相关

GetKeyState

#### 示例

    #HotkeyModifierTimeout 100