windows的Copilot 键改右ctrl
以及
双击资源管理器空白地方后退到上一级目录
注意
-
如果只需要某一个模块,则直接删去另一个即可
-
windows的Copilot 键改右ctrl,启动程序后第一次按键不起作用,之后就完美使用
-
注意是AutoHotkey2版本,不是AutoHotkey1
使用方法
安装AutoHotkey
保存代码为x.ahk
双击运行
还可以放到开机启动文件夹中
C:\Users\root\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
代码
bash
#Requires AutoHotkey v2.0
#SingleInstance Force
; 提升脚本进程优先级,确保按键拦截的响应速度
ProcessSetPriority "High"
; ==============================================================================
; 模块 1: Copilot 按键完美映射为 Ctrl (解决保持状态问题)
; ==============================================================================
; Copilot 键的标准信号是: Left Win (#) + Left Shift (+) + F23
; 必须使用通配符 * 来允许你在按住 Copilot 时再按其他键 (如 C, V, F)
; ==============================================================================
*#+F23::
{
; 1. 立即"逻辑上"抬起 Win 和 Shift 键。
; 因为 Copilot 物理按下时,系统认为 Win 和 Shift 是按下的。
; 如果不强制抬起,你按 Copilot+F 会变成 Ctrl+Win+Shift+F,导致快捷键失效。
Send "{Blind}{LWin Up}{LShift Up}"
; 2. 按下 Ctrl 键
Send "{Blind}{LCtrl Down}"
; 3. 关键逻辑:利用 KeyWait 模拟"物理按住"状态。
; Copilot 键在物理按住时,底层会保持 LShift 处于按下状态。
; 我们等待 LShift 被释放,就代表用户松开了 Copilot 键。
KeyWait "LShift"
; 4. 当用户松开键后,释放 Ctrl
Send "{Blind}{LCtrl Up}"
}
; ==============================================================================
; 功能区 2: 资源管理器双击空白处返回上一级
; ==============================================================================
; 仅在资源管理器窗口生效
#HotIf WinActive("ahk_class CabinetWClass")
~LButton::
{
; 1. 判断是否为双击 (时间间隔小于 400ms 且上一个热键也是左键)
if (A_PriorHotkey != "~LButton" or A_TimeSincePriorHotkey > 400)
return
; 2. 获取当前鼠标状态,如果是 'IBeam' (输入文本状态) 则不执行,防止重命名时误触
if (A_Cursor = "IBeam")
return
; 3. 获取鼠标坐标
MouseGetPos(&mX, &mY)
; 4. 核心逻辑:在鼠标周围随机取样检测是否为白色
; 如果是双击文件,第一次点击通常会选中文件,导致周围背景变为"选中色"(蓝/灰),
; 从而导致检测失败,脚本就不会拦截,保证正常打开文件。
isWhiteSpace := true
checkCount := 6 ; 检测 6 个随机点,兼顾性能与准确度
radius := 30 ; 检测半径 30 像素
targetColor := 0xFFFFFF ; 纯白色 (RGB)
Loop checkCount
{
; 在鼠标周围随机生成偏移量
offsetX := Random(-radius, radius)
offsetY := Random(-radius, radius)
; 获取该点颜色 (RGB模式)
try {
pixelColor := PixelGetColor(mX + offsetX, mY + offsetY, "RGB")
} catch {
; 如果鼠标在边缘,获取颜色失败,视为非空白,安全退出
isWhiteSpace := false
break
}
; 判断颜色是否为纯白
; 注意:如果你使用的是深色模式,这里需要改为深色背景的色值 (例如 0x191919)
if (pixelColor != "0xFFFFFF")
{
isWhiteSpace := false
break ; 只要有一个点不是白色,就认为不是空白区域,停止检测
}
}
; 5. 如果所有随机点都是白色,发送 Alt + Up (返回上一级)
if (isWhiteSpace)
{
Send "!{Up}"
; 可以在这里加个 ToolTip 调试,确定触发了
; ToolTip "Back Triggered"
; SetTimer () => ToolTip(), -1000
}
}
#HotIf ; 结束上下文限制