////////////////////////////////////////////////////////////////////////////

        #endregion

        #region         //// Methods ///////////

        ////////////////////////////////////////////////////////////////////////////
        public virtual void Initialize()
        {
            keys.Clear();
            mouseButtons.Clear();
            gamePadButtons.Clear();

#if (!XBOX && !XBOX_FAKE)
            foreach (string str in Enum.GetNames(typeof(Keys)))
            {
                InputKey key = new InputKey();
                key.Key = (Keys)Enum.Parse(typeof(Keys), str);
                keys.Add(key);
            }

            foreach (string str in Enum.GetNames(typeof(MouseButton)))
            {
                InputMouseButton btn = new InputMouseButton();
                btn.Button = (MouseButton)Enum.Parse(typeof(MouseButton), str);
                mouseButtons.Add(btn);
            }

            foreach (string str in Enum.GetNames(typeof(GamePadButton)))
            {
                InputGamePadButton btn = new InputGamePadButton();
                btn.Button = (GamePadButton)Enum.Parse(typeof(GamePadButton), str);
                gamePadButtons.Add(btn);
            }
#else
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.None));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.Start));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.Back));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.Up));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.Down));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.Left));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.Right));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.A));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.B));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.X));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.Y));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.BigButton));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftShoulder));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightShoulder));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftTrigger));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightTrigger));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStick));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStick));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickLeft));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickRight));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickUp));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickDown));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickLeft));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickRight));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickUp));
            gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickDown));
#endif
        }
    ////////////////////////////////////////////////////////////////////////////

    #endregion

    #region //// Methods ///////////

    ////////////////////////////////////////////////////////////////////////////
    public virtual void Initialize()
    {
      keys.Clear();
      mouseButtons.Clear();
      gamePadButtons.Clear();      
      
      #if (!XBOX && !XBOX_FAKE)      
        foreach (string str in Enum.GetNames(typeof(Keys)))
        {
          InputKey key = new InputKey();
          key.Key = (Keys)Enum.Parse(typeof(Keys), str);
          keys.Add(key);
        }
              
        foreach (string str in Enum.GetNames(typeof(MouseButton)))
        {
          InputMouseButton btn = new InputMouseButton();
          btn.Button = (MouseButton)Enum.Parse(typeof(MouseButton), str);
          mouseButtons.Add(btn);
        }     
              
        foreach (string str in Enum.GetNames(typeof(GamePadButton)))
        {
          InputGamePadButton btn = new InputGamePadButton();
          btn.Button = (GamePadButton)Enum.Parse(typeof(GamePadButton), str);
          gamePadButtons.Add(btn);
        }     
      #else             
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.None));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.Start));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.Back));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.Up));        
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.Down));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.Left));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.Right));       
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.A));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.B));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.X));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.Y));         
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.BigButton)); 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftShoulder)); 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightShoulder)); 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftTrigger)); 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightTrigger));         
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStick)); 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStick));         
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickLeft));         
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickRight));                 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickUp));
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickDown));                         
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickLeft));                 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickRight));                 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickUp));                 
        gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickDown));                 
      #endif        
    }