You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决AHK v2中CapsLock映射禁用后原功能仍被屏蔽的问题

AHK v2 实现CapsLock映射鼠标左键并可切换原功能

以下是无需使用#HotIf的解决方案,通过动态修改热键绑定实现状态切换,同时完美保留CapsLock原有的大写切换功能:

; 全局变量控制映射状态,初始启用鼠标左键映射
isMapActive := true

; 初始化CapsLock的绑定状态
SetCapsLockBinding()

; F1键切换映射/原功能状态
F1:: {
    global isMapActive
    isMapActive := !isMapActive
    SetCapsLockBinding()
    ; 弹出提示告知当前状态,1.5秒后自动消失
    ToolTip, % isMapActive ? "CapsLock已映射为鼠标左键" : "CapsLock恢复原大写功能"
    SetTimer ToolTip, -1500
}

SetCapsLockBinding() {
    global isMapActive
    ; 先清除之前的CapsLock热键绑定,避免冲突
    Hotkey "CapsLock", ""
    Hotkey "CapsLock Up", ""

    if (isMapActive) {
        ; 映射为鼠标左键:按下时模拟左键按下,松开时模拟左键松开
        Hotkey "CapsLock", (*) => Send("{LMB Down}"), "On"
        Hotkey "CapsLock Up", (*) => Send("{LMB Up}"), "On"
    } else {
        ; 恢复原功能:直接发送原生CapsLock键,保留大写切换逻辑
        Hotkey "CapsLock", (*) => Send("{CapsLock}"), "On"
    }
}

核心逻辑说明

  • 用isMapActive变量记录当前状态,F1触发状态反转
  • SetCapsLockBinding函数负责动态更新CapsLock的热键绑定:每次切换前先清空旧绑定,再根据状态设置新的绑定规则
  • 映射状态下,CapsLock的按下/松开动作完全模拟鼠标左键的对应行为;恢复状态后,CapsLock完全保留原生的大写切换功能

内容的提问来源于stack exchange,提问作者wololoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:44:50