public IEnumerable <string> GetInput()
        {
            var allOutputs = new List <string>();

            if (MouseTranslator != null)
            {
                allOutputs.AddRange(MouseTranslator.Translate(Mouse.GetState()));
            }

            if (KeyboardTranslator != null)
            {
                allOutputs.AddRange(KeyboardTranslator.Translate(Keyboard.GetState().GetPressedKeys()));
            }

            if (GamePadsTranslators != null)
            {
                var index = GamePadsTranslators.Count;
                allOutputs
                .AddRange
                (
                    GamePadsTranslators.Select(gPadTranslator =>
                {
                    return(gPadTranslator.Translate(GamePad.GetState(index: index--)));
                }
                                               )
                    .SelectMany(input => input));
            }

            if (JoystickTranslators != null)
            {
                var index = JoystickTranslators.Count;
                allOutputs
                .AddRange
                (
                    JoystickTranslators.Select(joystickTranslator =>
                {
                    return(joystickTranslator.Translate(Joystick.GetState(index--)));
                }
                                               )
                    .SelectMany(input => input));
            }
            if (ScreenServiceVector2Translator != null)
            {
                allOutputs.AddRange(ScreenServiceVector2Translator.Translate(ScreenService.Instance));
            }

            return(allOutputs);
        }
        private IList <IInputTranslator <JoystickState, IEnumerable <string> > > GetGenericJoystickTranslators()
        {
            var joystickTranslators = new List <IInputTranslator <JoystickState, IEnumerable <string> > >();

            for (int i = 0; i < GamePad.MaximumGamePadCount; i++)
            {
                try
                {
                    var jState = Joystick.GetState(i);
                    if (jState.IsConnected)
                    {
                        JoystickTranslators.Add(new JoystickDeviceToKeysTranslator(i));
                    }
                }
                catch (NullReferenceException nrex)
                {
                }
                catch (TypeInitializationException tiex)
                {
                }
            }
            return(joystickTranslators);
        }