works for me. Maybe there are multiple instances of the script running (as you don't have a kill switch). Did you kill the running instance via task manager after every test?
BTW: You can "debug" it with MsgBox like so.
#include <Constants.au3>
MsgBox($MB_SYSTEMMODAL, "Bridge Tool", "Start")
HotKeySet("+m", "Bridge")
$bridge = False
Func Bridge()
$bridge = Not $bridge
If $bridge = True Then
Send("{CTRLDOWN}")
Send("{s down}")
MsgBox($MB_SYSTEMMODAL, "Bridge Tool", "bridge = True")
Else
Send("{s up}")
Send("{CTRLUP}")
MsgBox($MB_SYSTEMMODAL, "Bridge Tool", "bridge = False")
EndIf
EndFunc
While 1
If $bridge = True Then
Sleep(2000)
MouseClick("right")
MsgBox($MB_SYSTEMMODAL, "Bridge Tool", "in while loop ...")
EndIf
WEnd
Br
Kurt