What is Strage's Keybinder?
This addon allows you to hard-code keybindings on a spec basis, the bindings for your current spec will be automatically loaded. Whenever you change spec, the bindings will be changed to that of your new spec. Bindings can also be specified for all classes, these bindings will always be loaded regardless of your class - useful for bindings for mount macros etc.. You can also specify bindings on a class by class basis - these bindings will be loaded regardless of your spec.
Why Use This Addon?
The major advantage to using this addon is that once you have specified all your keybinds, assuming you keep the file with your bindings specified safe - you will never lose your keybinds. The reason I created this addon is because I've always had issues with other addons managing to lose my keybinds.
This addon has no GUI by design, allowing you to hard-code your keybindings means that the bindings are not stored in the WTF savedvariable folders. Meaning all your bindings for every class are in the Bindings folder, although it may take slightly longer to create your bindings than dragging abiltiies onto a GUI addon. Once you have setup your bindings for a class, they will also be setup for any character of that class.
How to Use
To use the addon, install it as you would any other addon then go into the 'Strages_Keybinder' folder, and then into the 'Bindings' folder. Here you will find folders for every class, each with a file for every spec of that class. This is where you put your keybindings using the blizzard standard API, you can look inside the Mage files for examples - be sure not to include the "--" characters. The general.lua file is where the class specific keybinds are stored, and the 'Allclasses.lua' is where the keybinds for all classes are stored.
Here are some examples of how to bind spells, items and macros (look in mage folder):