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