Como posso ajustar a filtragem de eventos de mouse do AutoHotkey?

0

Eu tenho uma combinação de teclas escrita como ~XButton1 & XButton2:: . Quando pressiono a combinação, o evento XButton1 não é filtrado. Isso pode fazer com que, por exemplo, meu navegador volte uma página quando não quiser.

De acordo com os documentos, remover o ~ fará com que as chaves não sejam passadas para o resto do sistema. Quando faço isso, no entanto, XButton1 nunca é passado para o sistema, quer eu termine o combo ou não.

Este é o comportamento que eu gostaria de ver:

O AHk deve armazenar em buffer o primeiro evento XButton1 quando for recebido. Se eu fizer pressionar XButton2 , não passe nada para o sistema. Mas, se eu não pressionar XButton2 , envie um rápido XButton1 down-and-up.

Existe alguma maneira de obter esse comportamento?

    
por zildjohn01 21.08.2010 / 23:22

2 respostas

0

Como explicado na documentação do AutoHotkey sobre o & , o uso do padrão a & b faz com que o a chave para perder sua função original. Para fazer com que a chave a funcione na versão quando usada sozinha, você pode criar uma tecla de atalho que seja mapeada para ela mesma como a::Send {a} .

No seu caso, você pode tentar algo como

XButton1 & XButton2:: o que você quiser
XButton1::Send {XButton1}

    
por 22.08.2010 / 17:45
0

Você deve tentar tocar com a função KeyWait e as variáveis A_PriorHotKey e A_TimeSincePriorHotkey, como explicado no exemplo # 4 do Documentação do 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
    
por 21.08.2010 / 23:59

Tags