fix Win key stuck on virtual desktop switch
This commit is contained in:
50
CapSpace.ahk
50
CapSpace.ahk
@@ -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}")
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user