我对以下脚本有一个简洁的问题:
global Eme_Fn_idle := true
F1 UP::
MsgBox, F1_up ; ★I wish to see this after pressing and releaseing F1+F9
Eme_Fn_idle = true
return
F1 & F9::
if (Eme_Fn_idle) {
Eme_Fn_idle = false
Eme_ClickOnDocTab(0, 0, 18)
}
else {
Send ^!. ; switch to Right Document
}
return
我只能看到F1_向上当我单独按下并释放时F1。但是,当我按 F1,按 F9,松开 F9,松开 F1, 我看不见F1_向上. 无论如何该如何看待它?
Autohotkey 1.1.13.1
答案1
我也不明白这种行为。显然,F1 UP 被程序阻止了,如密钥历史记录中所示(下面倒数第二行有一个 s,表示它被抑制或阻止):
h=Hook Hotkey, s=Suppressed (blocked)
70 03B s d 0.89 F1 temp.ahk
70 03B h u 0.17 F1
0D 01C d 0.31 Enter temp.ahk
0D 01C u 0.17 Enter temp.ahk
70 03B s d 1.36 F1
78 043 h d 0.17 F9
78 043 s u 0.16 F9
70 03B s u 0.45 F1
26 148 d 0.95 Up
您可以添加一个F1 & F9 UP::
但是,它将捕获 F1 或 F9 被释放的 OR 条件,因此在 4 次按下(F1 向下、F9 向下、F9 向上、F1 向上)时,它将在 F9 向上上触发,而不是 F1 向上。
一种可能的解决方案是制作自己的例程来检测按键状态,然后独立调用代码。可能与第一个问题有关,但如果您添加实际F1::
调用或F1 & F9::
调用,GetKeyState 似乎不起作用,因此在将其与其他任何东西集成之前,请尝试测试此独立程序以查看它是否正常工作。
waitingForF1Up := false
CheckF1Up:
Loop
{
F1 := GetKeyState("F1", "P")
F9 := GetKeyState("F9", "P")
tooltip % F1 ", " F9
if F1 and F9 and not waitingForF1Up
{
SetTimer, F1andF9, -1
waitingForF1up := True
}
else if not F1 and waitingForF1up
{
SetTimer, F1up, -1
waitingForF1up := False
}
sleep 10
}
return
F1up:
tooltip F1 up executed
sleep 1000
tooltip
return
F1andF9:
tooltip F1 and F9 executed
sleep 1000
tooltip
return