LButton::
Send {LButton}
Click Left
Send {Click Left}
RButton::
Send {RButton}
Click Right
Send {Click Right}
[v1.0.48+]: 向左或向右滚动.
需要 Windows Vista 或更高版本. 这些可以在带第二个滚轮或支持左右滚动的鼠标(但不是所有) 中作为热键. 在某些情况下, 必须使用与鼠标捆绑在一起的软件来控制这些功能. 无论使用哪种鼠标, Send 和 Click 都可以用于在支持它的程序中水平滚动.
注意: 字母和数字按键的名称和单个字母或数字相同. 例如: b 表示 B, 而 5 表示 5.
虽然任何单个字符都可以用作键名, 但其含义(SC 扫描码或 VK 虚拟键码) 取决于当前的键盘布局. 此外, 根据具体情况, 某些特殊字符可能需要转义或用大括号括起来. [v1.1.27+]: 字母 a-z 或 A-Z 可以用来指代相应的虚拟键码(通常是 vk41-vk5A), 即使它们不包含在当前的键盘布局中.
注意: Windows IME 可能会干扰 CapsLock 的检测和功能; 有关详情, 请参阅 CapsLock 和 IME.
Enter
CtrlBreak
由于系统行为, 根据 NumLock 是 ON(开) 还是 OFF(关), 以下用斜杠分隔的键识别为不同的按键. 如果 NumLock 为 OFF 但 Shift 按下, 系统将临时释放 Shift 并且就像 NumLock 为 ON 状态一样.
Pause
^Pause
^NumLock
<#
右边的 Win. 对应的热键前缀为 >#.
>#
注意: 与 Ctrl/Alt/Shift 不同, 没有一般的/中性的"Win"键, 因为操作系统不支持. 然而, 带有 # 修饰符的热键可以触发由任一 Win 触发.
#
Control::
^
Alt::
!
Shift::
+
<^
>^
<+
>+
<!
右 Alt. 对应的热键前缀为 >!.
>!
注意: 如果您的键盘布局存在 AltGr 而不是 RAlt, 那么您完全可以根据这里描述的那样通过 <^>! 把它作为热键前缀使用. 此外, LControl & RAlt:: 可以把 AltGr 自身设置成热键.
<^>!
LControl & RAlt::
下面列出的每个按键的功能可以通过修改 Windows 注册表进行替换. 这个表格中显示的是在 Windows 系统的大多数版本中每个按键的默认功能.
^CtrlBreak
请在 nn 中指定十六进制的虚拟按键码. 这种极少用的方法还可以避免某些类型的热键需要安装键盘钩子. 例如, 后面的热键不使用键盘钩子, 但副作用是它会在按下 Home 或 NumpadHome 的 其中一个 时触发:
^VK24::MsgBox 您按下 Home 或 NumpadHome 键的同时按住了 Control 键.
已知限制: 强制使用键盘钩子的 VK 热键, 例如 *VK24 或 ~VK24, 只会触发其中一个热键, 而不会触发两者(例如触发 NumpadHome 但不触发 Home). 关于 VKnn 方法的更多细节, 请参阅特殊按键.
*VK24
~VK24
警告: 只有 Send, GetKeyName(), GetKeyVK(), GetKeySC() 和 #MenuMaskKey 支持 VKnn 和 SCnnn 组合使用. [v1.1.27+]: 无效后缀的存在阻止了 VKnn 被识别. 例如, 在 v1.1.27+ 中, vk1Bsc001:: 会引发错误, 但是 sc001 在以前的版本中是被忽略的(没有效果).
vk1Bsc001::
sc001
Joy1 到 Joy32: 操纵杆的按钮. 要辅助判断您操纵杆的按钮编号, 请使用此测试脚本. 请注意这里不支持热键前缀符, 例如 ^(control) 和 +(shift) (尽管可以使用 GetKeyState() 作为替代方法). 还必须注意, 如果活动窗口设计对操纵杆按钮进行检测, 那么操纵杆按钮按下时总是会 "传递" 给它.
尽管下列操纵杆控制器的名称不能设为热键, 但它们可以用于 GetKeyState():
多个操纵杆: 如果计算机上有多个操纵杆并且您想使用第一个外的其他操纵杆, 那么请在控制器名称的前面加上操纵杆的编号(最大为 16). 例如, 2joy1 表示第二个操纵杆的首个按钮.
注意: 如果您在使用脚本识别您的操纵杆时遇到问题, 曾有人报告说尽管只有一个操纵杆却需要指定大于 1 的操纵杆编号. 不清楚这种方法是如何得到的或是否正常, 不过请尝试在操纵杆测试脚本中使用操纵杆编号也许可以帮助确定这种方法是否适合您的系统.
另见:
通过 WinLIRC 客户端脚本响应手持遥控器的信号.
如果您的键盘或鼠标含有前面没有列出的按键, 那么使用下列步骤后您仍可能把它设为热键.
SC159:: ; 把 159 替换为您按键的值. MsgBox, %A_ThisHotkey% was pressed. return
反向: 要把其他键重映射 为 "神秘按键", 请参照此例:
; 把 159 替换为上面找到的值. 把 FF(如果需要) 替换为 ; 按键的虚拟键, 它可以在按键历史页面的首列找到. #c::Send {vkFFsc159} ; 有关详情, 请参阅 Send {vkXXscYYY}.
可选的解决方案: 如果您的按键或鼠标按钮没有在按键历史页面检测到, 那么下面的其中一种方法可能有帮助:
重新配置您鼠标或键盘的附带软件(有时可以在控制面板或开始菜单中访问) 来让 "神秘按键" 发送其他的键击. 然后可以在脚本中把这样的键击设置为热键. 例如, 如果您配置神秘按键来发送 Ctrl+F1, 然后在脚本中通过使用 ^F1:: 您可以把这个按键间接的设置为热键.
^F1::
试试 AHKHID. 你还可以尝试以 RawInput*, USB HID 或 AHKHID 作为关键字在论坛进行搜索.
RawInput*
USB HID
AHKHID
下面是最后的手段, 通常应该在其他所有方法都无效时才去尝试. 这是由于成功的机会很小且可能会引起难以取消的不必要的副作用: 禁用或移除您键盘或鼠标的附带软件, 或者让它使用更标准的驱动, 例如操作系统内置的那个. 这里假设您特殊的键盘或鼠标使用自己的驱动并且您不使用其自带驱动和软件提供的功能.
Windows IME 的某些配置(如 日文输入与英文键盘) 使用 CapsLock 来切换模式. 在这种情况下, CapsLock 被 IME 压制, 并且无法被 AutoHotkey 检测. 不过, Alt+CapsLock, Ctrl+CapsLock 和 Shift+CapsLock 等快捷键可以通过变通的方法禁用. 具体来说, 发送松开按键来修改 IME 的状态, 但通过给键盘钩子发送信号来抑制该事件, 从而防止任何其他影响. 可以使用以下函数来实现这一目的:
; 需要 AutoHotkey v1.1.26+, 并且必须安装键盘钩子. #InstallKeybdHook SendSuppressedKeyUp(key) { DllCall("keybd_event" , "char", GetKeyVK(key) , "char", GetKeySC(key) , "uint", KEYEVENTF_KEYUP := 0x2 , "uptr", KEY_BLOCK_THIS := 0xFFC3D450) }
将函数复制到脚本中或保存为 SendSuppressedKeyUp.ahk 放入函数库, 可以按照以下方式使用该函数:
; 禁止 IME 的 Alt+key 快捷键. ~LAlt::SendSuppressedKeyUp("LAlt") ; 测试热键: !CapsLock::MsgBox % A_ThisHotkey ; 重映射 CapsLock 为 LCtrl 以与 IME 兼容的方式. *CapsLock:: Send {Blind}{LCtrl DownR} SendSuppressedKeyUp("LCtrl") return *CapsLock up:: Send {Blind}{LCtrl Up} return