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 ]