Get an Epic Experience with Premium


PvP Login to Add Favorites
  • World of Warcraft
  • 167 Monthly Downloads
  • Supports: 4.0.6
  • 14,710 Total Downloads
  • Updated 02/19/2011
  • Created 11/14/2010
  • 42 Favorites
  • Project Site
  • Comments
  • Release Type: Inactive
  • License: GNU General Public License version 3 (GPLv3)
  • Newest File: 1.1

About KeybindTrainer

Version 1.1 is here with many of your requested improvements! Please upgrade KeybindTrainer ASAP. Thanks!

What is KeybindTrainer?

KeybindTrainer is an addon to help you learn your keybinds by testing how well you know them. It does this by showing Trials, or sequences of icons for the bound actions on your bars. The addon supports a wide variety of configuration options. In addition, KeybindTrainer also allows you to create, import, and share Custom Trials to test how quickly you can hit important key combinations, such as the infamous "Cloak and Vanish" for Rogues.

KeybindTrainer is usable anywhere and anytime, in or out of combat. Type /kbt to see options.

Addon Support

KeybindTrainer can now handle binds set by the following addons:

  1. Bartender4
  2. Dominos
  3. BindPad

Support is in the works for...

  1. VuhDo
  2. Clique
  3. CT_BarMod

If you'd like to see other addons supported, please post a comment below. Thanks!

Getting More Custom Trials

Sharing custom trials is as simple as cutting and pasting a string. A web portal for posting your trials and using those created by others is coming soon.

Getting Help

KeybindTrainer ships with full help documentation. Please go to your addon folder and open doc/index.html.

If your issue is not covered in the documentation, please leave a comment. If you have found a bug, please see "How to report a bug" below.

Suggesting Improvements

If you have a an idea for extending KeyboardTrainer that you'd like to share, please comment! Comments have been left open and will be checked by the author.

How to report a bug in KeybindTrainer

Important: before reporting a bug, please:

  1. Double-check that you have the latest version of KeybindTrainer.
  2. Disable all other addons and see if the problem still happens.
  3. Enable "Display Lua Errors" under Interface Options > Help, or install an error handling addon like BugSack.

Then, submit a bug report in the ticket tracker. Be sure to include as much of the information requested in the ticket template as you can.

Finally, remember to check on your ticket after a few days. If a ticket is waiting on a response from you for more than a week, I'll assume you've solved the issue on your own.

r9 | fitzcc | 2011-02-20 01:20:15 +0000 (Sun, 20 Feb 2011) | 1 line
Changed paths:
   D /trunk/UI.lua
   D /trunk/localization/Core.lua
   D /trunk/localization/html/About_US-En.lua
   D /trunk/test/TestEnv.lua
   D /trunk/test/test_Run.lua
   D /trunk/test/test_StatsList.lua

Removing deprecated/unneeded files.
r8 | fitzcc | 2011-02-20 01:15:43 +0000 (Sun, 20 Feb 2011) | 7 lines
Changed paths:
   M /trunk/KeybindTrainer.lua
   M /trunk/KeybindTrainer.toc
   M /trunk/KeybindTrainer.xml
   A /trunk/lib/ActionBindManager
   A /trunk/lib/ActionBindManager/ActionBindManager.lua
   A /trunk/lib/ActionBindManager/ActionBindManager.toc
   A /trunk/lib/ActionBindManager/Localization.lua
   A /trunk/lib/ActionBindManager/SlotPool.lua
   A /trunk/lib/ActionBindManager/test
   A /trunk/lib/ActionBindManager/test/TestTools.lua
   A /trunk/lib/ActionBindManager/test/luaunit
   A /trunk/lib/ActionBindManager/test/luaunit/LICENSE.txt
   A /trunk/lib/ActionBindManager/test/luaunit/README.txt
   A /trunk/lib/ActionBindManager/test/luaunit/luaunit.lua
   A /trunk/lib/ActionBindManager/test/luaunit/test_luaunit.lua
   A /trunk/lib/ActionBindManager/test/luaunit/use_luaunit.lua
   A /trunk/lib/ActionBindManager/test/
   A /trunk/lib/ActionBindManager/test/test_SlotPool.lua
   M /trunk/lib/Config.lua
   M /trunk/lib/Defs.lua
   A /trunk/lib/FitzUtils
   A /trunk/lib/FitzUtils/ApiEmulation.lua
   A /trunk/lib/FitzUtils/FifoList.lua
   A /trunk/lib/FitzUtils/TestUtil.lua
   A /trunk/lib/FitzUtils/Util.lua
   A /trunk/lib/FitzUtils/test
   A /trunk/lib/FitzUtils/test/luaunit
   A /trunk/lib/FitzUtils/test/luaunit/LICENSE.txt
   A /trunk/lib/FitzUtils/test/luaunit/README.txt
   A /trunk/lib/FitzUtils/test/luaunit/luaunit.lua
   A /trunk/lib/FitzUtils/test/luaunit/test_luaunit.lua
   A /trunk/lib/FitzUtils/test/luaunit/use_luaunit.lua
   A /trunk/lib/FitzUtils/test/
   A /trunk/lib/FitzUtils/test/test_FifoList.lua
   A /trunk/lib/FitzUtils/test/test_Utils.lua
   M /trunk/lib/ParserJson.lua
   M /trunk/lib/Run.lua
   M /trunk/lib/Stats.lua
   M /trunk/lib/Timer.lua
   M /trunk/lib/Trial.lua
   A /trunk/lib/UI.lua
   A /trunk/localization/Text.lua
   A /trunk/test/TestBase.lua
   M /trunk/test/test_Action.lua
   M /trunk/test/test_ActionTuple.lua
   M /trunk/test/test_Config.lua
   M /trunk/test/test_JSON.lua
   M /trunk/test/test_JsonParser.lua
   M /trunk/test/test_Stats.lua
   M /trunk/test/test_Trial.lua
   M /trunk/tools/

Minor version update to version 1.1.  A nearly complete re-write.  Significant changes:
  - UI completely redone to be less cluttered and more intuitive.
  - Support for Blizzard stance and pet binds added
  - Explicit support for Bartender4 added.
  - Explicit support for Dominos added.
  - Explicit support for BindPad added.



First Previous Page 1 of 2 Next Last
  • #28

    nice addon, pls update!

    for example the option to hide the minimap button does not save and after a relog the button appears even if u told it to hide. also i think the position of the minimap button does not safe so whereever you put it, it will appear at the original spot again.

  • #27

    Not working for me(patch 4.3.4). I dont use any action bar addons. I use Elvui.

    I see the frame from this addon, but the trainig is not starting, nothing happens :(

    I recieved this error message:

    Message: ...dTrainer\lib\ActionBindManager\ActionBindManager.lua:92: bad argument #1 to '_format' (string expected, got nil)
    Time: 07/26/12 17:17:18
    Count: 1
    Stack: [C]: ?
    [C]: ?
    ...dTrainer\lib\ActionBindManager\ActionBindManager.lua:92: in function <...dTrainer\lib\ActionBindManager\ActionBindManager.lua:43>
    ...dTrainer\lib\ActionBindManager\ActionBindManager.lua:391: in function `f'
    ...dTrainer\lib\ActionBindManager\ActionBindManager.lua:675: in function `GetFilledSlotPool'
    Interface\AddOns\KeybindTrainer\lib\Trial.lua:52: in function `_r_func'
    Interface\AddOns\KeybindTrainer\lib\Trial.lua:393: in function `RefreshTrialActions'
    Interface\AddOns\KeybindTrainer\lib\Trial.lua:527: in function `Reset'
    Interface\AddOns\KeybindTrainer\lib\Run.lua:469: in function `BeginTrial'
    Interface\AddOns\KeybindTrainer\lib\UI.lua:510: in function <Interface\AddOns\KeybindTrainer\lib\UI.lua:508>
    (tail call): ?
    Interface\AddOns\KeybindTrainer\lib\Config.lua:326: in function `OnClick'
    [string "*:OnClick"]:2: in function <[string "*:OnClick"]:1>

    Locals:(*temporary) = nil
    (*temporary) = 1
    (*temporary) = 1
    (*temporary) = "string expected, got nil"

    Is threre an update ?

    Last edited by Jaro133 on 7/26/2012 10:21:53 AM
  • #26

    Hotfix for people, who get error-message:

    "Message: Interface\AddOns\KeybindTrainer\KeybindTrainer.lua:110: table index is nil"

    Error is generated only by a german-client, so I descripe the hotfix in german ;)...:


    Geht in den KeybindTrainer-Ordner ---> localization ----> Text.lua mit einem Editor öffnen.. ---> alles unterhalb von  Main.HelpDialogText = KT_Help_US_En einfach rauslöschen und abspeichern. (Also, die Zeile noch drin lassen und alles darunter löschen ;)).

     Der Autor wollte offensichtlich eine Hilfe auf deutsch einfügen, hat es aber nicht gemacht, aber schon auf die Tabelle verwiesen (die eben nicht existiert).



    Last edited by Superanuki on 3/23/2012 10:02:53 PM
  • #25

    I took a chance and KBT seems to work fairly well with the WoW Razer Naga addon.  The only problem that I have encountered is that the keys on the pages for modifiers such as CTRL, Shift, and Alt as well as combinations are displayed as question marks even when I unhide them and they are visible on the screen. When I run the show all keybinds training they display fine. 

    Is there a way to get around this or a way to edit the all keys screen?

    The same occurs for moves that are only visible in the Stealth, Vanish or Shadowdance stances?  Again, is there a way around this?

    Finally, my trinkets macros also have the question mark and I would welcome a suggestion for a solution to have the Avatar for these be visible.

     Very nice product!


  • #24

    Have you considered adding support for the Naga Mouse addon for keybinds with their mouse?  I think your idea is outstanding, but I would like to keep using my Naga mouse and practice the keybinds with that. Great concept.  Hope to see the Naga supported and the GUI intervace that you mentioned above.



  • #23
    Hey, nice AddOn, is there an Update for 4.2 ?


  • #22

    when i type in /kbt or /kbt show nothing happens and the minimap icon doesnt show too.
    i playon a german server if its important.

    i received this error:

    Message: Interface\AddOns\KeybindTrainer\KeybindTrainer.lua:110: table index is nil
    Time: 04/04/11 17:54:29
    Count: 1
    Stack: Interface\AddOns\KeybindTrainer\KeybindTrainer.lua:110: in main chunk

    Locals: Main = {
    HideDialog = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:488
    CreateDropDownMenu = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:179
    GetTrialStatText = defined @Interface\AddOns\KeybindTrainer\lib\Stats.lua:98
    OnCheck = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:273
    Constants = {
    StartActionTimer = defined @Interface\AddOns\KeybindTrainer\lib\Timer.lua:86
    CreateDropDownToolTip = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:201
    RegisterGraph = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:519
    CancelCooldownsAndAdvanceTuple = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:195
    AddActionButton = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:41
    HideAllActions = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:75
    AdvanceActionTuple = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:216
    _NewTestAction = defined @Interface\AddOns\KeybindTrainer\lib\Trial.lua:585
    HasStats = defined @Interface\AddOns\KeybindTrainer\lib\Stats.lua:137
    EndTrial = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:514
    BeginTrial = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:448
    LoadSlider = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:340
    ShowActions = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:84
    SetActionPositions = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:138
    ClearDropDownMenu = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:169
    CreateEditBoxToolTip = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:408
    NewCustomTrialFromInput = defined @Interface\AddOns\KeybindTrainer\lib\Trial.lua:549
    TrialDisplayList = {
    main_widget_list = {
    SetError = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:505
    CloseAll = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:451
    RegisterWidget = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:100
    CreateButtonToolTip = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:330
    AddMenuButton = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:217
    ShowGraph = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:525
    ValDefaults = {
    widget_list = {
    ChangeOther = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:284
    DisplayNextTuple = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:275
    RemoveTimerCallback = defined @Interface\AddOns\KeybindTrainer\lib\Timer.lua:128
    SetActionTexture = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:105
    OnSlide = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:367
    SetActionButtonMacroName = defined @Interface\AddOns\KeybindTrainer\lib\Run.lua:92
    GetVar = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:94
    SetEditBoxDefInput = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:386
    EnableTimers = defined @Interface\AddOns\KeybindTrainer\lib\Timer.lua:37
    LoadDialog = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:440
    CreateStatRecord = defined @Interface\AddOns\KeybindTrainer\lib\Stats.lua:23
    RunCb = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:46
    RestoreConfigState = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:110
    OnClick = defined @Interface\AddOns\KeybindTrainer\lib\Config.lua:325
    GetSortedStatList = def
  • #21
    It would be great if you could add support for healbot.
  • #20
    This looks like an insanely awesome mod, and I'd love to try it (especially GPLv3, whoo!)
    Brilliant idea :D
    Do you mind adding support for TuckBindings, if possible / necessary? (
  • #18
    your method of creating custom trials is insanely hard, and i cannot currently use the default method as it is blatantly incorrect in many of its binds, it draws binds from bars i dont want it to and many of them are incorrect anyway, some bars dont even have binds i just use them for display of cds and it trys to take those as well and i have to start my trial all over when this happens.
    since helpmekeybind is no longer working i want this addon to work for me but please make the proccess of picking your binds to practice a lot easier im not a coder and dont understand that proccess.

  • #19
    This some excellent feedback. Thank you for taking the time to post!

    Going to break your post down to make sure I understand:

    "your method of creating custom trials is insanely hard...[snip] not a coder and dont understand that proccess"

    I can certainly see this being confusing at first. :/ I've been planning to build a gui to make this as simple as possible, but haven't had the chance to do this yet. In the meantime, did you check out the included help files describing how to do this? Were there parts of that I could make clearer?

    "and i cannot currently use the default method as it is blatantly incorrect in many of its binds"

    Can you give examples please? What mods are you using? Is it only in the case where some of your bars are hidden?

    "it draws binds from bars i dont want it to and many of them are incorrect anyway, some bars dont even have binds i just use them for display of cds and it trys to take those as well and i have to start my trial all over when this happens."

    If an action does not have a bind, KeybindTrainer accepts any key as the bind for it and moves on with the trial. However, if you don't know the bind for your key (really easy to get confused here since the only way to find out is that giant keybind UI from blizzard) its going to be really frustrating. I think I'm going to release an update that displays what the bind is and where it is set, so you at least have a clue what is going on. Great feedback, thanks.

    "since helpmekeybind is no longer working i want this addon to work for me but please make the proccess of picking your binds to practice a lot easier."

    I'll make the above update ASAP. In the meantime, feel free to open a ticket against this addon with examples of when keybind trainer gets the keybind wrong--definitely want to see/fix those.

    Thanks again!
  • #17
    Version 1.1 of this addon now supports BindPad, Dominos, and Bartender4, as well as adding support for Stance and Pet binds. It's been pretty much re-written from the first release. Please update to 1.1, and let me know if you find any problems. Thanks!

  • #15
    I can't get it to work using bartender, I click start trial and it says no keybinds found.
  • #16
    Yeah, there are problems right now with bartender and dominos. There will be a major point release this week with full support for Bartender4, Dominos, and BindPad, along with a bunch of other improvements.
  • #14
    For those looking for visualization of their keybinds, please check out the next addon in this series: KeybindViewer (

    KeybindViewer support will be integrated into KeybindTrainer in a later release of this addon.

  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Leaguepedia PAX Skin Giveaway