I tried fooling the API by capturing the MouseEvent and setting the shiftKey to true, but unfortunately this is not possible for security reasons. Some event properties (e.g. currentTarget) are protected from change.
MapPage.prototype.onMapMouseEvent = function(evt){
evt.preventDefault();
var e = jQuery.extend(true, {}, evt);
e.shiftKey = true;
e = new MouseEvent(evt.type, e);
dojo.byId("mapDiv").dispatchEvent(e);
};
So I'll forget about this, I think I'll implement my own zoom box.