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

如何避免AutoHotkey热键输出被其他热键连锁触发?

解决AutoHotkey中Alt+方向键映射Win+方向键的连锁触发问题

问题根源:当你用Alt+方向键发送Win+方向键时,脚本中定义的Win+方向键热键会被触发,进而执行后续的Ctrl+方向键、Home/End等映射,而非系统原生的窗口移动功能。

修改后的脚本

#Requires AutoHotkey v2.0
#SingleInstance Force

/*
    Alt + Left  --> 系统原生Win+Left(窗口左移)
    Alt + Right --> 系统原生Win+Right(窗口右移)
    Alt + Up    --> 系统原生Win+Up(窗口最大化/还原)
    Alt + Down  --> 系统原生Win+Down(窗口最小化/还原)
*/
$!Left:: {
    Hotkey "#Left", "Off"  ; 临时禁用Win+Left的自定义映射
    SendInput "{LWin down}{Left}{LWin up}"  ; 发送原生Win+Left
    Hotkey "#Left", "On"   ; 恢复Win+Left的自定义映射
}
$!Right:: {
    Hotkey "#Right", "Off"
    SendInput "{LWin down}{Right}{LWin up}"
    Hotkey "#Right", "On"
}
$!Up:: {
    Hotkey "#Up", "Off"
    SendInput "{LWin down}{Up}{LWin up}"
    Hotkey "#Up", "On"
}
$!Down:: {
    Hotkey "#Down", "Off"
    SendInput "{LWin down}{Down}{LWin up}"
    Hotkey "#Down", "On"
}

/*
    Win + Left --> Ctrl+Left
    Win + Right --> Ctrl+Right
    Win + Up --> Up
    Win + Down --> Down
*/
$#Left::Send "^{Left}"
$#Right::Send "^{Right}"
$#Up::Send "{Up}"
$#Down::Send "{Down}"

/*
    Ctrl + Left --> Home
    Ctrl + Right --> End
    Ctrl + Up --> Page Up
    Ctrl + Down --> Page Down
*/
$^Left::Send "{Home}"
$^Right::Send "{End}"
$^Up::Send "{PgUp}"
$^Down::Send "{PgDn}"

;   Win + Shift + Left  --> Ctrl + Shift + Left
;   Win + Shift + Right --> Ctrl + Shift + Right
$#+Left::Send "^+{Left}"
$#+Right::Send "^+{Right}"


;   Ctrl + Shift + Left  --> Shift + Home
;   Ctrl + Shift + Right --> Shift + End   
$^+Left::Send "+{Home}"
$^+Right::Send "+{End}"

原理说明

通过Hotkey函数在发送原生Win+方向键前,临时关闭对应的Win+方向键自定义热键,让系统直接响应Win+方向键的窗口控制功能,发送完成后再恢复自定义热键,既保留了Win+方向键的原有映射,又实现了Alt+方向键控制窗口的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:13:23