Autohotkey:替换组合键(但超时)

Autohotkey: replace key combination (but with timeout)

当我输入时,我希望我的脚本替换:

"ab" to "x"
"ac" to "y"
"a[more than 300ms]b" - don't replace, just leave "ab"

因此,仅当“a”和“b”/“c”之间的时间小于 300 毫秒时才应替换

尝试这样做:

a & b :: Send x
a & c :: Send y

但显然'forgive'我没有任何延迟

最好能得到任何提示,谢谢!

A hotstring 通常适合替换。为了增加延迟,我可以想出一个简单的方法:

~*a::APressTime := A_TickCount

:*B0:ab::
    if(A_TickCount - APressTime <= 300)
        SendInput, % "{BS 2}x"
return

首先是 A 的简单热键,它只用 A_TickCount.

保存当前系统时间

然后 hotstring 我设置了一些您可能会想要使用的选项:
* so you don't need to type an ending character.
B0 所以它不会自动退格字母 ab
您可能还想使用 ? 选项,这样热字串也可以在“单词内部”工作。如果需要,请添加它。

然后我们将当前系统时间与最后一次按下 a 的时间进行比较。如果为 300 毫秒或更短,请发送退格键两次,然后发送 x
{BS 2}{Backspace 2}{Backspace}{Backspace} 相同)

要对 ac 执行相同操作,只需再次复制粘贴热字串并将 b 切换为 c,将 x 切换为 y
或者,这里有一些更有趣的东西,可以将它们放在带有三元的相同热字串标签中:

:*B0:ab::
:*B0:ac::
    if(A_TickCount - APressTime <= 300)
        SendInput, % "{BS 2}" (SubStr(A_ThisHotkey, 0) = "b" ? "x" : "y")
return