求教,使用 AHK 映射 Alt 相关的快捷键,会有一定几率出现按键粘滞现象,请问如何解决?

因为办公原因,所以需要从 Mac 转到 Win,之前用了多年Mac,所以就用 AHK 将 Alt 相关的一些快捷键做了映射,以适应操作习惯。

之前脚本运行的好好的,但这两个月发现,会有一定几率出现 Alt、Ctrl 键的粘滞情况,即只有
{Alt Down}、{Ctrl Down} 的状态,{Alt Up}、{Ctrl Up} 的状态 AHK 没有读取到。
某天查询到,据说是 Chrome 内核升级后,优先拦截了 Up状态,所以导致 AHK 无法获取。

请教大佬们,如下的代码该如何优化:

;=== 利用Alt模拟 Command 键 ===
$<!c::
	SendInput {Ctrl Down}{c}{Ctrl Up}
	SendInput {Alt Up}
Return
$<!x::
	SendInput {Ctrl Down}{x}{Ctrl Up}
	SendInput {Alt Up}
Return
$<!v::
	SendInput {Ctrl Down}{v}{Ctrl Up}
	SendInput {Alt Up}
Return
$<!a::
	SendInput {Ctrl Down}{a}{Ctrl Up}
	SendInput {Alt Up}
Return
$<!w::
	SendInput {Ctrl Down}{w}{Ctrl Up}
	SendInput {Alt Up}
Return
$<!z::
	SendInput {Ctrl Down}{z}{Ctrl Up}
	SendInput {Alt Up}
Return
$<!q::
	SendInput {Alt Down}{F4}{Alt Up}
	SendInput {Alt Up}
Return
$<!f::
	SendInput {Ctrl Down}{f}{Ctrl Up}
	SendInput {Alt Up}
Return

单独映射是为了保留一些本身 Alt 的快捷键,例如在 PS、编辑器中,有些快捷键需要 Alt 修饰。

或许,我应该尝试重新换个写法,如:

$<!c::
{
	SendInput, {Ctrl Down}{c}{Ctrl Up}
}

我也经常遇到这个问题, 最近终于想办法解决了, 写了一个小工具, 可以直接下载 bin 文件夹的 exe 文件使用, 不确定是否对你有用, 可以尝试一下

1 Like

点赞。我现在主要的按键设置放在 Quicker 上,AHK 用来打补充了,先记下解决方案。

之前偶尔遇到过,我是通过 UP 修饰符解决的

单词 UP 可以跟在热键名后面使得在释放按键时触发热键, 而不是按下时. 下面的例子把左 Win 重映射为左 Ctrl:
LWin Up::Send {LControl up}

感谢提供,感觉可以写个AHK的脚本放在Quicker里面了,之前还一直诟病 Quicker 没办法像 AHK 那样单独按键映射。