docs: function mxKeyHandler(graph, target)
  {
  	if (graph != null)
  	{
  		this.graph = graph;
  		this.target = target || document.documentElement;
  		
  		// Creates the arrays to map from keycodes to functions
  		this.normalKeys = [];
  		this.shiftKeys = [];
  		this.controlKeys = [];
  		this.controlShiftKeys = [];
  		
  		this.keydownHandler = mxUtils.bind(this, function(evt)
  		{
  			this.keyDown(evt);
  		});
  
  		// Installs the keystroke listener in the target
  		mxEvent.addListener(this.target, 'keydown', this.keydownHandler);
  		
  		// Automatically deallocates memory in IE
  		if (mxClient.IS_IE)
  		{
  			mxEvent.addListener(window, 'unload',
  				mxUtils.bind(this, function()
  				{
  					this.destroy();
  				})
  			);
  		}
  	}
  }