Tuesday, September 28, 2010

Keybindings and Macros Galore

I'm not exactly the first person to ever write a post about key bindings. Rather than focusing on exact key bindings, I'll share some of my thoughts regarding how I make up the system.

Muscle Memory

When playing a game such as World of Warcraft, you develop something called "Muscle memory". I'm not sure exactly how it works, but I believe it is something like this: When you decided to activate a certain ability in WoW, your brain does not consciously connect which ability is on which key binding. You have developed a muscle memory that allows your brain to just decide which ability to use, and then the fingers do the rest. Perhaps the connection is in the nerves of your hand, or your spine?

If you lack the muscle memory for a given class, you need extra time to connect the ability to the key binding you want to use. In some cases, you even need to look for the key on the display.

High level PVP players can often play several classes at top level. However, even they have the problem that they can't maintain a muscle memory for too many classes at the same time. Their reaction time is superb, but their response time suffers from the extra time they need to figure out the key binding.

A semi-counter for this is to have key bindings which are similar for all characters. It does not automatically make you better at the game, but I believe it personally helps me learn the key bindings faster... or re-learn them into my muscle memory whenever I switch class (again!).

Everything available

Even if you only play a single class, you can perform better if you need less movement of the hand to do what you want to. If your rotation requires you to often hit 1 and G, for example, you will probably be a bit faster if you change it to two keys next to each other, after some time learning the new keys.

Re-learning time for key binding

Before every expansion, during the beta, I look up all abilities for classes that either have gone through big modifications, or have gotten some new abilities added as part of the main rotation (at least buttons that need to be hit regularly), or just new classes I intend to level, like a warrior this time. Then I sit down with pen, paper, and a list of all abilities of a given class. After about two hours (usually split into several half-hour sessions) I've set up the key bindings as I want them in the next expansion.

However, that often means I've changed a lot of abilities around. It can be a real pain to learn a new set of key bindings. It takes a lot of time for your muscle memory to forget the old key bindings and replace them with the new, leading to a lot of circumstances where I end up hitting the wrong button at a critical moment. However, levelling is the best time to make such a change, as you usually play a lot of solo and only yourself suffer from the mess-ups.

It also takes a certain mindset to successfully do it. If you constantly irritate yourself over the messed-up keybindings, you're probably better off with the old. You need to think of the learning as a useful process and not just an irritating one, or the irritation will prevent you from learning effectively.


I have remapped the movement keys for all first-person shooter games and WoW from WASD (that is, forward with W, strafe left with A, etc) to ESDG (forward with E, left with S, etc). It took some time to learn, but I don't regret it.

The main advantage as I see it is that you have a lot more keys close to your fingers. From the usual position WASD, the following keys are easily reachable (not including the movement keys): |, 1, 2, 3, 4, 5, q, e, r, (t), f, (g), <, z, x, c, v. Total of 15 keys easily reachable, 17 if you include t and g. From ESDF, you can reasily reach all of the following keys: (|), 1, 2, 3, 4, 5, 6, q, w, r, t, (y), a, g, (h), <, z, x, c, v, b. Total of 18 keys easily reachable, and 21 if you include the fairly easy to reach ones. That means another 3-4 abilities easily within reach. For a game like WoW where each class has some 40+ keys (including stuff common for all, such as follow), that can be extremely valuable. The second, minor benefit is that it is slightly easier to find the position on the keyboard if you keep in mind that your right-movement finger is on F, which always has a slight bump or some other ways of tactile detection on all keyboards. I hope that made sense.

Multiple usage of a key with shift and ctrl

You can map multiple abilities to the same key. For example, Q can have one ability, Ctrl-Q can have another, Shift-Q can have a third. I recommend not using Alt-Q or any other alt-modification key-binding, as alt is terribly place for ease of reach during a hectic battle. In addition, should you happen to hit alt-tab, you've just accidently tabbed out of WoW (in Windows, that is).

With that said, I sometimes use Alt-Q (or something similar) for macroing abilities that need to be cast are to be cast on my focus target.

Macros, macros, macros

Macros 101

There are two ways to get multiple key-bindings on the same key. One is to bind three different "slots" to for example Q, ctrl-Q and shift-Q, and then drop each ability into one slot.

The other is to macro them, and put the macro into the slot Q. Bring up the macro interface by typing /macro in the chat area. Create a new macro. Call it whatever you want, and use the question mark (?) as icon.

The following macro is an example, using three mage abilities, but you can replace them with whatever you want.

/cast [mod:shift] Frostbolt; [mod:ctrl] Frostfire Bolt; Fireball

Now drop the icon into a slot, and close the macro interface. The icon should be for Fireball when you don't press anything on the keyboard. If you now hold [ctrl], the icon should change to Frostfire Bolt. Finally, if you hold [shift], the icon should change to Frostbolt.

Now you can either hold [shift] and click the icon with your mouse to cast frostbolt, or you can hold [shift] and push the key bind for the slot you've dropped the ability into, for example Q. WARNING: If you have bound another slot to Shift-Q (or whichever key you're using), hitting [shift]-Q will activate that slot, not the one you've assigned to Q. Same with ctrl-Q. You need to unbind any slots you have with ctrl- and shift-keys for these types of macros to work.

Short explanation of the macro: The first line (#showtooltip) will tell the icon to change depending on which ability is triggered in the macro. Without it, the icon will be static. The macro will still work, but not the icon. It only works if you've chosen the question mark (?) as an icon for the macro.

The next line of the macro says something like this: If Shift is pressed ([mod:shift]), use Frostbolt. If shift is not pressed, but ctrl is pressed ([mod:ctrl]), use Frostfire Bolt. If neither ctrl nor shift is pressed, use Fireball.

Macros 102

A macro is always evaluated in order, meaning the first trigger to happen will be used. I'll give an example. Say you want to add something to the macro. If a friend is targetted, you want to cast Arcane Intellect instead. You can add that to a macro by typing "[help] Arcane Intellect". The [help] means that it only triggers if you have a target you can help. The opposite is [harm].

Consider the following macro:

/cast [mod:shift] Frostbolt; [mod:ctrl] Frostfire Bolt; Fireball; [help] Arcane Intellect

This macro will work exactly like the one above. It will never allow you to cast Arcane Intellect. Why? The [help] condition comes after Fireball, which does not have any conditions at all. You effectively say "Always cast fireball if nothing else is triggered before that".

The next version of the macro:

/cast [mod:shift] Frostbolt; [mod:ctrl] Frostfire Bolt; [help] Arcane Intellect; Fireball

This time, it will evaluate the condition "can I help the target" before it attempts to cast fireball if nothing else fails, but after it checks if ctrl and/or shift are pressed. That means: If you press ctrl or shift, even if you have a friendly target selected, it will attempt to cast frostbolt or frostfire bolt, hopefully producing an error message. (If not, go buckwild blasting your friends to death!)

The last version of the macro looks like this:

/cast [help] Arcane Intellect; [mod:shift] Frostbolt; [mod:ctrl] Frostfire Bolt; Fireball

This target will check if the target is friendly first, before testing if you've pressed shift and/or control.

Note that there is (usually) no right or wrong concerning these macros. They are only correct or not in the sense that they do what you what them to do. Either of the last two might fulfill your needs if you want to create a macro for all four spells.

Macros 1042

Now we arrive at some slightly advanced macros. This one is specifically aimed at healers. I'll present the way I use now. I'll start by presenting a macro, from my druid arsenal.

/cast [mod:shift, @player] [mod:ctrl, @focus] [@mouseover, help] [help] Regrowth; Wrath

Now, this is what it'll do.
  1. If shift is pressed, cast Regrowth on myself
  2. Else, if ctrl is pressed, cast Regrowth on my focus target. I could easily add that it should only cast on my macro target if it exists and is alive, but I want it to fail it isn't.
  3. Else, if I have my mouse over a target that can be helped (either on a unit frame, raid frame, Grid or on the actual character), cast Regrowth on that target
  4. Else, if I am targetting something friendly, cast Regrowth on it.
  5. Else, cast Wrath.

Using a macro like this, I don't need an addon like Clique. I just move my mouse to the target in the raid I want to heal and hit the button I've assigned to this macro, R in my case.

When healing in raids, I focus the main tank and target off-tank (and I have sticky targeting enabled in the interface options). When healing the main-tank, I hit Ctrl-R. When healing the off-tank, I hit R. When healing any other target, I move my mouse to the target on my grid addon (but it also works on the core raid frames) and hit R. If I need to heal myself, I hit Shift-R.

The reason I choose to focus the main tank rather than targeting it, is that there's a risk my mouse happen to be over any friendly target when I'm casting R and trying to heal the off-tank. If that happens, the heal will go on the mouseovered target instead. With practice, it rarely happens at all, but if it does, I don't want to get the main tank killed over such a mistake.

Macros 10-gazilliion

There is also a lot of other fun stuff you can do with macros, but I'm really derailing from my intended topic here. Check out a macro-guide if you're interested.

Principles for key bindings

O----kay. That was a lengthy introduction to what I was really writing about. Key bindings.

Here are my own rules.

Never change key bindings across specs

Any core ability which all specs have should always be on the same key. That also applies for talents which all specs take, such as Inner Focus for priests (well, up to Cataclysm, then only Disc priests will have it).

Healer, heal thyself

For any key that contains a targeted heal, which means 90% of them, macro it to heal myself with Shift pressed. It doesn't apply to non-targeted heals such as Holy Nova.

Main rotation on QWRT

The most commonly used abilities for any spec should be on W, R, which are the easiest reachable of any keys, possible not including A and space. The next should be on Q and T. After that I'll use 3 first, then 2 and 4.

For casters, I try to place cast-time spells on QWR and possibly T, and instant spells on 1-6. For healers, I always macro together all heals with harmful spells, depending on the target, like I've listed in the macro section above.

Abilities that need to be refreshed or are exclusive on A

For my shaman I have Water Shield on A and lighting shield on ctrl-A (no idea why I chose ctrl-A over shift-A). For my priest, I'll have Inner Fire and Inner Will on A, easy to switch. For my warrior, I'll have Commanding Shout and Battle Shout there. For my DK, I have Horn of Winter on A, actually macroed so that it will attempt to raise my pet if it's not already up in Unholy spec and then cast Horn of Winter.

If a class/spec have no such abilities, I just bind it to some ability that seem handy.

Emergency ability on H

Slightly tinted towards PVP. This includes Psychic Scream for a priest, Barkskin / Nature's Grasp for a druid, Stoneclaw Totem (glyphed) for a shaman, Divine Shield / Divine Protection for a paladin, Icebound Fortitude for a DK and Shield Wall (in defensive stance, else Retaliation/Recklessness) for a warrior.

Reactive abilities at G

Abilities that need to be cast to prevent something from affecting myself from an enemy (usually in PVP). Grounding totem for a shaman, Spell Reflect for a warrior, Anti-Magic Shell for a DK, Dispersion for a shadow priest, recast form for a druid (breaking snares and polymorph).

Spell interrupts at 4

Shield Bash / Pummel for a warrior, Wind Shear for a shaman, Skull Bash (in cata) for druid, Rebuke (in cata) for retribution pally, Avenger's Shield (since it silences) for a protection pally, Silence for shadow priest, Mind Freeze for a DK.

I also bind stuns and secondary silences on ctrl-4, such as Hammer of Justice (pally), Bash (feral druid) and Strangulate (DK).

Stances on ZXCVB

In the case of druids and warriors.

Taunts at 6

Taunt, Growl, Hand of Reckoning and Dark Command. On Shift-6: Challenging Shout, Challenging Roar, Righteous Defense and Death Grip (since it also taunts). Actually, I've macroed so that hovering the mouse on a friend as a pally will cast Righteous defense without shift as well.

Focus target on <

I'm not sure I'm too happy with this keybinding, but it has been there for so long... A macro that will focus the target if no focus exists, select the focus if a focus exists, and clear the focus if the target is dead. If ctrl is pressed, force re-focus even if the old focus still exists and is alive.

I don't have the macro here, but it was slightly complicated, so I dare not attempt to reproduce it here without testing it first. If you really want it, let me know in the comment, and I'll dig it up.

Talented abilities

I macro in a way that lets the same key be used for different abilities depending on which spec I'm currently in. For example: I'll use the same button for Shield Slam / Mortal Strike / Bloodthirst for my warrior, depending on what spec I'm in.

Unfortunately, not all specs have the same number of talented moves, so I'll just make do on the odd abilities that remain.

Multi-binding on the same key

For any ability that can not be cast on a friendly target, I macro another ability on the shift-version of the same key. I always try to stuff cooldown-abilities on the non-modifier version of these macros, so that I can see the cooldown on the icon without hitting shift. For example, for cataclysm I'll have macroed Judgement / Exorcism to the same button. Judgement has a cooldown, Exorcism has none.

In the cases where I have several cooldown-abilities I need to bind to the same button, I'll use the least most likely without shift or ctrl pressed.

Abilities across stances

I try to group ablities on the same button that are exclusive to a given stance (warrior or druid) and that makes sense together. For example: I've macroed Thunder Clap and Whirlwind to the same button. Thunder Clap can only be used in Battle or Defensive Stance. Whirlwind can only be used in Berserker stance. Both are AoE abilities, and thus have a logical connection.

Heals sorted by casttime

All healers in Cataclysm will have one cheap heal (Heal, Nourish, Healing Wave, Holy Light), one big heal (Greater Heal, Healing Touch, Greater Healing Wave, Divine Light) and one fast heal (Flash Heal, Regrowth, Healing Surge, Flash of Light). I place the big heals on Q, the cheap heals on W and the fast heals on R.

I use T for an instant heal, slightly depending on class. For disc priests, I use Penance (well, sort of instant. At least the first tick hits instantly). For holy priests I'll use Holy Word: Chastice there in Cataclysm, since it morphs into a healing spell in a chakra state. (Haven't been holy for the entire Wrath...)

For druids, I've used Nature's Swiftness + Healing Touch there up until recently, but will most likely change it to Swiftmend. For shamans, recently Nature's Switness + Grater Healing Wave, but in cataclysm Unleash Elements, common for all specs. For paladins, I've placed the new Word of Glory there for cataclysm, common to all specs.

Damage spells sorted by casttime, too

I group damage spells on the same principle as the cast-time spells, placing the highest cast-time (and usually highest dps) on Q, and then advancing through W and R. With some exceptions where I can't find fitting abilties. Paladins, for example, have only one cast-time damage spell, Exorcism.

Be flexible

Even with the best logic in the world, I often find that there's something not fully working during levelling. When I do, I spend some time to try to come up with a better solution, often switching several key bindings around.

No comments:

Post a Comment