function Keyboard(dontInitialize)
{
	/**
	 * Array with keyboard keys status.
	 *
	 * @property keys
	 * @type {Array}
	 */
	this.keys = [];

	/**
	 * The actions array serves as a buffer for the key input actions.
	 *
	 * Until the update method is called it stores all the key stroke actions.
	 *
	 * On update the key strokes are updated and the keys array stores the correct values.
	 *
	 * @property actions
	 * @type {Array}
	 */
	this.actions = [];

	var self = this;
	var actions = this.actions;

	/**
	 * Event manager used to handle the keyup, keydown and focus events.
	 *
	 * On each event actions are added to the actions array.
	 *
	 * @property events
	 * @type {EventManager}
	 */
	this.events = new EventManager();
	this.events.add(window, "keydown", function(event)
	{
		actions.push(event.keyCode);
		actions.push(Key.DOWN);
	});
	this.events.add(window, "keyup", function(event)
	{
		actions.push(event.keyCode);
		actions.push(Key.UP);
	});
	this.events.add(window, "focus", function(event)
	{
		self.reset();
	});

	if (dontInitialize !== true)
	{
		this.create();
	}
}
Keyboard instance for input in sync with the running application, internally stores the key transitions provided by the browser.

Allow to detect every key press, release event in sync with the app frame update.

The keyboard object provided by scripts is automatically updated by the runtime handler.

@class Keyboard
@module Input
@param {boolean} dontInitialize If true the mouse events are not created.