 			return _alwaysPreventDefault;
 		}
 
+		/**
+		 * Whether to run <code>preventDefault()</code> on Keyboard events or not.
+		 *
+		 * <p>When this is set to <code>false</code>, KeyActionBinder doesn't try stopping the propagation of
+		 * standard Keyboard behavior. In general, this is a bad idea, as certain keys (such as A on the OUYA)
+		 * tend to trigger a <code>Keyboard.BACK</code> key event, potentially closing your application. Only
+		 * set this to <code>false</code> if you are handling Keyboard events in your own code.</p>
+		 *
+		 * <p>Default is true.</p>
+		 */
 		public function set alwaysPreventDefault(__value:Boolean):void {
 			// TODO: this is a dumb getter/setter just for ASDocs reasons
 			_alwaysPreventDefault = __value;

		// ================================================================================================================
		// STATIC CONSTRUCTOR ---------------------------------------------------------------------------------------------

		public static function init(__stage:Stage):void  {
			stage = __stage;


		/**
		 * Returns the number of devices currently connected, regardless of whether they're valid or not.
		 *
		 * @see #maintainPlayerPositions
		 * @see #getDeviceAt()
		 * @see #getDeviceTypeAt()
		 */
		public function getNumDevices():uint {
			return gameInputDevices.length;
		}

		/**
		 * Returns the <code>GameInputDevice</code> associated with a player index, if any.
		 *
		 * <p>The value returned from this function can be <code>null</code>, especially if <code>maintainPlayerPositions</code>
		 * is set to <code>true</code> and the index refers to a gamepad that has been removed.</p>
		 *
		 * @see #maintainPlayerPositions
		 * @see #getNumDevices()
		 * @see #getDeviceTypeAt()
		 */
		public function getDeviceAt(__index:uint):GameInputDevice {
			return gameInputDevices.length > __index && gameInputDevices[__index] != null ? gameInputDevices[__index] : null;
		}

		/**
		 * Returns the built-in id of the gamepad type at a certain position.
		 *
		 * <p>The value returned from this function can be <code>null</code> if <code>maintainPlayerPositions</code>
		 * is set to <code>true</code> and the index refers to a gamepad that has been removed, or if the gamepad at that
		 * location has not been properly identified by KeyActionBinder.</p>
		 *
		 * <p>Check the controllers.json file for a list of supported gamepads, and their ids.</p>
		 *
		 * @see #maintainPlayerPositions
		 * @see #getNumDevices()
		 * @see #getDeviceAt()
		 */
		public function getDeviceTypeAt(__index:uint):String {
			return gameInputDeviceDefinitions.length > __index && gameInputDeviceDefinitions[__index] != null ? gameInputDeviceDefinitions[__index].getType() : null;
		}

		/**
		 * Returns the current identified platform. This is a list of strings that can contain more than one platform id.
		 *
		 * <p>Check the controllers.json file for a list of supported platforms, and their ids.</p>
		 */
		public function getPlatformTypes():Vector.<String> {
			var platforms:Vector.<String> = new Vector.<String>();
			for (var i:int = 0; i < knownGamepadPlatforms.length; i++) {
