Plugins can be used to add certain features, such as hotkey support, to Blackbox for Windows. To load a plugin, you simply need to add the relative path of the plugin (from your Blackbox directory) to the file plugins.rc (located in the Blackbox directory). For example, if you installed Blackbox into c:\Blackbox, and your plugin (let's say BBKeys.dll) is located in c:\Blackbox\plugins\BBKeys, you should add the line...

plugins\BBKeys\BBKeys.dll

...to plugins.rc. Blackbox will even warn you if it can not find the plugin you've specified. Simple, eh? :)

[ Please note that some plugins may also have their own configuration files (BBKeys, for instance, uses a file named bbkeys.rc). For more information, try this crazy piece of advice: Read the plugin documentation! <g> ]

As of Blackbox for Windows 0.0.60, plugins have the option to support broadcast messages (we refer to them as bro@ms ) to communicate with other plugins and Blackbox itself (naturally, Blackbox can also communicate with these plugins). A bro@m command can be sent by using an external plugin such as BBKeys, or using the Blackbox menu, and is recognized by the first letter of the command: @.

If you have tried out LiteStep in the past, you may at first find bro@ms similar to LiteStep !bangs. However, although they share some similarities, the way they are handled is quite different. While !bangs are registered by a LiteStep module at startup and unregistered at exit, bro@ms are just that - broadcast messages. What this means is that *any* plugin can listen to *any* message sent by *any* source (Blackbox or other plugins/tools). The upside of this is a much simplified handling and the possibility for two plugins to listen to (ie. "share") the same bro@m. The downside is a very small extra overhead (= a few extra strcmp's for you coders out there). In our opinion, this was a small price to pay to get basic (yet powerful) message handling into Blackbox for Windows.

As pointed out above, each plugin can have its own set of bro@ms, but several plugins can also listen to (ie. "share") the same bro@m. As an example, there are two "global" bro@ms that should/must be supported by all plugins: @BBShowPlugins and @BBHidePlugins. These are used by Blackbox to enable easy access to plugins, while at the same time making it possible to hide them to get that good old Blackbox "clean desktop" feeling (please note that these two bro@ms are meant only for Blackbox internal use; end users (that's you btw! <g>) should use the [toggleplugins] menu command or TogglePlugins BBKeys command instead).

Examples? Sure. Here's how to use BBKeys to control multiamp (the first two plugins to support bro@ms):

KeyToGrab(Left), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maPrev)
KeyToGrab(Enter), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maPlay)
KeyToGrab(Spacebar), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maPause)
KeyToGrab(Num0), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maStop)
KeyToGrab(Right), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maNext)
KeyToGrab(Add), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maOpenFile)
KeyToGrab(Mul), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maMenu)
KeyToGrab(Sub), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maPower)
KeyToGrab(Up), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maVolumeUp)
KeyToGrab(Down), WithModifier(Ctrl+Win), WithAction(ExecCommand), DoThis(@maVolumeDown)

...hopefully, that was self-explanatory... right? :)

[ For more information about bro@ms supported by specific plugins... you know the answer already, don't you? :P ]