In my set-up I have a camera that must be able to handle both free-look swivelling and orbiting modes.
If I understand swiveling and orbiting right, then I don't see where gimbal lock or quaternions need to come into this. I'm thinking that swiveling is rotating around a vertical axis and then looking up or down, and orbiting is the same thing, but you also move so that the target is always a fixed distance in front of you. You don't have to do any rolling, and the up-vector of the camera is fixed in the plane made by the direction you are looking and the world's vertical axis. Google suggests that Ogre will keep the camera up-vector like this automatically, so all you need to do is set the position of the camera and the direction you want it to face.
This is basically what I have in my game (except I set the up-vector myself), so I'll describe that.
For the swiveling camera, the parameters for the camera are a vector p for your position, an azimuth angle for the compass direction you are facing, and an elevation angle. From the azimuth and elevation with a little trigonometry you can get a unit vector v for the direction you want to look in. Then you set the position of the camera to be p and the direction to be v - it looks like the Ogre camera has commands for both of these. You set the mouse directly to change the azimuth or elavation.
For the orbiting camera, it's almost exactly the same, except that if the target is at position t and you want to orbit at distance d from it, you set the camera position to be t-d*v and the direction again as v. Mouse controls are just the same.
Sorry if I've misunderstood what the question is about.