This addon accelerates key bindings so that they are activated by key press rather than key release. This allows you to activate your abilities faster than you could otherwise. This can really make a difference for situations where you need to react quickly, like when casting heals, when dispelling, when interrupting spells, or in PvP. In these situations, the addon can have an effect similar to reducing your network latency by 100ms. Of course, the exact impact depends entirely upon how much time you personally spend between key press and release.
"Dude, this addon is going to increase my DPS by so much!" No, it's not. DPS rotations (or even priority systems) are not to any great extent affected by latency. Because they're predictable, good players can anticipate what's coming next and compensate for latency. In fact, if you're a good player who is already compensating for the press-to-release latency, you may actually find that your DPS goes down when you first use this addon until you learn to readjust to the reduced latency. Find a target dummy and practice your rotation until you're comfortable with the changed timing.
Configuration
There is an in-game configuration GUI accessible through the usual Options->Interface->Addons menu. From this panel, you can add or remove keys and mouse buttons to be accelerated, you can enable or disable key press animations, and you can globally enable or disable all key acceleration.
The GUI provides exceptionally fast entry--you can enter your whole keyboard in seconds and all your mouse buttons in a few more seconds. The easiest way to understand this GUI is to start by hitting the "Clear All" button and then adding and removing some keys. In order to add just one key or mouse button, hover over the "+" button and type the key or press the mouse button (including whatever modifiers you desire). In order to remove that key, hover over the "-" button and type that same key with its modifiers. In order to enter all 8 of a key's modified and unmodified combinations with just one key press, hover over the "+ (Modifiers: All)" button and type the key.
If you want to do mass entry of modified and unmodified keys and mouse buttons, hit the "Clear All" button. Then hover over the "+ (Modifiers: All)" button and face-roll your way across keyboard and mouse buttons. You're done.
The default configuration accelerates all the modified and unmodified keys on a standard 104-key US keyboard (except PRINTSCREEN) plus mouse buttons 3-5. If you'd like to get back to this configuration at any time, simply hit the "Reset To Default" button.
Mouse Buttons
SnowfallKeyPress accelerates key bindings of mouse buttons, but it doesn't accelerate mouse button clicks that interact directly with frames without any associated key binding. This means that although SnowfallKeyPress is compatible with click-casting addons like Clique and Vuhdo, it won't accelerate their mouse clicks. Vuhdo already provides its own mouse click acceleration, though, and perhaps Clique will at some point, as well. Until then, you can add support yourself by navigating to Interface\Addons\Clique, editing Clique.lua and CliqueOptions.lua, searching for instances of "AnyUp", and replacing them with "AnyDown".
Mouse scroll-wheel bindings do not need any acceleration, so don't be concerned that SnowfallKeyPress offers no way to accelerate them. Each "tick" of the mouse scroll wheel is, in effect, already a simultaneous press and release.
Custom Button Animations
It is possible to create custom button animations. Unique animations can be applied to specific buttons of your choice. The default button animation can also be modified. Customization is fairly easy, although it does require knowledge of Lua and the World of Warcraft API. There is an example in the SnowfallKeyPress\SnowfallKeyPressAnimation folder, included with this addon. You can copy the SnowfallKeyPressAnimation folder, paste it into Interface\Addons, and then edit it to create your own custom animation addon.
Compatibility and Open Issues
Known incompatibilities: none
Open issues/bugs: none
If you find an issue/bug/incompatibility, please report it on the comments tab or send me a PM. Make an effort to narrow down the problem by having the minimum number of addons installed as possible: ideally SnowfallKeyPress and just one other addon. Indicate the addon versions. Test the default configuration of the other addon. If the default configuration does not sensitize the problem, then indicate the steps I would need to take to configure that addon starting from its default configuration in order to reproduce the problem.
About me
When I'm not writing addons, I raid on my Death Knight, Dayn, in a wonderful guild called Trample on the Fenris server. If you are an amazing player who is interested in efficient 25-man raiding progression on a light 16-hour weekly raiding schedule, then why don't you stop by our guild web site and see what we have to offer?
Reduced the size of the default button animation by 25%, which should help keep it from obscuring other indicators on buttons.
Added the ability for other addons to customize the SnowfallKeyPress button animations. An example is included.
Removed the deprecated Lua configuration capability (the SnowfallKeyPressSettings folder). This functionality was superseded by the in-game GUI in version 1.2, so it's not needed any longer.
Added button press animations (enable or disable through the configuration panel).
Made some infrastructure changes that should be invisible to the user, but which should improve compatibility with addons written in the future that may have more complex behaviors than we generally see in addons today.
Hey, I'm using Bartender4 version 4.4.2 and SnowfallKeyPress version 1.6.1 and I have to manually disable and then enable SnowfallKeyPress every time I login or /reloadui.
Maybe it's some combination of these 2 addons and another that is causing the conflict? If you need more info just say so and I'll give you a list of other stuff I'm using. I'll do some tests myself tomorrow as well.
SnowfallKeyPress doesn't track key release at all. That's why I was suggesting just building a timer and setting the button state back to normal after the timer expires (200ms is probably a reasonable time).
You could use the existing AnimationGroups in the SnowfallKeyPressAnimation example and just modify them so that they don't actually animate anything, they just represent timers. Then you could do AnimationGroup:SetScript("OnFinished", SetButtonStateNormal), where SetButtonStateNormal is a function you'd build that in turn called button:SetButtonState("NORMAL"). You'd might also want to point the "OnStop" handler to your same function.
Then you could do AnimationGroup:SetScript("OnPlay", SetButtonStatePushed), where SetButtonStatePushed is a function you'd build that in turn called button:SetButtonState("PUSHED").
On key press, then, you'd do AnimationGroup:Stop() to make sure the previous button was in its normal state, then change the button associated with that AnimationGroup, then do AnimationGroup:Play() to set the state to pushed and then back to normal after the timer expired.
When you get it working, you may want to share it with others on wowinterface. The way I've set up the custom animation facility naturally allows you to just release what you've done as an addon for others to enjoy.
What you'd like to do should be possible using the custom animations facility of SnowfallKeyPress. Have a look at the SnowfallKeyPressAnimation folder. It sounds like you're pretty capable with addon editing, so I'll just try to give you some ideas. You'd probably want to simply call button:SetButtonState("PUSHED") from your SnowfallKeyPress animation handler (instead of having the star animation). You'd also want some means of setting the state back to normal after a delay, so you could either use Blizzard's animation system as a timer with OnFinished as a callback handler, or you could create an OnUpdate function as the timer (probably less efficient). Then when the timer expired, you could call button:SetButtonState("NORMAL").
I'm an experienced coder, but not with lua (I work with perl and php mainly). With the help of your guide/tips I got the PUSHED state to work just fine via the addon, but I'm having troubles finding the event/script to use to track the key release. The "AnyUp" event isn't firing at all. This is an example of the code I'm testing with:
All I want is as you said, PUSHED state while the key is being held down, and NORMAL state when the key is released. I must be ****ing up some pretty basic stuff here, because in my mind this SHOULD work! Any help would be appreciated.
What you'd like to do should be possible using the custom animations facility of SnowfallKeyPress. Have a look at the SnowfallKeyPressAnimation folder. It sounds like you're pretty capable with addon editing, so I'll just try to give you some ideas. You'd probably want to simply call button:SetButtonState("PUSHED") from your SnowfallKeyPress animation handler (instead of having the star animation). You'd also want some means of setting the state back to normal after a delay, so you could either use Blizzard's animation system as a timer with OnFinished as a callback handler, or you could create an OnUpdate function as the timer (probably less efficient). Then when the timer expired, you could call button:SetButtonState("NORMAL").
I hate doing this, but after trying to fiddle around with it myself for a few hours to no avail (your code is pretty obfuscated, no offence :P) I gave up and came here.
I, like some other people I've seen in these comments would like to request a way to add support for (bartender +) ButtonFacade keypress animations in this addon. I'm just too used to the keypress feedback given by my ButtonFacade style/setup, and trying to "re-learn" it with your star animation is proving difficult.
Really appreciate your work, and I hope you won't get too annoyed at my "feature request"!
Hi Jarrot. You could go into Options->KeyBindings and bind a key or mouse button to "Target Mouseover", and this will be by default perform the targeting on key/button press rather than release.
I don't plan to accelerate mouse button clicks directly on frames, because there are many complex behaviors that can occur (selecting, dragging, etc.) that are special cases per addon. It would be better for those addons to decide what mouse clicks to accelerate rather than for special cases for each addon to be included in SnowfallKeyPress.
Hello thx for an awesome mod. is there anyway to get targeting with Grid (mouse1) to be on keypress instead of release? this is something I've managed to waste a lot of gcd's on and is getting really irritated with(as healer this is not so good)...
anyways thanks for awesome mod and I understand this might not be right place to ask about this but somehow felt like it was as good as any =)
I'm having the same issue. Using Bartender4, the keys will NOT be accelerated until after I click "restore all defaults" every single time I log on. I am using version 1.6.1
Radighoul and I had a PM conversation and he believes that the problem he was seeing is actually solved in 1.6.1. I'm marking this issue as closed. Of course, if anyone finds something else, just let me know.
It seems to have improved the problem but not gotten rid of it altogether. Last night on Festergut after vanishing and attempting to immediately Ambush it once again tried to apply Kidney Punch (same bind SHIFT+Q just on different bars paged by stealth status, Ambush being on the stealth bar).
Is it possible this is just a Bartender problem? I suppose I should test it out without SFKP running and see if I can reproduce the issue. That would significantly point to the problem lying within Bartender's code.
I'm experiencing strange problems in combination with Bartender - initially (after a login / ReloadUI() ) the buttons are not accelerated.
Anyway, in the configuration menu of SFKP all hotkeys seem to be listed.
Now comes the strange thing: After pressing "Reset to Defaults" (which changes absolutely nothing) also the Bartender4 Buttons are working in highspeed mode.
If i relog (or even ReloadUI() ) now they stop working again until i press "Reset to Default"...
There might be some issue with SnowfallKeyPress and Bartender.
When using action bar paging in Bartender to swap out bars based on some conditional (in this example, stealth) it appears that the bar visually changes properly but pressing a keybind is defaulting to the previous (now invisible) action bar.
In case that wasn't clear here's a working example. I have shift + Q bound to Ambush when I'm stealthed and Kidney Shot when I'm unstealthed. I've noticed odd behavior where sometimes after I use Vanish and try to ambush it instead uses Kidney Shot despite the bar changing visually as expected.
I assumed this was an issue with Bartender perhaps not paging quickly enough and went to go see if there was an update, instead stumbling upon these comments on the Bartender page where people report this issue with SnowfallKeyPress and Bartender. Some users have reported that installing your latest version 1.6 corrects the issue but I'm running 1.6 and I still have this problem.
Also, it may be unrelated and it may be something entirely with Bartender as well but animations from SFKP never play on the stealth paged action bar, only on the normal state action bar. It's not the biggest deal but perhaps it has something to do with the previously stated problem.
Love the addon, but when it's turned on it doesn't let me use OPie. =/ I use OPie for raiding so until they are compatible I won't be able to use Snowfall.
You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.
*Clicking the donate button above will take you to PayPal.com
*Clicking the donate button above will take you to Pledgie.com