how to disable double triggering? Topic is solved

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
OrelB
Posts: 13
Joined: 22 Oct 2017, 05:37

how to disable double triggering?

22 Oct 2017, 06:07

Hello,
I'm new to this wonderful magic and thank you so much for providing such helpful comments!

I have a problem with some of my mouse keys. I think the problem is with the mouse itself, but can't be sure since mousehook shows that everything is in order. I was able to define click and double-click triggers to XButton1 (original try attached). While they work perfectly fine with this key, every time I try to trigger another combination (such as XButton1 & RButton), the double clicking option of the XButton is also activated.

I want to keep the combination (XButton1 & RButton) without activating the other trigger (XButton1 double click).
Thinking this way wrong, I've created a new variable (BCombination1, poor fix ahead) that was supposed to help me. Though I was able to fix the double triggering, I left out without any option to activate it later on :/.
would appreciate any help:

the original code:

Code: Select all


; XButton1
XButton1:: 
	If (A_TimeSincePriorHotkey<1500)
	   MsgBox, XButton1 Double Click
	Else
	   MsgBox, XButton1
Return


XButton1 & RButton:: 
	MsgBox, RButton & XButton1
Return

my poor fix:

Code: Select all


; XButton1

XButton1 & RButton:: 
	BCombination1 := "na"
	MsgBox, RButton & XButton1
	Sleep 3000
	BCombination1 := "a"
Return

XButton1:: 
	If (A_TimeSincePriorHotkey<1500) & BCombination1:= "a"
	   MsgBox, XButton1 Double Click
	Return
	If BCombination1:= "a"
	   MsgBox, XButton1
Return

teadrinker
Posts: 4326
Joined: 29 Mar 2015, 09:41
Contact:

Re: how to disable double triggering?

22 Oct 2017, 09:19

Hi, OrelB,
Try:

Code: Select all

If (A_TimeSincePriorHotkey<1500 && A_ThisHotkey = A_PriorHotkey)
OrelB
Posts: 13
Joined: 22 Oct 2017, 05:37

Re: how to disable double triggering?

22 Oct 2017, 10:59

teadrinker wrote:Hi, OrelB,
Try:

Code: Select all

If (A_TimeSincePriorHotkey<1500 && A_ThisHotkey = A_PriorHotkey)
thanks teadrinker!
Nothing changed unfortunately..
teadrinker
Posts: 4326
Joined: 29 Mar 2015, 09:41
Contact:

Re: how to disable double triggering?

22 Oct 2017, 11:37

For me this works:

Code: Select all

; XButton1
counter := 0
XButton1::
   if (++counter = 1)
      SetTimer, SingleClickHandler, -400
   else if (counter = 2) {
      SetTimer, SingleClickHandler, Off
      SetTimer, DoubleClickHandler, -10
   }
   Return
   
SingleClickHandler:
   counter := 0
   MsgBox, XButton1 Single Click
   Return
   
DoubleClickHandler:
   counter := 0
   MsgBox, XButton1 Double Click
   Return

XButton1 & RButton:: 
   MsgBox, RButton & XButton1
   Return
OrelB
Posts: 13
Joined: 22 Oct 2017, 05:37

Re: how to disable double triggering?

22 Oct 2017, 12:09

teadrinker wrote:For me this works:

Code: Select all

; XButton1
counter := 0
XButton1::
   if (++counter = 1)
      SetTimer, SingleClickHandler, -400
   else if (counter = 2) {
      SetTimer, SingleClickHandler, Off
      SetTimer, DoubleClickHandler, -10
   }
   Return
   
SingleClickHandler:
   counter := 0
   MsgBox, XButton1 Single Click
   Return
   
DoubleClickHandler:
   counter := 0
   MsgBox, XButton1 Double Click
   Return

XButton1 & RButton:: 
   MsgBox, RButton & XButton1
   Return
for some reason, i can't run the script you wrote. i keep receiving an error message and it says that the target label does not exist.. i'm maybe misreading right cause i'm a nooby..
teadrinker
Posts: 4326
Joined: 29 Mar 2015, 09:41
Contact:

Re: how to disable double triggering?

22 Oct 2017, 12:12

Can you show the screenshot of the error message?
OrelB
Posts: 13
Joined: 22 Oct 2017, 05:37

Re: how to disable double triggering?

22 Oct 2017, 12:23

teadrinker wrote:Can you show the screenshot of the error message?
my bad.. i missed some of the code :lol: :cry:
anyway, i'm still receiving the same messages simultaneously every time i press on XButton1 & RButton together :
Picture1.png
Picture1.png (16.58 KiB) Viewed 1459 times
am i doing something wrong?
OrelB
Posts: 13
Joined: 22 Oct 2017, 05:37

Re: how to disable double triggering?

22 Oct 2017, 12:25

if it helps, it seems now that the current second message is of the one click and not the double one- so it seems that we'are heading the right way!
teadrinker
Posts: 4326
Joined: 29 Mar 2015, 09:41
Contact:

Re: how to disable double triggering?

22 Oct 2017, 12:30

Maybe, it depends on your mouse... Try this:

Code: Select all

; XButton1
counter := 0
XButton1 Up::
   if (++counter = 1)
      SetTimer, SingleClickHandler, -400
   else if (counter = 2) {
      SetTimer, SingleClickHandler, Off
      SetTimer, DoubleClickHandler, -10
   }
   Return
   
SingleClickHandler:
   counter := 0
   MsgBox, XButton1 Single Click
   Return
   
DoubleClickHandler:
   counter := 0
   MsgBox, XButton1 Double Click
   Return

XButton1 & RButton:: 
   MsgBox, RButton & XButton1
   Return
OrelB
Posts: 13
Joined: 22 Oct 2017, 05:37

Re: how to disable double triggering?

22 Oct 2017, 12:53

teadrinker wrote:Maybe, it depends on your mouse... Try this:

Code: Select all

; XButton1
counter := 0
XButton1 Up::
   if (++counter = 1)
      SetTimer, SingleClickHandler, -400
   else if (counter = 2) {
      SetTimer, SingleClickHandler, Off
      SetTimer, DoubleClickHandler, -10
   }
   Return
   
SingleClickHandler:
   counter := 0
   MsgBox, XButton1 Single Click
   Return
   
DoubleClickHandler:
   counter := 0
   MsgBox, XButton1 Double Click
   Return

XButton1 & RButton:: 
   MsgBox, RButton & XButton1
   Return
thank you so much for trying to help me. not working unfortunately. i tried the same code with the second button (xbutton2, following code). same error. what about the variable try?

Code: Select all

; XButton1
counter := 0
XButton1 Up::
   if (++counter = 1)
      SetTimer, SingleClickHandler, -400
   else if (counter = 2) {
      SetTimer, SingleClickHandler, Off
      SetTimer, DoubleClickHandler, -10
   }
   Return
   
SingleClickHandler:
   counter := 0
   MsgBox, XButton1 Single Click
   Return
   
DoubleClickHandler:
   counter := 0
   MsgBox, XButton1 Double Click
   Return

XButton1 & RButton:: 
   MsgBox, RButton & XButton1
   Return

; XButton2
counter := 0
XButton2 Up::
   if (++counter = 1)
      SetTimer, SingleCH, -400
   else if (counter = 2) {
      SetTimer, SingleCH, Off
      SetTimer, DoubleCH, -10
   }
   Return
   
SingleCH:
   counter := 0
   MsgBox, XButton2 Single Click
   Return
   
DoubleCHa:
   counter := 0
   MsgBox, XButton2 Double Click
   Return

XButton2 & RButton:: 
   MsgBox, RButton & XButton2
   Return
my first variable try that i mentioned above:

Code: Select all


; XButton1

XButton1 & RButton:: 
	BCombination1 := "na"
	MsgBox, RButton & XButton1
	Sleep 3000
	BCombination1 := "a"
Return

XButton1:: 
	If (A_TimeSincePriorHotkey<1500) & BCombination1:= "a"
	   MsgBox, XButton1 Double Click
	Return
	If BCombination1:= "a"
	   MsgBox, XButton1
Return

teadrinker
Posts: 4326
Joined: 29 Mar 2015, 09:41
Contact:

Re: how to disable double triggering?

22 Oct 2017, 13:11

One more variant:

Code: Select all

; XButton1
counter := 0

#If !mode
XButton1 Up::
   if (++counter = 1)
      SetTimer, SingleClickHandler, -400
   else if (counter = 2) {
      SetTimer, SingleClickHandler, Off
      SetTimer, DoubleClickHandler, -10
   }
   Return
#If
XButton1 & RButton::
   mode := true
   SetTimer, ModeOff, -1000
   MsgBox, RButton & XButton1
   Return
   
SingleClickHandler:
   counter := 0
   MsgBox, XButton1 Single Click
   Return
   
DoubleClickHandler:
   counter := 0
   MsgBox, XButton1 Double Click
   Return
   
ModeOff:
   mode := ""
   Return
OrelB
Posts: 13
Joined: 22 Oct 2017, 05:37

Re: how to disable double triggering?

22 Oct 2017, 14:28

teadrinker wrote:One more variant:

Code: Select all

; XButton1
counter := 0

#If !mode
XButton1 Up::
   if (++counter = 1)
      SetTimer, SingleClickHandler, -400
   else if (counter = 2) {
      SetTimer, SingleClickHandler, Off
      SetTimer, DoubleClickHandler, -10
   }
   Return
#If
XButton1 & RButton::
   mode := true
   SetTimer, ModeOff, -1000
   MsgBox, RButton & XButton1
   Return
   
SingleClickHandler:
   counter := 0
   MsgBox, XButton1 Single Click
   Return
   
DoubleClickHandler:
   counter := 0
   MsgBox, XButton1 Double Click
   Return
   
ModeOff:
   mode := ""
   Return

Works like a charm!! thank you so much!!! :dance: :dance: :dance:
i changed the variables specifically to xbutton1 since i want to do the exact same thing to xbutton2 and other buttons i have.
Everything you wrote works great on xbutton1 even with the modified syntax. however, the syntax of xbutton2 (same code, just referring to xbutton2 instead of one) does nothing :wtf: . the code looks like that:

Code: Select all

; XButton1
XB1counter := 0

#If !XB1mode
XButton1 Up::
   if (++XB1counter = 1)
      SetTimer, XB1SC, -400
   else if (XB1counter = 2) {
      SetTimer, XB1SC, Off
      SetTimer, XB1DC, -10
   }
   Return
#If
XButton1 & RButton::
   XB1mode := true
   SetTimer, XB1ModeOff, -1000
   MsgBox, RButton & XButton1
   Return
   
XB1SC:
   XB1counter := 0
   MsgBox, XButton1 Single Click
   Return
   
XB1DC:
   XB1counter := 0
   MsgBox, XButton1 Double Click
   Return
   
XB1ModeOff:
   XB1mode := ""
   Return


; XButton2
XB2counter := 0

#If !XB2mode
XButton2 Up::
   if (++XB2counter = 1)
      SetTimer, XB2SC, -400
   else if (XB2counter = 2) {
      SetTimer, XB2SC, Off
      SetTimer, XB2DC, -10
   }
   Return
#If
XButton2 & RButton::
   XB2mode := true
   SetTimer, XB2ModeOff, -1000
   MsgBox, RButton & XButton2
   Return
   
XB2SC:
   XB2counter := 0
   MsgBox, XButton2 Single Click
   Return
   
XB2DC:
   XB2counter := 0
   MsgBox, XButton2 Double Click
   Return
   
XB2ModeOff:
   XB2mode := ""
   Return
if it's not trouble, can you tell me how can i match the code to additional buttons other than xbutton1?
teadrinker
Posts: 4326
Joined: 29 Mar 2015, 09:41
Contact:

Re: how to disable double triggering?  Topic is solved

22 Oct 2017, 15:50

Code: Select all

; XButton1
XB1counter := 0
XB2counter := 0

#If !XB1mode
XButton1 Up::
   if (++XB1counter = 1)
      SetTimer, XB1SC, -400
   else if (XB1counter = 2) {
      SetTimer, XB1SC, Off
      SetTimer, XB1DC, -10
   }
   Return
#If
XButton1 & RButton::
   XB1mode := true
   SetTimer, XB1ModeOff, -1000
   MsgBox, RButton & XButton1
   Return
   
XB1SC:
   XB1counter := 0
   MsgBox, XButton1 Single Click
   Return
   
XB1DC:
   XB1counter := 0
   MsgBox, XButton1 Double Click
   Return
   
XB1ModeOff:
   XB1mode := ""
   Return

; XButton2
#If !XB2mode
XButton2 Up::
   if (++XB2counter = 1)
      SetTimer, XB2SC, -400
   else if (XB2counter = 2) {
      SetTimer, XB2SC, Off
      SetTimer, XB2DC, -10
   }
   Return
#If
XButton2 & RButton::
   XB2mode := true
   SetTimer, XB2ModeOff, -1000
   MsgBox, RButton & XButton2
   Return
   
XB2SC:
   XB2counter := 0
   MsgBox, XButton2 Single Click
   Return
   
XB2DC:
   XB2counter := 0
   MsgBox, XButton2 Double Click
   Return
   
XB2ModeOff:
   XB2mode := ""
   Return
OrelB
Posts: 13
Joined: 22 Oct 2017, 05:37

Re: how to disable double triggering?

23 Oct 2017, 14:19

teadrinker wrote:

Code: Select all

; XButton1
XB1counter := 0
XB2counter := 0

#If !XB1mode
XButton1 Up::
   if (++XB1counter = 1)
      SetTimer, XB1SC, -400
   else if (XB1counter = 2) {
      SetTimer, XB1SC, Off
      SetTimer, XB1DC, -10
   }
   Return
#If
XButton1 & RButton::
   XB1mode := true
   SetTimer, XB1ModeOff, -1000
   MsgBox, RButton & XButton1
   Return
   
XB1SC:
   XB1counter := 0
   MsgBox, XButton1 Single Click
   Return
   
XB1DC:
   XB1counter := 0
   MsgBox, XButton1 Double Click
   Return
   
XB1ModeOff:
   XB1mode := ""
   Return

; XButton2
#If !XB2mode
XButton2 Up::
   if (++XB2counter = 1)
      SetTimer, XB2SC, -400
   else if (XB2counter = 2) {
      SetTimer, XB2SC, Off
      SetTimer, XB2DC, -10
   }
   Return
#If
XButton2 & RButton::
   XB2mode := true
   SetTimer, XB2ModeOff, -1000
   MsgBox, RButton & XButton2
   Return
   
XB2SC:
   XB2counter := 0
   MsgBox, XButton2 Single Click
   Return
   
XB2DC:
   XB2counter := 0
   MsgBox, XButton2 Double Click
   Return
   
XB2ModeOff:
   XB2mode := ""
   Return
Genius! :clap:
Thank you so much for all of your help!

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: Anput, doodles333, jameswrightesq, sofista and 292 guests