From 392adc304cadff4ac094bba77ff7e6c09766e103 Mon Sep 17 00:00:00 2001 From: MAO Dongyang Date: Fri, 13 Feb 2026 02:14:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=BC=BA=20Typeless=20=E7=83=AD?= =?UTF-8?q?=E9=94=AE=E7=9A=84=E4=BC=A0=E9=80=92=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=8F=AC=E5=94=A4=20Typeless?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CapSpace.ahk | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/CapSpace.ahk b/CapSpace.ahk index e18230b..67bd4bc 100644 --- a/CapSpace.ahk +++ b/CapSpace.ahk @@ -1,16 +1,17 @@ #Requires AutoHotkey v2.0 #SingleInstance Force +InstallKeybdHook ; 强制安装键盘钩子,提高对物理按键状态感知的准确性 -; 解决 Win 键残留的核心设置:防止 AHK 自动发送 Ctrl 掩码 +; 关键优化:将掩码键设为 vkE8。 +; 这样 AHK 在屏蔽 Win/Alt 的菜单功能时,不会发送干扰 Typeless 的 Ctrl 信号。 A_MenuMaskKey := "vkE8" -; 确保 RAlt 穿透 -~RAlt::return +; 1. 优化 RAlt 穿透逻辑 +; 使用 ~ 确保信号能传给 Typeless,同时用 $ 防止热键自我触发 +~$RAlt::return ; ------------------------------------------------------------------------- -; 逻辑说明: -; 使用 SendInput 提高可靠性。 -; 执行完后强制发送 {LWin up} 以解除“卡死”状态。 +; 2. 虚拟桌面切换逻辑 (使用之前优化的防残留方案) ; ------------------------------------------------------------------------- *^Left:: { @@ -23,23 +24,21 @@ A_MenuMaskKey := "vkE8" SafeRelease() } -; 跳转到第一个桌面 (通常 10 次足够) *^Up:: { SendInput("#^{Left 10}") SafeRelease() } -; 跳转到最后一个桌面 *^Down:: { SendInput("#^{Right 10}") SafeRelease() } -; 辅助函数:强制释放 Win 键,确保系统状态归零 +; 辅助函数:彻底清除 Win 键残留,并给系统一点微小的缓冲时间 SafeRelease() { - ; 等待物理 Ctrl 键松开(可选,若想极致连发可注释掉下行) - ; KeyWait "Control" - - ; 强制发送 Win 弹起指令,消除“残留” + ; 强制释放 Win 键 SendInput("{LWin up}{RWin up}") + + ; 如果切换后 RAlt 依然失灵,取消下面这行的注释(加 50ms 缓冲) + ; Sleep 50 } \ No newline at end of file