fix Win key stuck on virtual desktop switch

This commit is contained in:
2026-02-12 22:14:24 +08:00
parent 13a081fc52
commit c7a52a682c

View File

@@ -1,21 +1,45 @@
#Requires AutoHotkey v2.0
#SingleInstance Force
; 确保 RAlt 的穿透性(如果 Typeless 仍有冲突,保留此行)
; 解决 Win 键残留的核心设置:防止 AHK 自动发送 Ctrl 掩码
A_MenuMaskKey := "vkE8"
; 确保 RAlt 穿透
~RAlt::return
; 优化发送速度SetKeyDelay 影响 SendEvent 的速度
; 参数含义:延时 1ms按键时长 1ms
SetKeyDelay 1, 1
; -------------------------------------------------------------------------
; 逻辑说明:
; 使用 SendInput 提高可靠性。
; 执行完后强制发送 {LWin up} 以解除“卡死”状态。
; -------------------------------------------------------------------------
; 使用 Ctrl + 方向键 切换虚拟桌面
; 加上 * 可以支持 Ctrl+Shift+Left 等组合,去掉 $ 如果你确定没有热键死循环
*^Left::SendEvent("{Blind}#^{Left}")
*^Right::SendEvent("{Blind}#^{Right}")
*^Left:: {
SendInput("#^{Left}")
SafeRelease()
}
; 一键跳转到第一个桌面 (向上)
*^Up::SendEvent("{Blind}#^{Left 10}")
*^Right:: {
SendInput("#^{Right}")
SafeRelease()
}
; 一键跳转到最后一个桌面 (向下)
; 10 次通常足够覆盖大部分人的桌面数量
*^Down::SendEvent("{Blind}#^{Right 10}")
; 跳转到一个桌面 (通常 10 次足够)
*^Up:: {
SendInput("#^{Left 10}")
SafeRelease()
}
; 跳转到最后一个桌面
*^Down:: {
SendInput("#^{Right 10}")
SafeRelease()
}
; 辅助函数:强制释放 Win 键,确保系统状态归零
SafeRelease() {
; 等待物理 Ctrl 键松开(可选,若想极致连发可注释掉下行)
; KeyWait "Control"
; 强制发送 Win 弹起指令,消除“残留”
SendInput("{LWin up}{RWin up}")
}