У меня есть комбинация клавиш, написанная как ~XButton1 & XButton2:: . Когда я нажимаю комбинацию, событие XButton1 не отфильтровывается. Это может вызвать, например, мой браузер, чтобы вернуться на страницу, когда я этого не хочу.

Согласно документам, удаление ~ приведет к тому, что ключи не будут переданы остальной системе. Однако когда я это делаю, XButton1 никогда не передается в систему, независимо от того, заканчиваю я комбо или нет.

Вот поведение, которое я хотел бы увидеть:

AHk должен буферизовать первое событие XButton1 когда оно получено. Если я нажмите XButton2 передать ничего в системе. Но, если я не XButton2 , отправьте быстрый XButton1 вверх и вниз.

Есть ли способ получить такое поведение?

2 ответа2

0

Как пояснили в AutoHotkey документацию по &, используя a & b рисунок вызывает ключ , чтобы потерять свою первоначальную функцию. Для того, чтобы сделать ключевую работу по выпуску , когда он используется в одиночку, вы можете сделать горячую клавишу , которая отображает на саму себя подобно a

В вашем случае вы можете попробовать что-то вроде

XButton1 & XButton2:: все, что вы хотите
XButton1::Send {XButton1}

0

Вы должны попробовать поиграть с функцией KeyWait и переменными A_PriorHotKey и A_TimeSincePriorHotkey, как описано в примере № 4 документации KeyWait.

; Example #4: Detects when a key has been double-pressed (similar to double-click).
; KeyWait is used to stop the keyboard's auto-repeat feature from creating an unwanted
; double-press when you hold down the RControl key to modify another key.  It does this by
; keeping the hotkey's thread running, which blocks the auto-repeats by relying upon
; #MaxThreadsPerHotkey being at its default setting of 1.
; Note: There is a more elaborate script to distinguish between single, double, and
; triple-presses at the bottom of the SetTimer page.

~RControl::
if (A_PriorHotkey <> "~RControl" or A_TimeSincePriorHotkey > 400)
{
    ; Too much time between presses, so this isn't a double-press.
    KeyWait, RControl
    return
}
MsgBox You double-pressed the right control key.
return

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .