我从中找到了这个脚本https://autohotkey.com/boards/viewtopic.php?f=5&t=51596它运行完美。我喜欢它易于理解,并且可以轻松更改所需的密钥。
事情是:
第一次运行时,它会触发“a”,无需我按任何键
我想用这种方法设置其他键,但它只适用于第一个键分配。我复制了工作脚本,并尝试修改变量名称以免互相干扰,并将其粘贴在最底部的“返回”下方,但我在下面添加的任何东西都
KeyWait, {%Key%} tapCount = Return
不起作用
这是当前修改的部分工作脚本,我这里缺少什么
Key = a ;Main Keybind
tLength = -300 ;Time before key is pressed
tapSingle = a ;Single Tap Keybind
tapDouble = b ;Double Tap Keybind
tapHold = c ;Hold Keybind
;----------------------------------------------------------
Hotkey, $%Key%, startTimer
startTimer:
If !endTimer
SetTimer, endTimer, %tLength%
tapCount++
Return
endTimer:
If GetKeyState(Key, "P") and tapCount < 2
Send, {%tapHold%}
Else If tapCount = 2
Send, {%tapDouble%}
Else If tapCount = 1
Send, {%tapSingle%}
KeyWait, {%Key%}
tapCount =
Return
==ANYTHING BELOW IS NOT WORKING==
bKey = b ;Main Keybind
btLength = -300 ;Time before key is pressed
btapSingle = w ;Single Tap Keybind
btapDouble = a ;Double Tap Keybind
btapHold = s ;Hold Keybind
;----------------------------------------------------------
Hotkey, $%bKey%, bstartTimer
bstartTimer:
If !bendTimer
SetTimer, bendTimer, %btLength%
btapCount++
Return
bendTimer:
If GetKeyState(bKey, "P") and btapCount < 2
Send, {%btapHold%}
Else If btapCount = 2
Send, {%btapDouble%}
Else If btapCount = 1
Send, {%btapSingle%}
KeyWait, {%bKey%}
btapCount =
Return
答案1
有一些语法问题(例如,tapCount =
倒数第二行)。我重写了脚本,将其更新为AutoHotkey v2并使用一个函数,以便可以绑定多个组合键,而无需复制和粘贴行。
TripleBind(mainKey, msec, singleKey, doubleKey, holdKey)
{
ProcessPress(key)
{
static count := 0
held := true
++count
AfterTime()
{
if (held) {
Send holdKey
} else if (count == 1) {
Send singleKey
} else {
Send doubleKey
}
count := 0
}
if (count == 1) {
SetTimer AfterTime, -1 * msec
KeyWait mainKey
held := false
}
}
Hotkey "$" . mainKey, ProcessPress
}
TripleBind("a", 300, "a", "b", "c")
TripleBind("b", 300, "w", "a", "s")
为了更容易地从搜索引擎找到这个更新的脚本,这里引用了链接中的原始问题:
我已经尝试这样做了一个小时左右,但并没有取得任何进展。
本质上,我有一把钥匙。为了便于论述,我们假设它是
当点击 a 时,我希望它等待 300 毫秒,然后按下 a。当点击 a 并在 300 毫秒内再次点击时,我希望它在第一次点击后 300 毫秒按下 b。当按住 a 300 毫秒时,我希望它按一次 c。
这意味着 300 毫秒后总会发送一个字符,并且根据按钮是被按下一次、两次还是按住该时间来确定输出的键。
该脚本的实际用例是,根据我按下单键脚踏板的方式为其提供多重绑定。
如果有人能就此事给我任何建议,我将不胜感激。