Eu também não entendo esse comportamento. Obviamente, o F1 UP está sendo bloqueado pelo programa como mostrado no histórico de chaves (a segunda até a última linha abaixo tem um significado s que é suprimido ou bloqueado):
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
Você poderia adicionar um F1 & F9 UP::
, mas pegaria uma condição OR de F1 ou F9 sendo liberada, então em uma 4-press (F1 Down, F9 Down, F9 Up, F1 Up), ele dispararia no F9 Up, não no F1 Up.
Uma possível solução seria criar sua própria rotina para detectar o estado das chaves e depois chamar seu código de forma independente. Provavelmente relacionado ao primeiro problema, mas o GetKeyState parece não funcionar se você adicionar a chamada F1::
real ou F1 & F9::
, então tente testar este standalone para ver se funciona antes de integrá-lo com qualquer outra coisa. / p>
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