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