Using KeybindTrainer

KeybindTrainer is an addon to help you learn your keybinds by testing how well you know them. It is usable anywhere and anytime, in or out of combat.

Definitions

Here are a few terms to know when using KeybindTrainer:

Trial

When KeybindTrainer iterates through a set of keybinds, it is running a Trial. There are two types of Trials, Default Trials and Custom Trials.

Default Trial

A Default Trial is a Trial that is defined by the current state of user action bars at the time the Trial is run. For example, the Default Trial "All Visible Keybinds" scans visible action slots to determine what to show the user.

Custom Trial

Custom Trials are KeybindTrainer Trials built from user input. They can test any combination of keybinds. For example, the "Rogue: Cloak and Vanish" Custom Trial tests a common sequence for PvP Rogues. The language used to construct Custom Trials is covered in more detail in a later section.

Action Tuple

All Trials are made up of sequence of one or more Action Tuples. An Action Tuple is a set of icons displayed all at once by KeybindTrainer. Each icon represents an . . .

Action

An Action is any spell, item, ability, or other action that can be placed on in an action bar slot.

Running a Trial

To run a trial:

1. Select the trial you wish to run (for example, "All Visible Keybinds") from the Select Trial menu.

2. The Start Trial button will appear in the middle of the Trial area (middle box). Click it to start the trial.

3. As each Action Tuple appears, press the button(s) corresponding to each Action.

Unless the Run Continuously option is checked, the Trial will finish once all Action Tuples have been displayed. You can also move your mouse out of the Trial area at any time to halt the trial.

Configuring KeybindTrainer

KeybindTrainer supports a variety of options around creating, editing, and running Trials.

Resizing/Moving Addon Window

To resize KeybindTrainer, click and drag on the bottom right pull handle. To move any KeybindTrainer window, click and drag its title bar.

Hiding/Showing Addon Window

To hide the addon window, you can click the top right 'X', click the KeybindTrainer minimap icon, or type |ccFFEE4400/kbt hide from the command line. To show the addon window, you can click the minimap icon, or type |ccFFEE4400/kbt show from the command line.

Trial Options

To have the current Trial loop continuously, select the Run Continuously option. To randomize the order Action Tuples are displayed, select Randomize Bind Order.

Display Options

KeybindTrainer offers a variety of options for how Actions are displayed during Trials. Mouse over each option for a tooltip explaining its function.

KeybindTrainer Statistics

KeybindTrainer can collect and display a variety of statistics to measure your keybind performance. Statistics are saved on a per-character basis and can be reset at any time from the Statistics dialog. The following statistics are available:

Seconds per Bind

Shows how much time you spent per bind for the last KeybindTrainer trial.

Miss per Bind

Shows how many misses you had per bind for the last KeybindTrainer trial.

Max Seconds per Bind

Show the maximum amount time you spent per bind since the last time you cleared your statistics.

Avg Seconds per Bind

Show how much time you spent per bind on average since the last time you cleared your statistics.

Avg Miss per Bind

Show how misses you had per bind on average since the last time you cleared your statistics.

Descriptions of each graph are also available as tooltips in the Keybind Stats dialog window.

Slash Commands

The /kbt or /keybindtrainer slash commands have the following arguments:

/kbt show

Show the KeybindTrainer window.

/kbt hide

Hide the KeybindTrainer window.

/kbt help

Show the KeybindTrainer help window.

/kbt stats

Show the KeybindTrainer statistics window.

/kbt trial create

Shows a window to create a new custom trial.

/kbt trial edit NAME

Requires argument NAME. Shows a window to edit custom trial NAME.

Creating Custom Trials

Custom Trials are easy to create and share. To add a Custom Trial to KeybindTrainer, click the Add Trial button (or type /kbt trial create) and type or paste the string into the input box. Click 'Save' when finished. To save your trial to your Account profile (accessible by all your characters), make sure the Save to Profile option is selected.

A Custom Trial is just a string that tells KeybindTrainer what to display. These directions are specified using formant called 'JSON'. If you are not familiar with JSON, don't worry--you don't need to be.

An Example Custom Trial

Let's start by going through an example Custom Trial:

{"name":"basic","desc":"An example trial","gcd":1.5,"binds":[{"action":"Auto Attack", "cd": 1.2}]}

Let's go through this in more detail:

{ }

All Custom Trials must start and end with curly brackets ( { } ).

"name":"basic"

This is the name of the Custom Trial. Note that quotes are required both for the key and the value.

"desc":"An example trial"

A description for the Custom Trial, used to populate the tooltip in the Select Trial menu.

"gcd":1.5

The GCD time to use for this Custom Trial. This is the delay used between Actions unless an Action cooldown is specified (see below).

"binds":[]

The list of key-bound Actions KeybindTrainer will iterate over for this Trial. Note that the entire list of Actions must be enclosed in square brackets ( [ ] ). The label for this section is 'binds'.

{"action":"Auto Attack", "cd": 1.2}

An Action in this Custom Trial corresponding to a key-bound action on your bar. The action name is specified by the 'action': section. This name can be a string (such as 'Auto Attack'), tan integer spell id in the form of 'spell:1234', or an item id in the form of 'item:1234'. The cooldown for the action is specified by a number following the 'cd' label. This cooldown overrides the 'gcd' entry specified for the entire Custom Trial.

Multi-Action Tuples

Action Tuples in Custom Trials can contain more than one action. This allows the user to create tests for sequences of keybinds. A multi-action Tuple is just multiple Actions listed together inside of square brackets ( [ ] ).

As an example, consider the "Rogue: Cloak and Vanish" Custom Trial included by default. The string used to construct this Custom Trial is below:

{"name":"Rogue: Cloak and Vanish", "gcd":1.5, "binds":[{"action":"Stealth"}, [{"action":"Cloak of Shadows", "cd":0}, {"action":"Vanish"}] ]}

Looking at the 'binds' list, there is a single bind Action Tuple for 'Stealth'. To test 'Cloak of Shadows' and 'Vanish' in sequence, we create a multi-action Action Tuple:

[{"action":"Cloak of Shadows", "cd":0}, {"action":"Vanish"}]

Here we have two actions in a list surrounded by square brackets ( [ ] ) to create a multi-action Action Tuple. The bracketed sequence is then included in the 'binds' list with single Actions. To cancel out the GCD for 'Cloak of Shadows' (which is off the GCD), we set its cooldown ('cd') value to 0.

Custom Trial EBNF

The Custom Trial language is defined via EBNF as follows. Note: for readability, space means concatenate.

trial ='{' name ',' binds [gcd ','] [desc ','] '}'

binds = '"binds":[' trial_set ']'

trial_set = '[' action_tuple {',' action_tuple} ']'

action_tuple = '{action:' action [',' cooldown] '}'

action = string | 'spell:' int | 'item:' int

cooldown = '"cd":' float | '"cd":"random"'

gcd = '"gcd":' float

name = '"name":' string

desc = '"desc":' string

string = '"' (*any sequence of JSON-legal characters*) '"'

float = (*a floating point number*)

int = (*an integer*)

Editing Custom Trials

To edit a Custom Trial, select the trial in the Select Trial menu, and then click Edit Trial. Alternatively, type /kbt trial edit NAME, where NAME is the name of the trial to edit. This will bring the trial string up in an edit box, where you can make changes, or copy it for sharing with others.

Deleting Custom Trials

To delete a Custom Trial, select the trial in the Select Trial menu, and then click Edit Trial. Alternatively, type /kbt trial edit NAME, where NAME is the name of the trial to edit. This will open the trial in the edit box. Once it's open, click Delete to remove the trial from KeybindTrainer. Note: this will also remove the Trial from your account profile.

Frequently Asked Questions

Q: What if I change my keybinds between Trials?

A: KeybindTrainer scans your keybinds for all action bar slots before each trial is run. If you change your binds between trials, the next trial you run will reflect your updated binds.

Q: What if I change my keybinds DURING a Trial?

A: The current trial will stop when you open the WoW keybind configuration window. When you start your next trial, the new keybind will be picked up by KeybindTrainer.

Q: What if I have multiple binds for the same action?

A: KeybindTrainer will accept any of the binds for that action during a Trial.

Q: What if a Custom Trial contains a spell that is not on my action bar?

A: Unfortunately, there is not much KeybindTrainer can do in this case. The trial will still run, but for unknown spells a '?' icon will be displayed, and any key will be accepted for the bind.

Q: What if a Custom Trial contains an a action name that could mean multiple spells, like 'Feral Charge'?

A: Action names in Custom Trials are mapped to numeric WoW spell ids by KeybindTrainer. Some spell ids share the same name, such as 'Feral Charge'. If action bars contain multiple spells with the same name, KeybindTrainer will prefer the spell id that is bound to a visible action bar at the time the Trial is run. If there is more than one visible bind to actions sharing the same name, or if no binds to actions with identical names are visible, KeybindTrainer will not be able to map the name to a specific bind, and will display a '?' for that action. Any key will be accepted for the bind when the Trial is run.

Q: What if a Custom Trial contains an action that is on my bar, but does not have a keybind?

A: The icon for the action will display during the trial, but a '?' will be overlaid because no bind for the action was found. Any key will be accepted for the bind when the Trial is run.