Скрипт из девятого комментария, к сожалению, никак себя не проявил. Не знаю, почему.
На данный момент использую следующий скрипт, но, опять же, работает только отправление "с", а также действие, при котором последовательно отправляются клавиши "а" и "b", вне зависимости от того, в какую сторону было совершено движение курсором.
IfWinActive, ahk_pid 4916
MouseGetPos, x, y
IF ((x<180) OR (x>1950)) OR ((y<0) OR (y>40))
~LButton::
Send {c}
Send {a}
~LButton Up:: Send, {b}
Наверное, решить этот вопрос можно тем, чтобы не отправлять клавиш при нажатии ЛКМ, а запоминать координаты совершенного клика, и в зависимости от того, с какой из сторон от места отпускания ЛКМ окажутся эти координаты, возвращаться в эти координаты и отправлять соответствующую клавишу. Суть в том, чтобы буква "a" всегда оказывалась левее буквы "b", вне зависимости от того, при каких условиях они были отправлены (при нажатии или при отпускании). На всякий случай, если останусь непонятым, опишу предполагаемое в виде порядка действий:
В пределах координат x180-1950/y0-40 относительно целевого окна совершается нажатие на ЛКМ в координатах x200/y20, которые AHK должен запомнить. По клику ничего не отправляется. Далее, не отпуская ЛКМ, курсор перемещается и ЛКМ отпускается, например, в координатах x180/20, следовательно, при отпускании ЛКМ, отправляется клавиша "a", т.к. конечные координаты расположены левее начальных. Далее курсор возвращается на начальные координаты (которые были записаны в памяти) и отправляет нажатие клавиши "b".