You are an experienced programmer and have a problem with the engine, shaders, or advanced effects? Here you'll get answers. No questions about C++ programming or topics which are answered in the tutorials!
That is exactly what I would do. just write onevent methods for your scenenode and that let the set Event reciever give it to the onevent method you need.
But there's one thing that bugs me. How it is done that when mouse in operating with gui elements (moving windows, interact with scroll bar, ...) the default cameras (FPS and Maya) dosn't respond to events ?
There currently isn't any "OnHover" functionality that you can use to tell when the mouse is over a GUI object. But you could write your own using ICursorControl->getPosition and the IGUIElements position.
Another way that you could solve your problem is to add a check in your OnEvent. When the GUI is active, don't send the message to the camera.
Ok looks like it's called from CSceneManager::drawAll().
That calls the OnPostRender() method of all scene nodes (I think) so if you have a FPS camera it will then have its OnPostRender() called which it turn calls CCameraFPSSceneNode::animate() which appears to use/change the current cursor position.