按键列表(键盘, 鼠标和控制器)

目录

  • 鼠标
  • 键盘
  • 游戏控制器(游戏手柄, 操纵杆等)
  • 手持遥控
  • 特殊按键
  • CapsLock 和 IME
  • 鼠标

    常规按键

    名称 描述
    LButton Send 中使用的是鼠标左键, 热键中使用的是鼠标主键. 换句话说, 如果用户通过系统设置调换了按钮, LButton:: 是通过点击鼠标 键来物理激活的, 而 Send {LButton} 的执行与物理点击 键相同. 要始终执行逻辑上的左键单击, 请使用 Click LeftSend {Click Left}.
    RButton Send 中使用的是鼠标右键, 热键中使用的是鼠标副键. 换句话说, 如果用户通过系统设置调换了按钮, RButton:: 是通过点击鼠标 键来物理激活的, 而 Send {RButton} 的执行与物理点击 键相同. 要始终执行逻辑上的右键单击, 请使用 Click RightSend {Click Right}.
    MButton 鼠标中键或滚轮

    高级按键

    名称 描述
    XButton1 鼠标的第四个按键. 一般和 Browser_Back 执行相同功能.
    XButton2 鼠标的第五个按键. 一般和 Browser_Forward 执行相同功能.

    滚轮

    名称 描述
    WheelDown 向下转动鼠标滚轮(朝向您的方向).
    WheelUp 向上转动鼠标滚轮(远离您的方向).
    WheelLeft
    WheelRight

    [v1.0.48+]: 向左或向右滚动.

    需要 Windows Vista 或更高版本. 这些可以在带第二个滚轮或支持左右滚动的鼠标(但不是所有) 中作为热键. 在某些情况下, 必须使用与鼠标捆绑在一起的软件来控制这些功能. 无论使用哪种鼠标, SendClick 都可以用于在支持它的程序中水平滚动.

    键盘

    注意: 字母和数字按键的名称和单个字母或数字相同. 例如: b 表示 B, 而 5 表示 5.

    虽然任何单个字符都可以用作键名, 但其含义(SC 扫描码或 VK 虚拟键码) 取决于当前的键盘布局. 此外, 根据具体情况, 某些特殊字符可能需要转义或用大括号括起来. [v1.1.27+]: 字母 a-z 或 A-Z 可以用来指代相应的虚拟键码(通常是 vk41-vk5A), 即使它们不包含在当前的键盘布局中.

    常规按键

    名称 描述
    CapsLock CapsLock(大小写锁定键)

    注意: Windows IME 可能会干扰 CapsLock 的检测和功能; 有关详情, 请参阅 CapsLock 和 IME.

    Space Space(空格键)
    Tab Tab(Tab 键)
    Enter Enter(回车键)
    Return 不推荐: 使用同义词 Enter 来减少歧义.
    Escape(或 Esc) Esc(退出键)
    Backspace(或 BS) Backspace(退格键). 当 Ctrl 被按住时, ScrollLock 产生 CtrlBreak 的按键代码, 但可以通过扫描码将其与 Pause 区分开来.

    光标控制

    名称 描述
    ScrollLock ScrollLock(滚动锁定键)
    Delete(或 Del) Del(删除键)
    Insert(或 Ins) Ins(插入改写切换键)
    Home Home
    End End
    PgUp PgUp(向上翻页键)
    PgDn PgDn(向下翻页键)
    Up (向上方向键)
    Down (向下方向键)
    Left (向左方向键)
    Right (向右方向键)

    数字键

    由于系统行为, 根据 NumLock 是 ON(开) 还是 OFF(关), 以下用斜杠分隔的键识别为不同的按键. 如果 NumLock 为 OFF 但 Shift 按下, 系统将临时释放 Shift 并且就像 NumLock 为 ON 状态一样.

    名称 描述
    Numpad0 / NumpadIns0 / Ins
    Numpad1 / NumpadEnd1 / End
    Numpad2 / NumpadDown2 /
    Numpad3 / NumpadPgDn3 / PgDn
    Numpad4 / NumpadLeft4 /
    Numpad5 / NumpadClear5 / 通常什么都不做
    Numpad6 / NumpadRight6 /
    Numpad7 / NumpadHome7 / Home
    Numpad8 / NumpadUp8 /
    Numpad9 / NumpadPgUp9 / PgUp
    NumpadDot / NumpadDel. / Del
    NumLock NumLock(数字锁定键). 当 Ctrl 被按住时, NumLock 产生 Pause 的按键代码, 所以在热键中使用 ^Pause 来代替 ^NumLock.
    NumpadDiv /(除号)
    NumpadMult *(乘号)
    NumpadAdd +(加号)
    NumpadSub -(减号)
    NumpadEnter Enter

    功能键

    名称 描述
    F1 - F24 在大多数键盘顶部的 12 个或更多的功能键.

    修饰符键

    名称 描述
    LWin 左边的 Win. 对应的热键前缀为 <#.
    RWin

    右边的 Win. 对应的热键前缀为 >#.

    注意:Ctrl/Alt/Shift 不同, 没有一般的/中性的 "Win" 键, 因为操作系统不支持. 然而, 带有 # 修饰符的热键可以触发由任一 Win 触发.

    Control(或 Ctrl) Ctrl. 单独作为热键(Control::) 时它在弹起时触发, 不过如果加上颚化符前缀可以改变这种情况. 对应的热键前缀为 ^.
    Alt Alt. 单独作为热键(Alt::) 时它在弹起时触发, 不过如果加上颚化符前缀可以改变这种情况. 对应的热键前缀为 !.
    Shift Shift. 单独作为热键(Shift::) 时它在弹起时触发, 不过如果加上颚化符前缀可以改变这种情况. 对应的热键前缀为 +.
    LControl(或 LCtrl) Ctrl. 对应的热键前缀为 <^.
    RControl(或 RCtrl) Ctrl. 对应的热键前缀为 >^.
    LShift Shift. 对应的热键前缀为 <+.
    RShift Shift. 对应的热键前缀为 >+.
    LAlt Alt. 对应的热键前缀为 <!.
    RAlt

    Alt. 对应的热键前缀为 >!.

    注意: 如果您的键盘布局存在 AltGr 而不是 RAlt, 那么您完全可以根据这里描述的那样通过 <^>! 把它作为热键前缀使用. 此外, LControl & RAlt:: 可以把 AltGr 自身设置成热键.

    多媒体键

    下面列出的每个按键的功能可以通过修改 Windows 注册表进行替换. 这个表格中显示的是在 Windows 系统的大多数版本中每个按键的默认功能.

    名称 描述
    Browser_Back 后退
    Browser_Forward 前进
    Browser_Refresh 刷新
    Browser_Stop 停止
    Browser_Search 搜索
    Browser_Favorites 收藏夹
    Browser_Home 主页
    Volume_Mute 静音
    Volume_Down 调低音量
    Volume_Up 增加音量
    Media_Next 下一首
    Media_Prev 上一首
    Media_Stop 停止
    Media_Play_Pause 播放/暂停
    Launch_Mail 打开默认的电子邮件程序
    Launch_Media 打开默认的媒体播放器
    Launch_App1 打开此电脑(以前是我的电脑或计算机)
    Launch_App2 打开计算器

    其他按键

    名称 描述
    AppsKey Menu. 这是调用右键上下文菜单的按键.
    PrintScreen PrtScr(截屏键)
    CtrlBreak Ctrl+PauseCtrl+ScrollLock
    Pause Pause(暂停键) 或 Ctrl+NumLock. 当 Ctrl 被按住时, Pause 产生 CtrlBreak 的按键代码, 而 NumLock 产生 Pause 的按键代码, 所以在热键中使用 ^CtrlBreak 来代替 ^Pause.
    Break 不推荐: 使用同义词 Pause 来代替.
    Help Help(帮助键). 此键可能在大多数键盘上不存在. 它通常和 F1 不同.
    Sleep Sleep(休眠键). 注意在一些键盘上的 sleep 键可能不是休眠功能.
    SCnnn 请在 nnn 中指定按键的扫描码. 识别上面没有提到的罕见的按键. 请参阅特殊按键了解详情.
    VKnn

    请在 nn 中指定十六进制的虚拟按键码. 这种极少用的方法还可以避免某些类型的热键需要安装键盘钩子. 例如, 后面的热键不使用键盘钩子, 但副作用是它会在按下 Home 或 NumpadHome 的 其中一个 时触发:

    ^VK24::MsgBox 您按下 Home 或 NumpadHome 键的同时按住了 Control 键.
    

    已知限制: 强制使用键盘钩子的 VK 热键, 例如 *VK24~VK24, 只会触发其中一个热键, 而不会触发两者(例如触发 NumpadHome 但不触发 Home). 关于 VKnn 方法的更多细节, 请参阅特殊按键.

    警告: 只有 Send, GetKeyName(), GetKeyVK(), GetKeySC()#MenuMaskKey 支持 VKnn 和 SCnnn 组合使用. [v1.1.27+]: 无效后缀的存在阻止了 VKnn 被识别. 例如, 在 v1.1.27+ 中, vk1Bsc001:: 会引发错误, 但是 sc001 在以前的版本中是被忽略的(没有效果).

    游戏控制器(游戏手柄, 操纵杆等)

    注意: 由于历史原因, 以下按钮和控件名称以 Joy 开头, 代表操纵杆. 然而, 它们通常也适用于其他游戏控制器, 如游戏手柄或方向盘.

    Joy1 到 Joy32: 控制器的按钮. 要辅助判断您控制器的按钮编号, 请使用此测试脚本. 请注意这里不支持热键前缀符, 例如 ^(control) 和 +(shift) (尽管可以使用 GetKeyState 作为替代方法). 还必须注意, 如果活动窗口设计对控制器按钮进行检测, 那么控制器按钮按下时总是会 "传递" 给它.

    尽管下列控制器控制器的名称不能设为热键, 但它们可以用于 GetKeyState:

    例如, 当使用 Xbox Wireless/360 控制器时, JoyX/JoyY 是左摇杆, JoyR/JoyU 是右摇杆, JoyZ 是左右触发器, 而 JoyPOV 是方向键(D-pad).

    多个控制器: 如果计算机上有多个控制器并且您想使用第一个外的其他控制器, 那么请在控制器名称的前面加上控制器的编号(最大为 16). 例如, 2joy1 表示第二个控制器的首个按钮.

    注意: 如果您在使用脚本识别您的控制器时遇到问题, 曾有人报告说尽管只有一个控制器却需要指定大于 1 的控制器编号. 不清楚这种方法是如何得到的或是否正常, 不过请尝试在控制器测试脚本中使用控制器编号也许可以帮助确定这种方法是否适合您的系统.

    另请参阅:

    手持遥控

    通过 WinLIRC 客户端脚本响应手持遥控器的信号.

    特殊按键

    如果您的键盘或鼠标含有前面没有列出的按键, 那么使用下列步骤后您仍可能把它设为热键.

    1. 确保至少有一个使用键盘钩子的脚本正在运行. 打开脚本的主窗口并在菜单栏中选择 "View->Key history" 后您可以判断脚本是否使用了键盘钩子.
    2. 双击脚本的托盘图标来打开其主窗口.
    3. 按下您键盘上的其中一个 "神秘按键".
    4. 选择菜单项 "View->Key history"
    5. 向下滚动到页面的底部. 在底部附近的某个地方可以看到您按键的按下和弹起事件. 注: 一些按键不生成事件, 因此这里看不到它们的事件. 如果是这种情况, 那么您不能直接把此特殊按键设为热键, 因为您的键盘驱动或硬件在很低的的层面处理它, AutoHotkey 无法访问. 有关可能的解决方案, 请参阅下文.
    6. 如果检测到了您的按键, 请记下列表中第二列的 3 位十六进制值(例如 159).
    7. 要把此键定义为热键, 请参照此例:
      SC159:: ; 把 159 替换为您按键的值.
      MsgBox, %A_ThisHotkey% was pressed.
      return

    反向: 要把其他键重映射 "神秘按键", 请参照此例:

    ; 把 159 替换为上面找到的值. 把 FF(如果需要) 替换为
    ; 按键的虚拟键, 它可以在按键历史页面的首列找到.
    #c::Send {vkFFsc159} ; 有关详情, 请参阅 Send {vkXXscYYY}.

    可选的解决方案: 如果您的按键或鼠标按钮没有在按键历史页面检测到, 那么下面的其中一种方法可能有帮助:

    1. 重新配置您鼠标或键盘的附带软件(有时可以在控制面板或开始菜单中访问) 来让 "神秘按键" 发送其他的键击. 然后可以在脚本中把这样的键击设置为热键. 例如, 如果您配置神秘按键来发送 Ctrl+F1, 然后在脚本中通过使用 ^F1:: 您可以把这个按键间接的设置为热键.

    2. 试试 AHKHID. 你还可以尝试以 RawInput*, USB HIDAHKHID 作为关键字在论坛进行搜索.

    3. 下面是最后的手段, 通常应该在其他所有方法都无效时才去尝试. 这是由于成功的机会很小且可能会引起难以取消的不必要的副作用:
      禁用或移除您键盘或鼠标的附带软件, 或者让它使用更标准的驱动, 例如操作系统内置的那个. 这里假设您特殊的键盘或鼠标使用自己的驱动并且您不使用其自带驱动和软件提供的功能.

    CapsLock 和 IME

    Windows IME 的某些配置(如 日文输入与英文键盘) 使用 CapsLock 来切换模式. 在这种情况下, CapsLock 被 IME 压制, 并且无法被 AutoHotkey 检测. 不过, Alt+CapsLock, Ctrl+CapsLockShift+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