Two addons come to mind.

Jamba-Macro, part of the Jamba-0.5 suite. It is very powerful - you can substitute variables/toon tags in your macros. I like it because I wrote it, a little biased here...

http://www.dual-boxing.com/showthread.php?t=23377

http://www.dual-boxing.com/showthread.php?t=24694

Also, BindPad will do what you want:

http://wow.curse.com/downloads/wow-a.../bind-pad.aspx