JoyInput GetPressedInput()
    {
        //JOYSTICK BUTTONS
        for (int joyK = (int)KeyCode.Joystick1Button0; joyK <= (int)KeyCode.Joystick4Button19; joyK++)
        {
            // check for all joystick buttons
            KeyCode kc = (KeyCode)joyK;

            if (Input.GetKey(kc))
            {
                Debug.Log(kc + ": " + Input.GetKey(kc));
            }

            if (Input.GetKey(kc) && !Input.GetKeyDown(KeyCode.Escape))
            {
                return(new JoyInput(kc, E_JoystickAxis.NONE));
            }
        }

        //JOYSTICK AXS
        //----------------------------------------------------------------
        // we set the axis in the unity inputmanager and then use them here
        //----------------------------------------------------------------

        //hack pro F510 ktery vraci na tabletech pro osy 4 a 0 stale 1 (a pro 5 a 11 -1 kdyz nejsou stisknute)
        bool f510_Hack = (Game.CachedJoystickName == "Generic X-Box pad") &&
                         (Input.GetAxis(GamepadAxis.GetAxis((E_JoystickAxis)5)) < 0 || Input.GetAxis(GamepadAxis.GetAxis((E_JoystickAxis)11)) < 0);

        int result = -1;

        for (int i = 0; i < (int)E_JoystickAxis.COUNT; i++)
        {
            if (f510_Hack)
            {
                //if(i == 4 || i == 5 || i == 10 || i == 11)
                if (i == 4 || i == 10)
                {
                    continue;
                }
            }

            float  trashHold = (i < 4) ? 0.5f : 0.8f;
            string axis      = GamepadAxis.GetAxis((E_JoystickAxis)i);
            if (Input.GetAxis(axis) > trashHold && !Input.GetKeyDown(KeyCode.Escape))
            {
                result = i;
            }
        }
        if (result != -1)
        {
            return(new JoyInput(KeyCode.None, (E_JoystickAxis)result));
        }

        return(null);
    }
//----------------------------------------------
//	interface
//----------------------------------------------

    //is button fopr this action currently pressed
    public bool ControlPressed(PlayerControlsGamepad.E_Input inpAction)
    {
        if ((int)inpAction >= GetActionCount())
        {
            return(false);
        }

        JoyInput btn = m_InputK[(int)inpAction];

        if (btn.joyAxis == E_JoystickAxis.NONE)
        {
            return(Input.GetKey(btn.key));
        }
        else
        {
            return(Input.GetAxis(GamepadAxis.GetAxis(btn.joyAxis)) > 0.95f);
        }
    }
    float GetGpadAxis(E_Input inp)
    {
        JoyInput inpButton = GamepadInputManager.Instance.GetActionButton(inp);
        string   axisName  = GamepadAxis.GetAxis(inpButton.joyAxis);

        if (axisName != "")
        {
            //invert up axis for looking
            if (inp == E_Input.Axis_ViewUp)
            {
                return(-Input.GetAxis(axisName));
            }
            else
            {
                return(Input.GetAxis(axisName));
            }
        }
        else
        {
            if (inp == E_Input.Axis_MoveRight)
            {
                return(Input.GetAxis("HorizontalMove"));
            }
            else if (inp == E_Input.Axis_MoveUp)
            {
                return(Input.GetAxis("VerticalMove"));
            }
            else if (inp == E_Input.Axis_ViewRight)
            {
                return(Input.GetAxis("HorizontalView"));
            }
            else if (inp == E_Input.Axis_ViewUp)
            {
                return(Input.GetAxis("VerticalView"));
            }
        }
        return(0);
    }
    //must be called every frame
    void OnUpdate()
    {
        int numAxis = (int)E_JoystickAxis.COUNT;

        for (int i = 0; i < numAxis; i++)
        {
            float axisVal = Input.GetAxis(GamepadAxis.GetAxis((E_JoystickAxis)i));
            if (m_WasAxisPressed[i] == false && axisVal > 0.65f)
            {
                m_WasAxisPressed[i] = true;
                m_AxisDown[i]       = true;
            }
            else if (m_WasAxisPressed[i] == true && axisVal < 0.25f)
            {
                m_WasAxisPressed[i] = false;
                m_AxisUp[i]         = true;
            }
            else
            {
                m_AxisDown[i] = false;
                m_AxisUp[i]   = false;
            }
        }
    }