 		// Constants
 		public static const VERSION:String = "1.0.0";
 
+		// List of all auto-configurable gamepads
+		private static var knownGamepadPlatforms:Vector.<AutoPlatformInfo>;
+
 		private static var stage:Stage;
 
 		// Properties

		 * @param action		An arbritrary String id identifying the action that should be dispatched once this
		 *						input combination is detected.
		 * @param controlId		The id code of a GameInput contol, as an String. Use one of the constants from
		 *						<code>GamepadControls</code>, or a string related to the control you're expecting.
		 * @param gamepadIndex	The int of the gamepad that you want to restrict this action to. Use 0 for the
		 *						first gamepad (player 1), 1 for the second one, and so on. If a value of -1 or
		 *						<code>NaN</code> is passed, the gamepad index is never taken into consideration

			addGameInputDeviceEvents();

			// Create a list of devices for easy identification
			var i:int;

			gameInputDevices = new Vector.<GameInputDevice>();
			gameInputDeviceDefinitions = new Vector.<AutoGamepadInfo>();
			for (i = 0; i < GameInput.numDevices; i++) {
				gameInputDevices.push(GameInput.getDeviceAt(i));
				gameInputDeviceDefinitions.push(findGamepadInfo(gameInputDevices[i]));
			}

//			log("Game input devices changed; new list:");
//			for (i = 0; i < gameInputDevices.length; i++) {
//				log("  " + i + " => device.name is [" + gameInputDevices[i].name + "], identified as [" + gameInputDeviceDefinitions[i].id + "]");
//			}
		}

		private function findGamepadInfo(__gameInputDevice:GameInputDevice):AutoGamepadInfo {
			// Based on a Game InputDevice, find the internal GamepadInfo that describes this Gamepad
			var i:int, j:int;
			for (i = 0; i < knownGamepadPlatforms.length; i++) {
				for (j = 0; j < knownGamepadPlatforms[i].gamepads.length; j++) {
					if (knownGamepadPlatforms[i].gamepads[j].nameFilter == null || gameInputDevices[i].name.indexOf(knownGamepadPlatforms[i].gamepads[j].nameFilter) > -1) {
						return knownGamepadPlatforms[i].gamepads[j];
					}
				}
			}
			trace("Error! Gamepad definition not found for GameInputDevice " + __gameInputDevice.name + "!!");
			return null;
		}

		private function addGameInputDeviceEvents():void {
