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
Connect With Us