I'll post the script I used while elemental. It's not perfect but but I liked the idea of it (which I stole from the elemental thread).
#ifWinActive World of Warcraft
{
$3::
$!3::
$+3::
Loop
{
if not GetKeyState("3", "P")
break
if GetKeyState("LAlt", "P")
Send !3
else if GetKeyState("LShift", "P")
Send +3
else
Send 3
Sleep 1
}
return
}
I would bind LB to '3', CL to 'Alt+3', and my macro which tries to pop all CDs to 'Shift+3'. I just hold down '3' and LB spam starts, hold alt every 4th cast to CL then release as CL is casting, and hold shift whenever one of my CDs come up. The same sort of thing could be used for most casters I think, maybe even healers with different ranks.