Example #1
0
 private static Microsoft.Xna.Framework.Input.ButtonState ConvertToButtonState(
     SharpDX.XInput.GamepadButtonFlags buttonFlags,
     SharpDX.XInput.GamepadButtonFlags desiredButton)
 {
     return(buttonFlags.HasFlag(desiredButton) ?
            Microsoft.Xna.Framework.Input.ButtonState.Pressed : Microsoft.Xna.Framework.Input.ButtonState.Released);
 }
Example #2
0
 private static Microsoft.Xna.Framework.Input.Buttons AddButtonIfPressed(Microsoft.Xna.Framework.Input.Buttons originalButtonState,
                                                                         SharpDX.XInput.GamepadButtonFlags buttonFlags,
                                                                         SharpDX.XInput.GamepadButtonFlags xInputButton,
                                                                         Microsoft.Xna.Framework.Input.Buttons xnaButton)
 {
     Microsoft.Xna.Framework.Input.ButtonState buttonState = ConvertToButtonState(buttonFlags, xInputButton);
     return(buttonState == Microsoft.Xna.Framework.Input.ButtonState.Pressed ? originalButtonState | xnaButton : originalButtonState);
 }
Example #3
0
        private static Buttons AddButtonIfPressed(
            SharpDX.XInput.GamepadButtonFlags buttonFlags,
            SharpDX.XInput.GamepadButtonFlags xInputButton,
            Buttons xnaButton)
        {
            var buttonState = ((buttonFlags & xInputButton) == xInputButton) ? ButtonState.Pressed : ButtonState.Released;

            return(buttonState == ButtonState.Pressed ? xnaButton : 0);
        }
Example #4
0
 private static Microsoft.Xna.Framework.Input.GamePadDPad ConvertToGamePadDPad(
     SharpDX.XInput.GamepadButtonFlags buttonFlags)
 {
     return(new Microsoft.Xna.Framework.Input.GamePadDPad(
                upValue: ConvertToButtonState(buttonFlags, SharpDX.XInput.GamepadButtonFlags.DPadUp),
                downValue: ConvertToButtonState(buttonFlags, SharpDX.XInput.GamepadButtonFlags.DPadDown),
                leftValue: ConvertToButtonState(buttonFlags, SharpDX.XInput.GamepadButtonFlags.DPadLeft),
                rightValue: ConvertToButtonState(buttonFlags, SharpDX.XInput.GamepadButtonFlags.DPadRight)));
 }
        private static GamePadButtons ConvertToButtons(SharpDX.XInput.GamepadButtonFlags buttonFlags,
                                                       short leftThumbX, short leftThumbY,
                                                       short rightThumbX, short rightThumbY,
                                                       byte leftTrigger,
                                                       byte rightTrigger)
        {
            var ret = (Buttons)0;

            ret |= AddButtonIfPressed(buttonFlags, GBF.A, Buttons.A);
            ret |= AddButtonIfPressed(buttonFlags, GBF.B, Buttons.B);
            ret |= AddButtonIfPressed(buttonFlags, GBF.Back, Buttons.Back);
            ret |= AddButtonIfPressed(buttonFlags, GBF.DPadDown, Buttons.DPadDown);
            ret |= AddButtonIfPressed(buttonFlags, GBF.DPadLeft, Buttons.DPadLeft);
            ret |= AddButtonIfPressed(buttonFlags, GBF.DPadRight, Buttons.DPadRight);
            ret |= AddButtonIfPressed(buttonFlags, GBF.DPadUp, Buttons.DPadUp);
            ret |= AddButtonIfPressed(buttonFlags, GBF.LeftShoulder, Buttons.LeftShoulder);
            ret |= AddButtonIfPressed(buttonFlags, GBF.RightShoulder, Buttons.RightShoulder);
            ret |= AddButtonIfPressed(buttonFlags, GBF.LeftThumb, Buttons.LeftStick);
            ret |= AddButtonIfPressed(buttonFlags, GBF.RightThumb, Buttons.RightStick);
            ret |= AddButtonIfPressed(buttonFlags, GBF.Start, Buttons.Start);
            ret |= AddButtonIfPressed(buttonFlags, GBF.X, Buttons.X);
            ret |= AddButtonIfPressed(buttonFlags, GBF.Y, Buttons.Y);

            ret |= AddThumbstickButtons(leftThumbX, leftThumbY,
                                        SharpDX.XInput.Gamepad.LeftThumbDeadZone,
                                        Buttons.LeftThumbstickLeft,
                                        Buttons.LeftThumbstickRight,
                                        Buttons.LeftThumbstickUp,
                                        Buttons.LeftThumbstickDown);

            ret |= AddThumbstickButtons(rightThumbX, rightThumbY,
                                        SharpDX.XInput.Gamepad.RightThumbDeadZone,
                                        Buttons.RightThumbstickLeft,
                                        Buttons.RightThumbstickRight,
                                        Buttons.RightThumbstickUp,
                                        Buttons.RightThumbstickDown);

            if (leftTrigger >= SharpDX.XInput.Gamepad.TriggerThreshold)
            {
                ret |= Buttons.LeftTrigger;
            }

            if (rightTrigger >= SharpDX.XInput.Gamepad.TriggerThreshold)
            {
                ret |= Buttons.RightTrigger;
            }

            // Check for the hardware back button.
            if (Back)
            {
                ret |= Buttons.Back;
            }

            return(new GamePadButtons(ret));
        }
Example #6
0
        private static Microsoft.Xna.Framework.Input.GamePadButtons ConvertToButtons(SharpDX.XInput.GamepadButtonFlags buttonFlags,
                                                                                     short leftThumbX, short leftThumbY,
                                                                                     short rightThumbX, short rightThumbY,
                                                                                     byte leftTrigger,
                                                                                     byte rightTrigger)
        {
            var ret = new Microsoft.Xna.Framework.Input.Buttons();

            for (int i = 0; i < buttonMap.Count; i++)
            {
                var curMap = buttonMap[i];
                ret = AddButtonIfPressed(ret, buttonFlags, curMap.Item1, curMap.Item2);
            }

            ret = AddThumbstickButtons(leftThumbX, leftThumbY,
                                       SharpDX.XInput.Gamepad.LeftThumbDeadZone, ret,
                                       Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickLeft,
                                       Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickRight,
                                       Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickUp,
                                       Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickDown);

            ret = AddThumbstickButtons(rightThumbX, rightThumbY,
                                       SharpDX.XInput.Gamepad.RightThumbDeadZone, ret,
                                       Microsoft.Xna.Framework.Input.Buttons.RightThumbstickLeft,
                                       Microsoft.Xna.Framework.Input.Buttons.RightThumbstickRight,
                                       Microsoft.Xna.Framework.Input.Buttons.RightThumbstickUp,
                                       Microsoft.Xna.Framework.Input.Buttons.RightThumbstickDown);

            if (leftTrigger >= SharpDX.XInput.Gamepad.TriggerThreshold)
            {
                ret = ret | Microsoft.Xna.Framework.Input.Buttons.LeftTrigger;
            }

            if (rightTrigger >= SharpDX.XInput.Gamepad.TriggerThreshold)
            {
                ret = ret | Microsoft.Xna.Framework.Input.Buttons.RightTrigger;
            }

            var r = new Microsoft.Xna.Framework.Input.GamePadButtons(ret);

            return(r);
        }
Example #7
0
        /// <summary>
        /// 按键改变时触发
        /// </summary>
        /// <param name="obj"></param>
        private void XInputHelper_ButtonsChange(SharpDX.XInput.GamepadButtonFlags obj)
        {
            var vObjSplit = obj.ToString()?.Replace(" ", "")?.Split(',');

            this.Dispatcher.Invoke(new Action(() =>
            {
                IceXboxkeyABXY.XKeyState = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.X}");
                IceXboxkeyABXY.YKeyState = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.Y}");
                IceXboxkeyABXY.AKeyState = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.A}");
                IceXboxkeyABXY.BKeyState = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.B}");

                IceXboxkeyLRTB.TopKeyState    = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.DPadUp}");
                IceXboxkeyLRTB.ButtomKeyState = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.DPadDown}");
                IceXboxkeyLRTB.LeftKeyState   = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.DPadLeft}");
                IceXboxkeyLRTB.RightKeyState  = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.DPadRight}");

                IceXboxMenu.BackKeyState  = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.Back}");
                IceXboxMenu.StartKeyState = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.Start}");

                IceXboxLBRB.LBKeyState = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.LeftShoulder}");
                IceXboxLBRB.RBKeyState = vObjSplit.Contains($"{SharpDX.XInput.GamepadButtonFlags.RightShoulder}");
            }));
        }
Example #8
0
 private static ButtonState ConvertToButtonState(
     SharpDX.XInput.GamepadButtonFlags buttonFlags,
     SharpDX.XInput.GamepadButtonFlags desiredButton)
 {
     return(((buttonFlags & desiredButton) == desiredButton) ? ButtonState.Pressed : ButtonState.Released);
 }