Download
(4 Kb)
Download
Updated: 11-23-10 10:11 PM
Pictures
File Info
Updated:11-23-10 10:11 PM
Created:11-22-10 10:34 PM
Downloads:3,202
Favorites:44
MD5:
ProKeybinds
Version: 1.0a
by: Sojik [More]
About
ProKeybinds (compare to BindPad) is a lightweight graphical interface for binding keyboard and mouse buttons to spells, items and macros. It is designed to be lightweight, extremely easy to use and bug free. All keybinds are bound directly to the spells, items and macros themselves which means they're saved to Blizzard's servers.

Install
Extract the zip and place the ProKeybinds folder into your Interface\Addons folder. Log in and enable character specific bindings if that is your preference. Since you will most likely be binding very class specific spells, items and macros this is highly recommended.

Features
  • Lightweight
  • Supports class specific bindings
  • Frees room up on your actionbar
  • Displays all the current keybinds that items, macros and spells dropped into it have
  • Ability to clear all keybinds from any item, macro or spell dropped into it.
  • Easy to change keybinds
  • Binds are saved to Blizzard's servers so if you disable ProKeybinds or uninstall it the binds are saved -- Unlike with BindPad
How-To Use
In game type /prokeybinds or /pkb (or almost any other way you can shorten prokeybinds -- whatever easiest to remember). Drag spells, items and macros you want to bind into the ProKeybinds window. Click the icon and then press the button you want to use. Remember you can use control, alt, shift or any combination of the three to modify your keybinds. To use mouse buttons or the scrollwheel make sure your cursor is hovering over the smaller window below the main one. When finished binding click that smaller window closed.

To clear keybinds of a particular spell, item or macro simply right click it.

Known Issues
  • Doesn't support mounts or non-combat pets. This is because Blizzard doesn't allow you to bind directly to these things anymore. You will either have to make a macro or get another addon that will support this. I won't be adding support for this unless Blizzard allows us to bind directly to them.
  • Pet actions are not supported. Blizzard doesn't allow addons access to these actions even though some of them we are able to directly bind to. You will have to bind keys to the pet bar or create a macro for this functionality.
  • ProKeybinds does not swap keybinds on spec change yet. This is in the works. Hold tight.
Requests
I'm accepting feature requests. Please leave them in the comments. Please understand though that this is a hobby and no one gets paid for this.

Credits
ProKeybinds is based on ncBindings by nightcracker which was placed in public domain. Most of the code in this addon is his and I'm keeping it in the public domain with a copyleft licence. Do what you want with this code but please give credit to nightcracker and myself.
v1.0
Initial release.

v1.0a
Fix typo throwing errors. The last thing I do before packaging it and it has a typo. >.<
Optional Files (0)


Post A Reply Comment Options
Unread 12-14-10, 12:34 PM  
groin
A Deviate Faerie Dragon
AddOn Compiler - Click to view compilations

Forum posts: 18
File comments: 46
Uploads: 3
Originally posted by Sojik
You sure can do that. You have to use a macro. I have one to do the very thing on my rogue. Try:
Code:
#showtooltip
/use [stance]Cheap Shot;Kidney Shot


thanks a lot
groin is offline Report comment to moderator  
Reply With Quote
Unread 12-14-10, 01:25 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 168
Uploads: 12
Originally posted by groin


thanks a lot
Little tip I picked up is to use the stance conditional instead of stealth for rogues because if you're in shadow dance you're not actually in stealth as far as macros are concerned.
Sojik is offline Report comment to moderator  
Reply With Quote
Unread 12-14-10, 03:02 PM  
groin
A Deviate Faerie Dragon
AddOn Compiler - Click to view compilations

Forum posts: 18
File comments: 46
Uploads: 3
Originally posted by Sojik
Little tip I picked up is to use the stance conditional instead of stealth for rogues because if you're in shadow dance you're not actually in stealth as far as macros are concerned.
mmm? so for sub build i need to use macro with [stance] ?
groin is offline Report comment to moderator  
Reply With Quote
Unread 12-14-10, 04:59 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 168
Uploads: 12
Well just offering a fellow rogue a tip. I use [stance] or [nostance] in my macros instead of [stealth] or [nostealth] for any spec whether it has sdance or not. For one it accomplishes the same thing so it doesn't need to be rewritten if you respec and it's less characters. That can mean a lot when you're limited to 255 characters. If you don't understand forget I said anything.
Sojik is offline Report comment to moderator  
Reply With Quote
Unread 12-15-10, 01:43 AM  
groin
A Deviate Faerie Dragon
AddOn Compiler - Click to view compilations

Forum posts: 18
File comments: 46
Uploads: 3
Originally posted by Sojik
Well just offering a fellow rogue a tip. I use [stance] or [nostance] in my macros instead of [stealth] or [nostealth] for any spec whether it has sdance or not. For one it accomplishes the same thing so it doesn't need to be rewritten if you respec and it's less characters. That can mean a lot when you're limited to 255 characters. If you don't understand forget I said anything.
ok i understand, so in my macro i will use [stance] before the spell that need to be stealthed.

like
#showtooltip
/use [stance]Cheap Shot;Kidney Shot

#showtooltip
/use [stance]Sap;Gouge

ecc

ty

for ProSpecBindSwapper why you don't upload it on wowinterface? if i understand right with this addon i can set the bind to first spec, i can switch spec and set another bind to the new specific spell.
when i return to first spec the addon swap the bind automatic, or maybe just remember me the bind and i need to change it manually?

sorry my english is terrible i hope you understand me
Last edited by groin : 12-15-10 at 01:48 AM.
groin is offline Report comment to moderator  
Reply With Quote
Unread 12-15-10, 10:03 AM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 168
Uploads: 12
Originally posted by groin
ok i understand, so in my macro i will use [stance] before the spell that need to be stealthed.

like
#showtooltip
/use [stance]Cheap Shot;Kidney Shot

#showtooltip
/use [stance]Sap;Gouge

ecc

ty

for ProSpecBindSwapper why you don't upload it on wowinterface? if i understand right with this addon i can set the bind to first spec, i can switch spec and set another bind to the new specific spell.
when i return to first spec the addon swap the bind automatic, or maybe just remember me the bind and i need to change it manually?

sorry my english is terrible i hope you understand me
I could upload it for you if you want to use it and can't figure out how to download it from github. I plan to support it but the problem is I don't use it anymore. I've tackled the spec swapping problem with macros - specifically the [spec] conditional. i.e.

Code:
#showtooltip
/use [spec:1,stealth]Ambush;[spec:1]Hemorrage;Mutilate
Oh and regarding your sap/gouge macro, I recommend switched that one to stealth instead of stance because if your target is in combat (and it most likely will be if you are shadow dancing) you can't Sap them. That's one situation where you use stealth instead of stance. I actually do that with Ambush too in case I pop sdance and can't get behind the target. Backstab/Ambush would be a good pair though.
Sojik is offline Report comment to moderator  
Reply With Quote
Unread 12-16-10, 04:37 AM  
groin
A Deviate Faerie Dragon
AddOn Compiler - Click to view compilations

Forum posts: 18
File comments: 46
Uploads: 3
thank you for explanation , i haven't problem to download from github

but i could love you if you share the entire macro file text

i tried this

/startattack
/use [spec:1]Mutilate;[stealth]Ambush;Hemorrhage


but not work.

i wanted mutilate with spec 1, with spec 2 if stealth cast ambush and nostealth cast hemo
Last edited by groin : 12-18-10 at 01:11 PM.
groin is offline Report comment to moderator  
Reply With Quote
Unread 01-06-11, 12:15 AM  
desfido
A Defias Bandit

Forum posts: 2
File comments: 13
Uploads: 0
With regards to the spec swapper:
personally, I've run into the macro limit for a few keys. While I could use a macro length extender, I'd rather just have it auto swap between them.

Unfortunately, it doesn't seem the addon on github reliably works.

Specifically, it *sometimes* seems to remember my bindings for spec 1, but sometimes just keeps them the same as what they were changed to while in spec 2. & spec 2, I *always* have to redo the ones that are different. This isn't *that* much hassle since it's only a few macros, but it'd be nice to just have an addon do the work if possible.

Any advice?
desfido is offline Report comment to moderator  
Reply With Quote
Unread 01-06-11, 02:02 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 168
Uploads: 12
Originally posted by desfido
With regards to the spec swapper:
personally, I've run into the macro limit for a few keys. While I could use a macro length extender, I'd rather just have it auto swap between them.

Unfortunately, it doesn't seem the addon on github reliably works.

Specifically, it *sometimes* seems to remember my bindings for spec 1, but sometimes just keeps them the same as what they were changed to while in spec 2. & spec 2, I *always* have to redo the ones that are different. This isn't *that* much hassle since it's only a few macros, but it'd be nice to just have an addon do the work if possible.

Any advice?
I noticed the same thing. It wasn't reliable unfortunately. I haven't expanded the code or even loaded the addon since I stopped using it. I may return to it at some point and figure out why it wasn't always doing what it was supposed to.

What I can do for you now is offer to help you trim the macros down. How much are they over 255?

A few tips: You can use /use in place of /cast (they do the same thing). You can eliminate most spaces that people add to their macros to make them more readable -- i.e. /use [spec:1,stealth]Ambush;[spec:1]Hemorrhage;Mutilate works without additional spaces. Also, if the conditional is boolean, you don't need to define the negative on the second condition -- /use [mod,@self]Dense Embersilk Bandage;Mythical Healing Potion instead of /use [mod,@self]Dense Embersilk Bandage;[nomod]Mythical Healing Potion.
Last edited by Sojik : 01-06-11 at 02:03 PM.
Sojik is offline Report comment to moderator  
Reply With Quote
Unread 01-07-11, 08:04 AM  
desfido
A Defias Bandit

Forum posts: 2
File comments: 13
Uploads: 0
Unfortunately, I don't think that'll work in my case, in terms of shortening the macros. I'm already using a lot of those tricks.

Here's two where I've ended up having to split in to multiple macros:

Code:
#showtooltip
/click [bonusbar:5] BonusActionButton1
/stopmacro [bonusbar:5]
/use [nomod,spec:1]Insect Swarm;[nomod,spec:2,@mouseover,help][nomod,spec:2]Wild Growth;[nomod:alt,@mouseover,help][nomod:alt]Rejuvenation;[nomod:shift,@mouseover,help][nomod:shift]Lifebloom;Tranquility
Code:
#showtooltip
/dismount [mounted,nomod:alt,mod:shift]
/cancelform [nomod:alt,mod:shift]
/stopmacro [nomod:alt,mod:shift]
/use [nomod,spec:1]!Moonkin Form;[nomod,spec:2]!Tree of Life;[nomod:alt]Black War Wolf;[swimming]!Aquatic Form;[combat][nomod:shift]!Travel Form;!Swift Flight Form
I won't even get into my ones where I've ended up clicking specific ActionButton so that I can do different actions in different forms, and didn't have enough space to fit em all (which, I suppose, can potentially be fixed by making several diff macros w/ form conditionals bound to the same key).

For the first, I think I'll have to split to multiple macros regardless, but I could split it into "spec dependent part" and "not spec dependent part", and bind them to the same hot key. I might have to dance around the mod conditional logic a bit, so they might get a little fugly, but that seems doable.

For the 2nd, I suppose I could split out to either 2 or 3 macros, and bind dismount/cancelform macro to shift+hotkey (z in this case) directly (for example), and perhaps a ground mount to ctrl+hotkey (assuming they can be directly keybound).

Generally, I suppose some clever choices on how to split macros may make it possible to avoid having separate keybinds for specs, just by having macros bound to the right keys. But I think I'm going to end up with 2 or more macros in each of these cases, regardless of whether they're spec specific ones that are swapped to on spec change or ones with different parts split over the different keys, or whatever.

I'll have to think about it some more, and if you have any further ideas or suggestions, I'd certainly appreciate it.
desfido is offline Report comment to moderator  
Reply With Quote
Unread 01-07-11, 09:40 AM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 168
Uploads: 12
Hmm... These are interesting. Druids are my specialty. Let me try to work some magic.

For the first try:
Code:
#showtooltip
/click [bonusbar:5]BonusActionButton1
/use [mod:alt,mod:shift]Tranquility;[mod:alt,@mouseover,help][mod:alt]Lifebloom;[mod,@mouseover,help][mod]Rejuvenation;[spec:1]Insect Swarm;[@mouseover,help][]Wild Growth
This is 223 characters. I had to guess what you were going for a little. Your use of nomod was interesting. I discerned that you wanted to use Tranquility if you have alt and shift down, Lifebloom if you had alt down and Rejuvenation if you have ctrl or shift down (without alt). I moved the spec conditionals to the end and made that entire line a little more efficient while maintaining the same functionality. I also remolved the stopmacro command because if you have the possess/vehicle bar active you wouldn't be able to cast any of those spells anyway and it won't trigger the GCD or anything like that. I don't think it'll ping an error in your UI Error frame either ("Spell is unusable at this time" or something) but if it does and it bothers you I recommend you get an addon to filter these errors -- I have them all hidden pretty much as I'd get spammed with them constantly in combat with all the macros I use and all the button mashing I do.

The second is a little hard to read. I had to go through it one conditional at a time to see what you were going for. I wrote this to help me:
Code:
noalt+shift = dismount/cancelform
nomod = moontree
ctrl = mount
mod+swimming = aqua
combat or alt or ctrl/alt = Travel Form
else (shift+alt+noswimming) = flight
That helped me shorten it to this:
Code:
#showtooltip
/dismount [mod:shift]
/cancelform [mod:shift,nomod:alt]
/use [nomod,spec:1]!Moonkin Form;[nomod]!Tree of Life;[mod:ctrl]Black War Wolf;[swimming]!Aquatic Form;[combat][nomod:shift]!Travel Form;[mod:alt]!Swift Flight Form
/dismount will only dismount if you're mounted already so that isn't needed as a conditional. Also I removed the need for the stopmacro. The functionality should be exactly the same at only 236 characters.
Last edited by Sojik : 01-07-11 at 09:42 AM.
Sojik is offline Report comment to moderator  
Reply With Quote
Unread 01-07-11, 04:46 PM  
desfido
A Defias Bandit

Forum posts: 2
File comments: 13
Uploads: 0
Oh, very nice, thanks.

My use of nomod logic stems from 1) it often being shorter (though, obviously, you've shown it's not for the first one), and 2) I usually think, when I want something in a macro, "Well, if I'm not hitting anything, I want it to do X", etc., which line of though flows very naturally into nomod conditionals.

You inferred my goals exactly correctly.

You've been so successful, I may come to you for help w/ a replacement for some form dependant ones that I'm currently using
Code:
/click [bonusbar:5]ActionButton6;[nomod]ActionButton1;[nomod:shift]ActionButton2;[nomod:alt]ActionButton3;ActionButton4
and
Code:
/click [bonusbar:5]ActionButton11;[nomod]ActionButton12;[nomod:shift]ActionButton11;[nomod:alt]ActionButton10;ActionButton9
(yes I know the second one could be shortened ) for after I take another stab at them tonight (most people seem to address the issue by ignoring their Cat or Bear abilities if they're non-Ferals :P ). The reward for a job well done is another job!

Anyway, thanks again for your assistance w/ these, and thank you for your work on a great addon!
desfido is offline Report comment to moderator  
Reply With Quote
Unread 01-08-11, 02:03 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 168
Uploads: 12
Originally posted by desfido
Oh, very nice, thanks.

My use of nomod logic stems from 1) it often being shorter (though, obviously, you've shown it's not for the first one), and 2) I usually think, when I want something in a macro, "Well, if I'm not hitting anything, I want it to do X", etc., which line of though flows very naturally into nomod conditionals.

You inferred my goals exactly correctly.

You've been so successful, I may come to you for help w/ a replacement for some form dependant ones that I'm currently using
Code:
/click [bonusbar:5]ActionButton6;[nomod]ActionButton1;[nomod:shift]ActionButton2;[nomod:alt]ActionButton3;ActionButton4
and
Code:
/click [bonusbar:5]ActionButton11;[nomod]ActionButton12;[nomod:shift]ActionButton11;[nomod:alt]ActionButton10;ActionButton9
(yes I know the second one could be shortened ) for after I take another stab at them tonight (most people seem to address the issue by ignoring their Cat or Bear abilities if they're non-Ferals :P ). The reward for a job well done is another job!

Anyway, thanks again for your assistance w/ these, and thank you for your work on a great addon!
In what way do they need to be replaced? I understand what you're going for -- You want the modifiers to do different things (using action button clicking so that it's independent of form) but to disable modifier functionality when you have the possess bar. It's unfortunate there isn't a more elegant way to accomplish this. Now if you just wanted them shortened I've shortened the second one a little:
Code:
/click [bonusbar:5][nomod:shift,mod]ActionButton11;[nomod]ActionButton12;[nomod:alt]ActionButton10;ActionButton9
The first one can't be shortened any. In this case nomod is more efficient, I agree. Neither of them come close to the character limit though... What are you asking for? You're a little vague. I'm willing to help -- I actually like the challenge of writing macros and helping others accomplish their goals with 255 characters but I'm confused by your last post.
Last edited by Sojik : 01-08-11 at 02:08 PM.
Sojik is offline Report comment to moderator  
Reply With Quote
Unread 01-30-11, 09:41 PM  
martik
A Kobold Labourer

Forum posts: 0
File comments: 4
Uploads: 0
Spec swapper

Hello! I have been using your addon for some time now, and really love it. Major issue was of course the spec swapping. I downloaded your swapper from Github and it rarely worked. I took a look at it and it seems the FirstLoad variable was always true and every time it just rewrote the offspec binds. Manually changing the variable to false in the savedvariables problem fixed this. It is not a permanent solution though. So I dugg deeper and made a fix which works for me.

I changed the superawesomefunction:
Code:
local function SuperAwesomeFunction(self, event, ...)
	local arg1 = ...
	if arg1 ~= PSBS["CurrentSpec"] then
		local temp = {}
		for _, key in ipairs(keys) do
			for _, modifier in ipairs(modifiers) do
				local action = GetBindingAction(modifier..key)
				if action and action ~= "" then
					temp[modifier..key] = action
					--if PSBS["FirstLoad"]==false then
					if next(PSBS["OffspecBinds"]) ~= nil then
						SetBinding(modifier..key, nil)
					end
				end
			end
		end
		PSBS["CurrentSpec"] = arg1
		--if PSBS["FirstLoad"]==true then
		--	PSBS["FirstLoad"] = false
		--else
		if next(PSBS["OffspecBinds"]) ~= nil then
			for k, v in pairs(PSBS["OffspecBinds"]) do
				SetBinding(k, v)
			end
			SaveBindings(GetCurrentBindingSet())
		end
		PSBS["OffspecBinds"] = temp
		temp = nil
	end
end
And also removed this line:
Code:
PSBS["FirstLoad"] = PSBS["FirstLoad"] or true
This way it checks wheter there are any off spec binds saved, instead of creating a new variable to check that.

Thanks for creating such a great and light addon!
martik is offline Report comment to moderator  
Reply With Quote
Unread 01-30-11, 09:48 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 168
Uploads: 12
Re: Spec swapper

Originally posted by martik
Hello! I have been using your addon for some time now, and really love it. Major issue was of course the spec swapping. I downloaded your swapper from Github and it rarely worked. I took a look at it and it seems the FirstLoad variable was always true and every time it just rewrote the offspec binds. Manually changing the variable to false in the savedvariables problem fixed this. It is not a permanent solution though. So I dugg deeper and made a fix which works for me.

I changed the superawesomefunction:
Code:
local function SuperAwesomeFunction(self, event, ...)
	local arg1 = ...
	if arg1 ~= PSBS["CurrentSpec"] then
		local temp = {}
		for _, key in ipairs(keys) do
			for _, modifier in ipairs(modifiers) do
				local action = GetBindingAction(modifier..key)
				if action and action ~= "" then
					temp[modifier..key] = action
					--if PSBS["FirstLoad"]==false then
					if next(PSBS["OffspecBinds"]) ~= nil then
						SetBinding(modifier..key, nil)
					end
				end
			end
		end
		PSBS["CurrentSpec"] = arg1
		--if PSBS["FirstLoad"]==true then
		--	PSBS["FirstLoad"] = false
		--else
		if next(PSBS["OffspecBinds"]) ~= nil then
			for k, v in pairs(PSBS["OffspecBinds"]) do
				SetBinding(k, v)
			end
			SaveBindings(GetCurrentBindingSet())
		end
		PSBS["OffspecBinds"] = temp
		temp = nil
	end
end
And also removed this line:
Code:
PSBS["FirstLoad"] = PSBS["FirstLoad"] or true
This way it checks wheter there are any off spec binds saved, instead of creating a new variable to check that.

Thanks for creating such a great and light addon!
Thanks. I'll look into this bug and your fix.
__________________
Sojik is offline Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: