Условно перехватить щелчок мышки в Autohotkey?

Я хочу иметь сценарий, который будет перехватывать щелчок мыши и вместо этого отправлять нажатие клавиши, но только тогда, когда клавиша Capslock включена. Я хочу, чтобы щелчок мыши отправлялся нормально, если клавиша Capslock выключена.

В настоящее время я сделал это:

$LButton::
if GetKeyState("CapsLock", "T") = 1
    send, {a}
else
    send, {LButton}
return

Проблема в том, что когда клавиша Capslock отключена, левая кнопка может нормально щелкать, но не может перетаскивать.

Если я изменю $ на ~, он сможет перетаскивать, но он также выполнит щелчок при включении клавиши Capslock.

Есть ли способ заставить скрипт полностью игнорировать щелчок, если клавиша Capslock отключена?


person Sakuya    schedule 02.12.2013    source источник
comment
Хороший вопрос. +1 Хотел бы я знать, что тебе сказать. Что ж, в вашем текущем скрипте, если capslock выключен, он отправляет левый щелчок, потому что это то, что вы говорите ему. Если вы хотите, чтобы он игнорировал левый щелчок, не отправляйте LButton, - я думаю, что я упускаю вашу точку зрения.   -  person bgmCoder    schedule 03.12.2013


Ответы (2)


#If AHK_L даст вам то, что вы хотите:

#If GetKeyState("CapsLock", "T")
LButton::Send, a

С этим кодом вам не придется беспокоиться о том, что происходит, когда Capslock отключен. AHK перехватит щелчок на более низком уровне и позволит ему просочиться.

person MCL    schedule 03.12.2013

Как использовать символ UP.

SetBatchLines, -1   ; you pretty much have to include this to speed up the execution

LButton::
    if( GetKeyState("CapsLock", "T") )
        tooltip, ignore left click
    else
        send, {LButton Down}
return


LButton UP::
    send, {LButton Up}
return
person this    schedule 03.12.2013