热键有时也称为快捷键, 因为它们能简便地触发动作 (例如运行程序或 键盘宏). 在下面的例子中, Win+N 被设置为启动记事本. 磅的符号 [#] 表示 Windows 键, 它被称为 修饰符:
#n:: Run Notepad return
在前面的最后一行中,return
用来结束此热键.不过, 如果热键只需要执行单行语句, 那么此行可以直接放在双冒号的右边. 换句话说,return
可以省略:
#n::Run Notepad
要在热键中使用多个修饰键, 那么需要把它们连续地列出来 (顺序无关紧要). 下面的例子中使用 ^!s
来表示 Control+Alt+S:
^!s:: Send Sincerely,{enter}John Smith ; 此行发送键击到活动 (最前面的) 窗口. return
在定义热键时您可以使用下列修饰符:
符号 | 说明 |
---|---|
# | Win (Windows 徽标键). 在 v1.0.48.01+, 对于 Windows Vista 及以上版本, 包含 Windows 键的热键 (例如 #a) 会等待 Windows 键被释放后才发送任何包含 "L" 键击的文本. 这样避免了这种热键中的 Send 锁定 PC.这种行为适用于除 SendPlay (这里不需要) 和 盲从模式 外的所有发送模式. |
! | Alt |
^ | Control |
+ | Shift |
& | 和符号可以用来组合任意两个按键或鼠标按钮, 让它们成为自定义热键. 请参阅 后面 了解详情. |
< | 使用成对按键中左边的那个. 例如 <!a 相当于 !a, 只是使用左边的 Alt 键才可以触发. |
> | 使用成对按键中右边的那个. |
<^>! | AltGr (alternate graving). 如果您键盘布局中含 AltGr 键而非右 Alt 键,那么这一系列符号一般可用于表示 AltGr.例如: <^>!m::MsgBox You pressed AltGr+m. <^<!m::MsgBox You pressed LeftControl+LeftAlt+m. 或者, 让 AltGr 自己成为热键, 请使用下面的热键 (不像上面出现的任何热键): LControl & RAlt::MsgBox You pressed AltGr itself. |
* | 通配符: 即使附加的修饰键被按住也能激发热键. 这常与 重映射 按键或按钮组合使用. 例如: *#c::Run Calc.exe ; Win+C,Shift+Win+C,Ctrl+Win+C 等都会触发此热键. *ScrollLock::Run Notepad ; 即使在按住其他修饰键时按下 ScrollLock 也会触发此热键. |
~ | 激发热键时,不会屏蔽(被操作系统隐藏)热键中按键原有的功能.在下面的两个例子中, 用户的鼠标按钮点击会被发送到活动窗口: ~RButton::MsgBox You clicked the right mouse button. ~RButton & C::MsgBox You pressed C while holding down the right mouse button. 与其他前缀符号不同,可以在某些热键的 变体 中使用波浪号前缀而其他的不使用. 然而,如果应用于波浪号 前缀 的任何自定义组合键没有被关闭或暂停,它会影响那个前缀键在 所有 组合中的行为. 用于替代 alt-tab 的特殊按键总是忽略波浪号前缀. [v1.1.14+]: 如果把波浪号 (前缀键) 用在自定义修饰键中且此修饰键自身也作为热键,则在按下此修饰键时会触发热键而不会被延迟到按键释放的时候.例如,上文中 ~RButton 热键在按下此按键时就会触发.对于 v1.1.14 之前的版本(或未使用波浪号前缀), 则会在按键释放时触发其自身的热键, 不过仅在未触发 RButton & C 组合键的时候. 如果波浪号前缀应用于自定义组合而非不可组合键, 按键的原生功能将持续锁定. 例如, 下面的脚本, 按住 AppsKey 键将会一直显示一个 ToolTip 而不会触发上下文菜单: AppsKey::ToolTip Press < or > to cycle through windows. AppsKey Up::ToolTip ~AppsKey & <::Send !+{Esc} ~AppsKey & >::Send !{Esc} |
$ | 通常只在脚本使用 Send 命令发送包含了热键自身的按键时才需要使用此符号, 此时可以避免触发它自己. $ 前缀强制使用 键盘钩子 来实现此热键, 作为一个副作用这样避免了 Send 命令触发它自己. $ 前缀相当于在此热键定义之前的某个位置指定了 $ 前缀对于鼠标热键不起作用, 因为它们始终使用鼠标钩子. 它对于已经启用了键盘钩子的热键同样无效, 包括所有与 波浪号 (~) 或 通配符 (*) 搭配的修改器, key-up 热键 以及自定义组合. [v1.1.06+]: #InputLevel 和 SendLevel 对 Send 命令是否触发热键和热字串提供了额外的控制功能. |
UP | 单词 UP 可以跟在热键名后面使得在释放按键时触发热键, 而不是按下时. 下面的例子把 LWin 重映射 为 LControl: *LWin::Send {LControl Down} *LWin Up::Send {LControl Up} "Up"也可以用于普通热键中,例如: 限制:1) "Up" 不能和 游戏杆按钮 一起使用;2) 在没有普通/按下热键副本的 "Up" 热键会完全接管那个按键以防被卡住.避免这种情况的一种方法是添加波浪号前缀(例如 相关提示, 类似于上面的一种技术是让热键成为前缀键. 好处是尽管热键会在按键松开时激发, 但仅在您之前按住此前缀键时没有按其他任何键的情况下才会如此. 例如: LControl & F1::return ; 通过把左 control 键放在 "&" 前面至少一次来让它成为前缀键.
LControl::MsgBox You released LControl without having used it to modify any other key. |
(请参阅 按键列表 来了解键盘按键和鼠标/操纵杆按钮的完整列表)
多个热键可以垂直地叠放来让它们执行相同的动作. 例如:
^Numpad0:: ^Numpad1:: MsgBox Pressing either Control+Numpad0 or Control+Numpad1 will display this message. return
通过不为按键或按键组合的热键指定任何操作可以在整个系统中完全禁用它们.