From Aurelien Albert, "There is a little bug in the osg::Group::insertChild method :

If the index is more than the size of _children vector, the new child is pushed at the end of the vector, but the index value is unmodified, so an incorrect value is passed to the "childInserted" method."
Initial skeleton of new osgkeystone example
Experiments with modifying the projection matrix to provide keystoning.
Added event handle for interactive setting of keystone variables
Improve corner point tracking/keystone computation
Added arrow key support.  Added support for using ctrl and shift keys to modulate how senstive the mouse and key movement is when modifying the keystone parameters.
Added keystone grid to aid editing
Added check against isVertexBufferObjectSupported() in set*Pointer() methods
Updated developer release number
Improved the setup of the keystone distortion correction mesh.
Introduced shearing of the image
Moved local variable into local scope to avoid it being created when not used.
Added keypad control of corner points
Changed the way that the keystone geometry is calculated.
Removed old experimental keystone code to clean up the example
Moved the keystone geometry computation into a Keystone::compute3DPositions(..) method
Add support for a finer grained mesh on the distortion mesh for higher quality results.
Refactoed the grid rendering so that it's now implemented as part of the distortion mesh pass, leaving the main scene graph alone.
Moved keystone event handler onto the keystone distortion Camera.
Added support for enable/disabling the keystone editing using the Ctrl-g key to toggle the UI and grid on/off.