Expounding the autohotkey solution a little more, this is the basic script that I use:
#ifWinActive World of Warcraft
{
$1::
Loop
{
if not GetKeyState("1", "P")
break
Send 1
sleep 1
}
return
$2::
Loop
{
if not GetKeyState("2", "P")
break
Send 2
sleep 1
}
return
Notes:
* If you want to add more keys to this, simply copy over everything from line 3 ("$1::") to line 11 ("return") and replace all instances of "1" with your desired key.
* This works really well for spamming a single spell without having to mash the button
* This also works well for firing off a single (instant) spell as soon as you come in range (say, Moonfire on a target you're pursuing)
* You'll probably want to get an addon or macro to clear error messages, as you will be spammed
* I've used this in tandem with the macro below to great effect on my Ret and Prot Paladins, since all of their abilities have cooldowns:
/castrandom Judgement of Wisdom, Exorcism, Crusader Strike, Divine Storm, Consecration
/castrandom Judgement of Wisdom, Consecration, Holy Shield, Hammer of the Righteous
Technically, you'd get more mileage out of doing the rotation by hand, but I'm willing to trade a little performance for a lot less hassle.
* You're going to get into trouble if you try this with a no-cooldown spell, like so:
/castandom Icy Touch, Plague Strike, Scourge Strike
There's nothing to make the macro ignore IT or PS if the diseases are already up, and since the runes will activate one at a time, you're almost never going to see a Scourge Strike ever get cast. The same would apply to a
"/castrandom Living Bomb, Frostfire Bolt" macro as well; half the time you'll be recasting LB with nothing to show for it.
* This script also has the nasty side-effect of making it difficult to type single 1's and 2's when chatting. You can get around that by increasing the Sleep veriable, but I just disable the script in town or type explicit 'one's and 'two's in combat, since increasing the sleep may introduce some delay in casting if the castrandom keeps picking an unavailable spell.
* Finally, while the first line is supposed to enable the script only when your active window is World of Warcraft, it also activates when you're browsing the WoW forums, since "World of Warcraft" also appears in the window title.
Help needed:
* Is there some way to 'turn on/off' a script programmatically? I want to assign it to a key instead of right-clicking the script's taskbar icon and selecting "Suspend Hotkeys"
* Is there some way to increase the specificity of the window title detection so that "World of Warcraft - English (NA) Forums -> Damage Dealing - Mozilla Firefox" isn't included in "World of Warcraft"?