WoW:Using bindings.xml to create key bindings for your addon

From AddOn Studio
Revision as of 15:18, 16 May 2007 by WoWWiki>Mikk (→‎Notes: 2.1: code blocks cannot be empty)
Jump to navigation Jump to search

Example:

bindings.xml

<Bindings>
  <Binding name="DOSTUFF" description="Default description" header="MYDOSTUFF">
    DoSomething();
  </Binding>
  <Binding name="DOOTHERSTUFF" description="Other default description" runOnUp="true">
    if ( keystate == "down" ) then
      DoSomethingElse();
    else
      DoSomethingYetDifferent();
    end
  </Binding>
  <Binding name="DOMORESTUFF" description="Yet another default description">
    DoOneThing();
  </Binding>
</Bindings>


dostuff.lua

-- Binding Variables
BINDING_HEADER_MYDOSTUFF = "The header";
BINDING_NAME_DOSTUFF = "a name";
BINDING_NAME_DOOTHERSTUFF = "another name";
BINDING_NAME_DOMORESTUFF = "yet another name";


Notes

  • The Binding attribute runOnUp="true" is needed to use the keystate variable; unneeded otherwise.
  • A binding with no keystate will fire on key down.
  • WoW starts a new header when it finds a header="MYDOSTUFF" in a binding definition.
    You can not "hook into" a previous header using this way because the variables die after the Bindings.xml file has been processed.
  • WoW tries to look for a lua variable BINDING_HEADER_MYDOSTUFF if you use header="MYDOSTUFF".
    If it can not find that, your binding will end up with the previous header.
  • If you use name="DOSTUFF" then WoW tries to look for a lua variable
    named BINDING_NAME_DOSTUFF. If that is not found, it uses description.
    If description is not present, it uses the name.
    This last case will look ugly.
  • As of 2.1, the code blocks cannot be empty or the keybindings interface will ignore the binding. A comment is enough, i.e. "-- dummy".


The juggling about with LUA variable names is to make it possible to localize your addon. See HOWTO: Localize an AddOn for standard localization practices.