GSE and AutoHotkey

I am going to preface this with a big why. Why bother with Gnome Sequencer Enhanced (GSE) and AutoHotkey (AHK)? For me this comes down to the basic fact that WoW is a bloat game. By that I mean they have far too many spells for single press keybinds. I remap my keyboard and squeak out about 14 keybinds: 1 2 3 4 5 6 q y g h j z x n. I can hit all these keys with my left hand without looking at the keyboard no problem. Going beyond those is a far reach. Things like a s d f c b are reserved for other hotkeys. I can add u I k and F1-F4, but typically I have to look to hit those. Once you get above around 14 distinctly different blind keys then you have to look at the stupid keys or mouse click, which puts your focus on the UI rather than the game and you wind up standing in stuff on the ground.

Anything that can be macroed off of a single spell per bind assignment then recovers binds and lets me function. Having a mash macro that you can hit blind to run through the basic rotation then helps out tremendously as you do not have to bind each action in that mash macro sequence.

Now in terms of a general philosophy of macros the mash macro is very specific. For my Warlock, I would want the mash macro to apply Agony, Corruption, keep 1 stack of UA up, and apply haunt, and shadow bolt otherwise. Maybe even pull UA out of the mix entirely, but I think 1 stack is not that bad. A good mash macro would load up your target with that stuff.

Where the decision for me comes in is how to burst and load beyond that. So extra stacks of UA, I would still need, and apply on a separate keybind. If I want to burst, I need all DoTs up, need to hit PS, Darkglare, then Deathbolt. Icy says do not delay Deathbolt but prepare for it. I find that to be crap. You want to deathbolt a hefty target that needs to die now and I would rather delay and make that mission happen than automate.

So when these macros at places like lazy macros tries to automate all the cooldowns into a mindless macro, I think they ultimately fail because it puts things on CD when you should be holding them to achieve a particular goal. Thus my philosophy is strip most of those CDs from the mash macro and use my brain when to use them, but the things you can cast over and over. Mash macro does the anytimes and short CDs. The rest is up to you.

So for my Warlock I would have PS, UA, Seed, drain life, boom macro, fear, enslave demon, command demon ability (spell lock for felhound), petattack, darkglare, shadowfury all on separate binds.

The boom macro then for me is a priority GSE macro with PS, Darkglare, and Deathbolt. I load it up with DoTs, get 5 stacks of UA, then mash the boom macro to have a big freakin deathbolt take it down.

Some will worry about bans. First off, AHK. If you are worried about banning, read the thin gray line. Note GSE by itself is fine. Specific paragraphs of relevance

What happens next is the grey line. Hardware manufacturers like Razer and Logitech include tools with their keyboards to be able to program the keyboard to a certain extent. These can be configured that when you hold down a key it will send multiple hardware events to WoW. Software applications like AutoHotKey, PunchKey, Keyboard Maestro and some home grown Java code available on these forums can also perform the same behaviours. What we know is that when these tools are used to remove the RSI (Repetative Strain Injury) inducing behaviours of spamming the same keyboard button over and over. No one has been banned for using these tools in this behaviour.

Some of these tools however have the ability to do more than cause a button to repeat over and over. Some of them can detect pixels at locations and then perform decisions. You as an individual may choose to use these functions but know that by doing so you are in violation of WoW’s ToS and do so at your own risk. We as a community will not tolerate any posts or discussions on macros written in third party tools like those mentioned above “to give the perfect rotation” as it moves us from the grey line over it onto the wrong side of WoW ToS. If tools like the ones above are abused and then enforced it makes the game less enjoyable for a lot of people for a minimal advantage.

So GSE + AHK with a button spammer macro are fine. Repetive strain from mashing the 1-key is something they want to avoid and will tolerate. Botting starts when you have it detect things on screen.

Why then AHK? If I use these macros without AHK, I have to mash them hard over and over and it just wears my fingers out. So having AHK handle the mashing for your mash macro seems fine.

References on AHK

  1. Download it here .
  2. Video on how to do a spammer key. This key works as long as you are in WoW and pressing and holding it down.
  3. An alternative script to press the 1 key to turn on the spam, then press it again to turn it off

#IfWinActive World of Warcraft
; to force the hotkey only to Wow

Suspend On
keywait 1
Onetoggle := !OneToggle
While (OneToggle)
{ Send, 1
sleep, 150
Suspend Off

; to end the WoW key binding

Note the semicolons are comments and not needed. Also adjust the 150 sleep timer to around 100. Most of the macros I see at Lazy macros run at 100ms, and this is where you change that timer.

If you are going to set 1 up as your spammer, then you drag the lazymacro to the 1 key. Pressing 1 then will spam that macro.

OK now on to GSE. You can get it from Twitch. If you just want to use someone else’s stuff, google ‘lazymacro affliction’ for example to pull up where on the lazymacro site authors are posting macros for the affliction spec. Note that you want to use 8.0 macros for BFA, not the old stuff. You can search for whatever spec you want.

What now follows are my notes that I took as I went through this amazing tutorial video on GSE. This is more my trying to understand how GSE works so I can modify macros I get from lazymacros. Forgive the brief bulletized notes, but I hope you can figure it out.

Load up macro example and modify

Configuration tab is where you say what spec it works for. I do not think this is critical, but it helps people know what to use.

New button will let you create different macros for different situations. For instance I could set up the 1 macro for default, pvp with Haunt, and have the 2 macro work with the sacrifice spec for raids, mythics and dungeons. Thus I can keep the same macro on the same button and where I am changes its use.

Click on the numbered button to edit the basic sequence.

Step function pull down, that says what kind of macro you want. Step function goes down a list, trying to do the next one in the sequence, and if it can not it goes to the next. Thus try action 1, if not available, do action 2, or after executing 1 doing 2 and so on down the list. It remembers where you are in the sequence. Priority list will go to the top of the list after each keypress and check again.

The inner loop limit is how many times it will do the sequence before reseting to the top.

The KeyPress section does this stuff every key press. You can pre-empt the usual sequence with a modifier action here like /cast [mod:ctrl] Unstable Affliction. So if I put my macro on the 2 key, if I hold control+2, it would cast UA instead of the usual sequence. DO not put spells here, it lags stuff out, keep non GCD stuff here. Personally I hate mods and will not use them. I think people put mods in with button spammer toggles so they can tap the mod and have it do something else. I suppose this beats toggling off the spammer then hitting the separate keypress.

The KeyRelease box is the same as the KeyPress box, but does it after key release. Only can put non GCD stuff in KeyRelease.

So KeyPress/KeyRelease are for each punch of the key.

PreMacro and PostMacro are what it does before and after each loop. So it does PreMacro, then loop iteration 1, then PostMacro, then PreMacro for loop 2, then loop 2… and so on. In the video I watched, he had mend pet in the post macro, Trueshot in the pre macro. PostMacro is where melee classes typically put /startattack. Premacro is where you typically put targetting and pet stance stuff.

The sequence box is where most of your macro goes in. Typically if it is a priority list, you put things in the order as defined by Icy Veins here. If you have the priority stack macro, you only need one cast line per spell. If you have a sequence macro, and you want to say cast UA 2x, then you have to have it in there twice in the sequence box.

Apparently you do not need to put in equipment punches in the main macro. You can just click on or off the equipment piece on the right side. So for my main mash macro, odds are I do not want it popping trinkets, so I would uncheck everything. But for my burst macro, I want it to pop trinkets, so I just check those. This means you do not have to have the classic /use 13 and /use 14 in the macro.

Now a lot of the art in this macro stuff comes down to making a sequence that can be repeated. It does not look like the macro can detect if a debuff is already applied, so the way you get this to work is time how long the debuff lasts and fit as many anytimes in there as filler until the debuff drops. This takes work on the target dummy and DPS meters, and it may be that you have to pull something out of the sequence because it simply can not be automated.

Also the other big central issue seems to be that if you have a big long list, you have to mash fast. Say you have a 10 action sequence. It can not do 5 things in the list, so a good 5 of your keypresses were wasted. If they were all in a row, and it took you longer than the GCD, you have dead time. People get around this by using masher 3rd party software like AutoHotkey. People love it and risk it though because they can set up AutoHotKey to mash the 1 button 10 times per second which then moves through a long ass sequence list with no issues. GSE by itself is not a violation and it is perfectly fine. One keypress per action.

GSE then works like this. Press key. It does all of the KeyPress, then does one action from the Sequence, then all from the KeyRelease. Next press does the same Keypress, but this time it goes down 1 in the Sequence, and does the same KeyRelease.

His example of how to sequence is this in the sequence box

/cast Spell 1
/cast Spell 2
/castsequence A, B, C
/cast Spell 3

The sequence order then is this

1 2 A 3 1 2 B 3 1 2 C 3 1 2 A 3 and so on. You can play with the timing by how you set these up.

Another example

/cast Spell 1
/castsequence A, B, C
/castsequence D, E, F
/cast Spell 2

This generates this order,

1 A D 2 1 B E 2 1 C F 2 1 A D 2 and so on.

Note that as it goes down this sequence, it will skip any action not available. So if B is on CD, then sequence looks like this

1 A D 2 1 E 2 1 F 21 D 2 and so on. This is pretty important because the first cast sequence will not execute again until B comes off CD, and this locks it up.

THings that do not work with GSE- reset timers , or reset by target.

Timing example

Spell A has a 2s CD
Spell B needs to be cast every 15s

/castsequence b, a, a, a, a, a, a, a

So it casts b, then goes through 7x a casts at 2s each before it does b again. This is how you do timing.

I think good macro design then is going to amount to trying to strip down a bunch of possible deadspace keypresses. If you have a really long sequence, then you will have to mash faster to get it to work, and if you can simplify it, it might work better.

For WoW I’m actually not using AHK, but for a lot of other games I am. Mainly those that require you to keep a button down for a long period of time, or those that don’t have autorun.

It’s great for that :slight_smile:

Edit: I can just as well include those two. They’re programmed for mouse4 and mouse5:
Xbutton1::Send % "{w " . ( GetKeyState(“w”) ? “Up}” : “Down}” )
Xbutton2::Send % "{Click " . ( GetKeyState(“LButton”) ? “Up}” : “Down}” )

If Blizzard is so hung up on one action per button press (which is fine) they really need to embrace the concept of sequences and build it into the client. I think it was Aion that did it where they had different powers based off sequences that were configurable. So pressing 1-1-1 would cast one sequence of three spells, but 1-2-1 would start with the same spell, but the latter two were different because 2 chained into a different spell than 1 did.

I don’t think every power needs to automated; but when you have powers that you only use in front of or behind another power, but they are on different timers, we should be able to put them on the same key to fire in sequence. And not through a macro; that gates the capability behind those who want to dig into pseudo-programming to get what they want done. There’s nothing that a macro can do that cannot be configured with simple GUI.

Uh. WoW already has /castsequence in macros, unless that has been removed.

Of course that still requires you to hit the same button several times, which is where AHK comes in.

WoW macros are actually quite powerful, able to determine whether you’re trying to click on a character for instance.

And as for your worries about macros being only for ‘programmers’, there are plenty of websites out there with lists of premade macros.


There were two versions of key spammers- one where you hold it down and as long as you hold it down it spams, and the other where you toggle it on and off. Which version is yours? Thinking about keying it in, might be faster to have the dead man switch version which turns off on release. Otherwise you have to toggle it on, toggle it off, hit another ability etc.

They used to have a priority macro. I remember making them for my warrior with the default macro system. I put the highest priority stuff up top, and the lowest at the bottom. Worked great until Blizzard changed the rules. What GSE does is bring that back. There is no priority system in the actual macro system right now.

So for my warlock I did something like this for the basic Dot-em-up macro

/castsequence reset=3/tar agony, haunt, corruption

Since I have perma corruption, the need to refresh it is low, particularly if it is applied by Seed of Corruption. So this kind of macro would try to dot it up.

The problem here though is agony and corruption are not on CDs, but Haunt is. So if you get to the sequence part where haunt is going to go, and it is on CD, the sequence just pauses there and hangs.

Again this is where GSE comes to the rescue. You can set it up in a top down sequence, and if it is not up, GSE goes to the next one. If you want it to hang on something on CD, then you can still put in the sequences.

So in the examples I had where you mix and match top down and castsequence in GSE, you can do the kind of thing you describe. Players found a way to do this.

All I really want to do is remove the moronic anytime stuff to simple rotations.

Sny, the ones I posted are simple toggles. They send the AHK command up or down depending on whether that something is already up or down :slight_smile:

Xbutton1::Send % "{w " . ( GetKeyState(“w”) ? “Up}” : “Down}” )
Send Command Text "w " + if w is down then “up” else “down”

OK thanks. I suppose I need to try out both versions for myself. Looks like this spams the w key for move forward. If I want to change it to say the 1 key, I just replace w’s with 1’s right?

Doesn’t work. Take, for example, Crash Lightning and Stormstrike from Enhancement Shaman. Crash Lighting has a 6 second cooldown, Stormstrike has a 9 second cooldown unless a proc puts it on instant cooldown.

So there’s no time where you’d want to cast Stormstrike when Crash Lighting is off cooldown, but there are times where you can cast Stormstrike when Crash Lighting is on cool down.

Castsequence used to deal with this by doing cascading past spells on cooldown until it hit one that wasn’t and fired that one and only that one. Then Blizzard removed that.

That isn’t my point. My point is opening up a test dialog to enter text into box to create a new button to then drag onto the bar is something that a great many players won’t dive into, even if they have sites giving them premade macros. Because it isn’t visual. And there is no reason for it to be. There is nothing they do that cannot be served by drag/drop + checkboxes.

Just as an example I was a programmer back in the naughties, these days I live in SQLLand 8-12 hours a day at work. I scrolled around your post and Noped right out. My wife, who has far less patience for such things, probably wouldn’t have even opened your post. Can I do it? Sure. Do I want to? Nope, I’m playing this game to get away from the 8-12 hours of trying to make computers do what I want them to do, not to recreate my day.

It doesn’t spam anything, it toggles the ‘down’ state of the key. So basically, when you hit (in this case mouse4) it’ll check whether the key in up or down state, and toggle that.

So it’s equivalent to holding down the W key. Not spamming it :slight_smile: Hence it makes a good autorun replacement for games that don’t have it.

Same goes for the other one, which holds down mouse1 for me, which is very useful for games that want me to dig an awful lot while holding down a mouse button, which will pretty much leave me with extremely painful joints. So a toggle to turn on/off holding down the mouse button makes my games playable.

EQ2 actually does that quite nicely, where you can drag and drop abilities or items into a macro.

1 Like

Hey Splutty,

Don’t think this will work so well for spammers then. They typically like to fine tune a wait time between key presses with 100ms being pretty close to optimal. I see no wait in your sequence, so I suppose it might make things not work.

Thanks for the excellent review of using AHK in WoW. It’s been a long time but I used to use it years ago in EverQuest simply to automate working on raising various skills that tended to lag behind in typical gameplay without sitting down to cast them, etc. over and over and over. I had a surgery on my left arm due to ulnar nerve compression and I need to pay attention to factors conducive to RSI and try to mitigate them.

I would agree that WoW needs improvement in terms of simplifying its combat system, not to dumb it down and reduce what should be a fun and engaging experience but to make it more accessible to more players. I think tools to help those who wish to maximize their efficiency are fine and are even a fun thing unto themselves for some players. However, mere mortals with busy lives, etc. should be able to hold their own without needing to resort to in depth study of macros and third party apps to be able to join in the majority of content and not be at a substantial disadvantage or drag upon their group or raid.

That’s just my two cents. The comments above have merit in that very many players not only of WoW but other games will never make even the simplest macros using ingame tools, never mind learning and using external options.

Even myself, a retired senior software engineer who is certainly capable of rolling my own anything with software does not want to do this generally. It’s not that I can’t. I can. I can work on my car too but I gave that up decades ago. I don’t want to do that. I don’t want to devote my precious time to it. When I play a game, I want to log in and play a game, not program the damned game.

So, I do appreciate both sides of this coin here is what I wanted to add to the conversation,

Your take on this stuff Syndeelee, where you simply want to remove RSI inducing mindless button mashing but still be engaged in active decision making that is where learned skills actually come into play is exactly why I’d agree with others that Blizzard needs to address the button mashing aspects in some fashion that mitigates the mindless as much as possible while preserving the thinking player’s game if you will. That’s the holy grail to shoot for and I don’t claim it is an easy goal for them but it certainly is an important and worthy one.

Hey Kaid,

I have been going down this path more and have been putting what I learn in this thread on WoW Wiki. For me it is a fun intellectual challenge. I start with a canned macro I see from LazyMacros. To find one there, just click your class, click the 8.0 link, and import strings from the threads and try them out on a target dummy.

From there I typically try to modify it from the dead man switch spammer they usually are set up for to my toggle. I open it up in GSE in the game and see what is in it. Anything in the mods for KeyPress I will typically either toggle in one of the 3 toggles or put in something I can hover over.

From there if I play the class a lot, I will start making my own sequences that do what I want. In the thread on WoW Wiki I linked, I have good macros for Affliction Warlock and Enhancement Shaman that I have play tested and work well. Usually in this stage I go to a target dummy and play around with where it is in the order, or add in a cast sequence to refresh things. I regularly edit this thread as I update macros

A good macro for me will automate the repetitive stuff. Short CDs that need to be kept on CDs, anytimes that need to be cast as filler, that sort of thing. Priority macros can be great for procs, and sequences can be great for keeping debuffs/DoTs up, and you can hybridize these some. I want that thing mashing based on circumstance, be it ST/AOE or builder/spender or burst. My decisions are when to burst, when to flip from ST to AOE, when to go from building to spending. This lets me watch the battlefield more as less of my focus is wrapped up in maintaining a rotation.

I know the top tier players who can micromanage rotations are going to beat me if they pull it off. This will never beat those guys. But where it really helps is keeping us competitive as we get older. We use our brains to compensate for our reduced twitch play.

I am though on a learning process here, and am figuring out how to manage some of the side issues with these such as mouseover issues with toggle spammers.

Well, it is good of you to take all the time you do to share what you learn doing this and also the macros themselves so some folks can benefit via plug and play even if they don’t know a lot about how they work. I remember before how you’d often share advanced info about playing various classes, encounters, etc. I decided to return to Norrath for now as I just love the place and always will. It’s hard because I love Azeroth too but there just is not enough time for everything I wish I could do. That’s why I was here poking around on this forum. I was thinking about what to do but I am going to enjoy Norrath whilst the getting is good. Have fun and keep up the good work! For the Horde!!!

By the way, I imagine I will be back again at some point. I have a lot of characters including high level ones from years of play along with the many toys, twinks for alts, etc. we all acquire over time. Something about that has a way of pulling one back to play with the stuff you already accomplished, you know? For now though, I’ll be off adventuring elsewhere and hope the Horde crew has a great time per usual with the new content. :smile: