Во-первых рекомендуется использовать кодовое значение клавиши а не его имя, так мы сразу избавляемся от зависимости активной раскладки клавиатуры (коды можно посмотреть в гугле, либо в KeyHistory во время работы скрипта, однако нужно установить клавиатурный хук соотв. командой). Цикл лучше поместить в секцию автовыполнения (чтобы он выполнялся постоянно), а если необходима возможность отключать/включать цикл можно с помощью горячей клавиши менять значение какой-нибудь переменной на 1 для включения и 0 для выключения, которую будет цикл проверять в самом начале и пропускать итерацию командой continue пока не будет нажата клавиша активации цикла. Кроме того лучше отслеживать физическое состояние клавиши в данный момент параметром P. Чтобы зажать клавишу используйте слово down после имени клавиши (которое тоже лучше указать в виде кода). Вот как это все я смог реализовать:
L_Active := 1
Loop {
if (!L_Active) {
continue
}
if (!getKeyState("vk41", "P")) and (!getKeyState("vk52", "P")) and (!getKeyState("vk54", "P")) {
SendInput {vk50 down}
} else if (getKeyState("vk41", "P")) or (getKeyState("vk52", "P")) or (getKeyState("vk54", "P")) {
SendInput {vk50 up}
}
}
F3:: L_Active := L_Active = 1 ? 0 : 1
Протестировал в окне блокнота, пока зажата одна из трех клавиш клавиша P сразу отжимается. Иногда в момент зажатия клавиши нажатие клавиши P отправляется ещё один раз после чего прерывается, с чем это связано понять не могу, может товарищи поопытнее подскажут здесь.
Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.