under group properties you can specify that a group is only active when a program is focused. You can also make a group active only when a particular process is NOT focused by putting an '!' in front of the processname.
So you could for example put some mediamonkey commands in a special group. Open the group properties and where it says "active only for process:" enter this: !xbmc
Then it will only listen for these commands when xbmc is not focused.
if you want more control you can use the actions that enable and disable groups:
http://voxcommando.com/mediawiki/index.php?title=Actions#EnableGroupyou can also use the events generated whenever program focus changes, and xbmc generates evens when playing and pausing. These show up in the history window and can be dragged onto a command to trigger it.
for scrolling you could enable the "stop" command group that stops scrolling. By elevating the group priority, this stop command would supercede others whenever it was active.
note that any recognized command will stop any command that is currently looping, immediately, and then execute the new command.
I've really tried to make VC as flexible as possible so that you can be creative and customize everything to your personal scenario. Of course there is always more that can be done to make it more powerful, and easier to use. Sometimes I can do both, and sometimes I must balance one against the other. Once you learn the ins and outs there is actually a ton of stuff you can do.
At some point I would like to create better tools for adapting to context.
EDIT: Kalle beat me to it! Hopefully you'll get something from both responses.