As a workaround I have a setInterval running in the background inspecting the heading value, as I am primarily interested in when the heading has changed.
setInterval(function () {
var h = Math.round(180 * scene.camera.heading / Math.PI) ;
I'm not sure if this is what you're looking for, but this is how i handled it. (This doesn't work if you're tracking). I'm new to Cesium, but the only way so far that I find that a user can move a camera is through the mouse. Left click, right click, and the middle wheel. The middle wheel can already be listened through cesium built in events, but holding down left or right click and moving your mouse isn't. Feel free to look at the following.
var mouseLeftDown = false;
var mouseRightDown = false;
var mouseHandler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
mouseHandler.setInputAction( // Wheel
function (movement) {
// ACtion of zooming in and out through wheel here
},
Cesium.ScreenSpaceEventType.WHEEL
);
mouseHandler.setInputAction( // Left down
function(movement){
mouseLeftDown = true;
},
Cesium.ScreenSpaceEventType.LEFT_DOWN
);
mouseHandler.setInputAction( // Left up
function(movement){
mouseLeftDown = false;
},
Cesium.ScreenSpaceEventType.LEFT_UP
);
mouseHandler.setInputAction( // Right down
function(movement){
mouseRightDown = true;
},
Cesium.ScreenSpaceEventType.RIGHT_DOWN
);
mouseHandler.setInputAction( // Right up
function(movement){
mouseRightDown = false;
},
Cesium.ScreenSpaceEventType.RIGHT_UP
);
document.getElementById('cesiumContainer').addEventListener('mousemove', function(e) { // Mouse moving
if (mouseLeftDown || mouseRightDown){
// Events of moving mouse while holding down left or right click here.
}
}, false);