Я играю в ритм-игру, в которой вы можете связать две клавиши, чтобы нажать одну ноту (в моем случае LShift и LControl), однако она будет регистрировать ноту только в случае ударов по ней. Под этим я подразумеваю, что если я нажал LShift, он будет удерживать эту ноту, но если я нажму LControl, пока нажата LShift, он не будет регистрировать нажатие второй ноты, вместо этого он будет продолжать удерживать нажатой первую ноту. То, что я прошу, - это скрипт AutoHotKey, который отменяет нажатие клавиши при нажатии другой клавиши, т.е. если удерживать нажатой LShift, нажатие LControl приведет к аннулированию LShift и нажатию LControl.
1 ответ
0
Попробуйте что-то вроде этого:
LShift::
if(GetKeyState("LControl")) {
Send, {LControl up}
}
Send, {LShift down}
return
LShift up::
if(GetKeyState("LShift")) {
Send, {LShift up}
}
return
LControl::
if(GetKeyState("LShift")) {
Send, {LShift up}
}
Send, {LControl down}
return
LControl up::
if(GetKeyState("LControl")) {
Send, {LControl up}
}
return
Я не знаю , если вы обязательно нужны горячие клавиши, но я думаю , что это сделает ваш скрипт более последовательным. Если вам вообще не нужно удерживать клавиши в нажатом положении, вы также можете просто переназначить соответствующий ключ для однократной отправки (что приведет к квази одновременному событию down/up).
PS:
Поведение вашей игры - ошибка или особенность? Другими словами: может ли быть так, что он сознательно не принимает новые ключи, пока другой удерживается? Если это так, вы в основном пытаетесь обмануть;)