Hotkey binding layout design

You have been pressing those oddly-placed keys so often that your hand is painful, and you wonder.. what did Blizzard have in mind when they chose those hotkeys? So you started experimenting with hotkey layouts. Maybe you tried also some custom layout such as Blizzard’s Grid, Darkgrid, or The Core. Maybe you were not completely satisfied with any of them, and you started to work on your own.

So did I. I experimented quite a lot, and I would like to share with you my opinions, and gather your opinions about how to create a good custom layout.

Glossary


 * click: mouse button down followed by mouse button up
 * press X: keyboard button X down followed by keyboard button X up
 * hold X: keyboard button X down
 * release X: keyboard button X up
 * tap X: pressing X many times
 * (X): press X
 * (X(Y)): hold {X}, press {Y}, release {X}
 * (X(Y)(Z))=: hold X, press Y, press Z, release X
 * (X(Y(Z)(Z)))=: hold X, hold Y, press Z, press Z, release Y release X
 * the writing (XY(Z)(Z)) means (X(Y(Z)(Z))) or (Y(X(Z)(Z)))
 * ⇧SHIFT stands for the Shift key
 * ⎈CTRL stands for the Control key
 * ⎇ALT stands for the Alt key

For me, the most compelling reason to change the layout is to make it more comfortable to play. However, after trying and trying, I realized that comfort is not the only reason to change. I think the goal of every change to a layout is to improve either comfort, speed or resilience.

Comfort and safety
Keeping a key pressed with your pinky can be a lot of stress compared to keeping a key pressed with your index, thumb or middle finger. Reaching out for specific keys to press in combination, such as (CTRL(7)) requires you to bend your wirst excessively.

Speed
Your hand can carry out certain sequences of movements faster than other sequences. For example, your index can tap much faster than your thumb, and pressing a key which is easily reached is faster than pressing a key which is far away, to execute two consecutive presses with two different fingers is faster than executing them with a single finger.

Robustness
Pressing the wrong key can be either harmless, a nuisiance, or a disaster. With certain layouts, pressing the correct key while the wrong unit is selected can also be dangerous. See Robustness.

With experience, I understood that comfort, speed and robusntess are my goals when I fiddle with hotkey assignments. But let’s set aside speed and robusntess for a while, and focus on the constraints of the solution space. Trying to achieve comfort may be a good starting point to understand what it takes to design a layout.

As you may have experienced if you tried to change your hotkey layout, it seems that if you want to assign a comfortable hotkey to a specific action, you also need to change the hotkey of the action which is currently assigned that comfortable key.

The first obstacle to the design of a custom hotkey layout is the following: there are more game actions than comfortable keys. This means that designing a layout design requires making a choice of what game actions will be comfortable, and what game actions will not.

It is quite easy to produce a list of individual game actions, and thanks to the Core Development data, it is also possible to rank them by frequency. The first step in the design of a custom hotkey layout is to evaluate how comfortable each key is, then assign the most frequent actions to the most comfortable keys.

However this solvesd just part of the problem. While it is true that some keys are most comfortable to press, just assigning frequent game actions to comfortable keys is not enough to have a comfortable gameplay experience, because while each key may be comfortable to press on its own, pressing certain combinations may not.

Combination here means two or more keys that need to be pressed together, such as (CTRL(1)), or (SHIFT(A)). The design of a layout cannot take into consideration only the single actions that are executed pressing a single key. It also must take into consideration the actions that are executed pressing a combination of keys. In the following I will refer to those actions as “multi-key game actions”.

The second obstacle to the design of a custom hotkey layout is the following: there are more multi-key game actions than comfortable key combinations. This means that designing a layout design requires making a choice of which multi-key game actions will be comfortable, and which ones will not be.

It is quite easy to produce a list of individual multi-key game actions, altough that list will be fairly long, but it is hard to rank them by frequency, also because they depend on the individual player style.

Just to give you the kickstart: first of all, there are the group assignment, addition and recall combinations, which by default are (CTRL(1)), (SHIFT(1)) and (1) for each key 1, 2, 3.. 0. Then there are the camera assignment and recall combinations, which by default are (CTRL(F1)) and (F1) for each F-key F1.. F5. Then there are actions that can be queued with SHIFT, such as attack, patrol, hold position, gather, return cargo.. and almost all the other unit abilities! Some abilities cannot or never need to be shift-queued: stimpack, unsiege, unburrow, prism mode, heal and many others.

The second step in the design of a custom hotkey layout is to understand which multi-key actions you are likely carry out, evaluate how comfortable the corresponding key combination is with the current layout, and search for a better hotkey arrangement that would not make it too hard to carry out frequent single-key game actions.

But there is more. Comfortable single-key actions and multi-key actions are not enough for a comfortable gameplay experience. Playing involves carrying out several actions in an endless sequence. While each action individually may be comfortable to carry out, the movement required to carry out a specific action after another may not. There are frequent sequences of actions such as the one to produce a worker or to create a Supply Depot (or a Pylon) that are carried out so often that a layout design may want to take them into consideration, so that their execution is comfortable.

Some sequences are not, strictly speaking, “sequences” of actions one after the other, but rather complex gestures that require holding some buttons, pressing others, perhaps using the mouse too. In the following I will refer to the effect on the game achieved with these “sequences” as a “complex game action”, and I will refer to the phisical actions on the mouse/keyboard required to carry them out as “key patterns”.

For example, the complex game action for the Queen’s spawn larva technique that uses shift and the base camera is the following: select the queen group, press spawn larva, hold shift, and repeat for each hatchery: base camera, left click on the hatchery; then release shift. With the standard layout, the pattern that implements this technique is the following: (1) (S) (SHIFT(backspace)(leftclick)(backspace)(leftclick)...)

The third obstacle to the design of a custom hotkey layout is the following: there are more complex game actions than comfortable key patterns. This means that designing a layout design requires making a choice of which complex game actions will be comfortable, and which ones will not be.

It is hard to produce a list of individual complex game actions, and it is hard to rank them by frequency, because they depend very much on the individual player style.

There are many ways to achieve the same goal in the game. The most important (and perhaps the most complex?) example is the Queen’s spawn larva, also known as inject. There are many different techniques to spawn larva on all your hatcheries. Each way uses a different numbers of groups, different cameras, and possibly SHIFT.

But there are more examples: marine stutter step, banshee stutter step, patrol spread, idle workers spread, blink train, worker saturation check, deployment of multiple tanks, building multiple structures and others. Each technique requires a sequence of actions to be carried out, possibly with some combination of keys to be pressed.

The third step in the design of a custom hotkey layout is to select a few complex game actions that belong to your play style, evaluate how comfortable the corresponding key pattern is with the current layout, and search for a better hotkey arrangement that would not break everything else.

Once you undersand this, you should also evaluate speed and resilience.

In addition to that, you may find out (as I did) that certain key combinations work and certain others don’t, simply because of hardware limitations of your keyboard and/or mouse.

To wrap up, a custom hotkey layout is designed to improve the comfort, safety, speed and resilience of a careful selection of single-key, multi-key and complex game actions and that fit your particular playstyle, and it is tailored to your specific harware and your hand size.