У вашего цикла нет условия выхода, которое остановило бы его.
loop
{
while sendingKeys
{
sendinput c
sleep, 700
}
sleep 100
}
Вы должны запустить этот код немедленно (вместо того, чтобы быть в подпрограмме кнопки). Вы бы инициализировали sendKeys до цикла, чтобы он был установлен по умолчанию для запуска программы. Внешний цикл по-прежнему не имеет условия выхода, он просто работает вечно до тех пор, пока Escape не вызовет событие ExitApp (которое может нормально работать в вашем случае).
sendingKeys := False ; make the user toggle first before loop turns on
В подпрограмме button вы просто переключаете переменную sentKeys, чтобы переходить между истиной и ложью, которая запускает внутренний цикл или останавливает внутренний цикл, когда переменная изменяет состояние.
button:
sendingKeys := not sendingKeys
return
Когда внутренний цикл не выполняется, внешний цикл просто опрашивает и продолжает работать, пока внутренний цикл не начнет выполняться снова.