增强 Typeless 热键的传递,避免无法召唤 Typeless

This commit is contained in:
2026-02-13 02:14:54 +08:00
parent c7a52a682c
commit 392adc304c

View File

@@ -1,16 +1,17 @@
#Requires AutoHotkey v2.0 #Requires AutoHotkey v2.0
#SingleInstance Force #SingleInstance Force
InstallKeybdHook ; 强制安装键盘钩子,提高对物理按键状态感知的准确性
; 解决 Win 键残留的核心设置:防止 AHK 自动发送 Ctrl 掩码 ; 关键优化:将掩码键设为 vkE8。
; 这样 AHK 在屏蔽 Win/Alt 的菜单功能时,不会发送干扰 Typeless 的 Ctrl 信号。
A_MenuMaskKey := "vkE8" A_MenuMaskKey := "vkE8"
; 确保 RAlt 穿透 ; 1. 优化 RAlt 穿透逻辑
~RAlt::return ; 使用 ~ 确保信号能传给 Typeless同时用 $ 防止热键自我触发
~$RAlt::return
; ------------------------------------------------------------------------- ; -------------------------------------------------------------------------
; 逻辑说明: ; 2. 虚拟桌面切换逻辑 (使用之前优化的防残留方案)
; 使用 SendInput 提高可靠性。
; 执行完后强制发送 {LWin up} 以解除“卡死”状态。
; ------------------------------------------------------------------------- ; -------------------------------------------------------------------------
*^Left:: { *^Left:: {
@@ -23,23 +24,21 @@ A_MenuMaskKey := "vkE8"
SafeRelease() SafeRelease()
} }
; 跳转到第一个桌面 (通常 10 次足够)
*^Up:: { *^Up:: {
SendInput("#^{Left 10}") SendInput("#^{Left 10}")
SafeRelease() SafeRelease()
} }
; 跳转到最后一个桌面
*^Down:: { *^Down:: {
SendInput("#^{Right 10}") SendInput("#^{Right 10}")
SafeRelease() SafeRelease()
} }
; 辅助函数:强制释放 Win 键,确保系统状态归零 ; 辅助函数:彻底清除 Win 键残留,并给系统一点微小的缓冲时间
SafeRelease() { SafeRelease() {
; 等待物理 Ctrl 键松开(可选,若想极致连发可注释掉下行) ; 强制释放 Win 键
; KeyWait "Control"
; 强制发送 Win 弹起指令,消除“残留”
SendInput("{LWin up}{RWin up}") SendInput("{LWin up}{RWin up}")
; 如果切换后 RAlt 依然失灵,取消下面这行的注释(加 50ms 缓冲)
; Sleep 50
} }