private void X_StateChanged(object?sender, XboxControllerStateChangedEventArgs e)
        {
            PreviousState = NewState;

            NewState = new(
                X.IsDPadUpPressed,
                X.IsDPadDownPressed,
                X.IsDPadLeftPressed,
                X.IsDPadRightPressed,
                X.IsAPressed,
                X.IsBPressed,
                X.IsBackPressed,
                X.IsStartPressed);

            var AnyKeyWentDown =
                (!PreviousState.IsAPressed && NewState.IsAPressed) ||
                (!PreviousState.IsBPressed && NewState.IsBPressed) ||
                (!PreviousState.IsBackPressed && NewState.IsBackPressed) ||
                (!PreviousState.IsStartPressed && NewState.IsStartPressed) ||
                (!PreviousState.IsDPadUpPressed && NewState.IsDPadUpPressed) ||
                (!PreviousState.IsDPadDownPressed && NewState.IsDPadDownPressed) ||
                (!PreviousState.IsDPadLeftPressed && NewState.IsDPadLeftPressed) ||
                (!PreviousState.IsDPadRightPressed && NewState.IsDPadRightPressed);

            if (AnyKeyWentDown)
            {
                OnAnyKeyDown(EventArgs.Empty);
            }
        }
Пример #2
0
 async void handHeldController_StateChanged(object sender, XboxControllerStateChangedEventArgs e)
 {
     if (null != panTilt && null != firingControl)
     {
         await UserInputControl.HandleInput(this, panTilt, firingControl, null, this.handHeldController);
     }
 }
Пример #3
0
        void _selectedController_StateChanged(object sender, XboxControllerStateChangedEventArgs e)
        {
            OnPropertyChanged("SelectedController");

            var p = new DoublePoint(-SelectedController.RightThumbStick.X,
                SelectedController.RightThumbStick.Y);

            System.Diagnostics.Trace.WriteLine(string.Format("game x({0}) y({1})", p.X, p.Y));

            if (Math.Abs(p.X) > 10000 || Math.Abs(p.Y) > 10000)
            {
                changeDebounce = 0;

                DiamondPoint = DiamondToolbox.CartesianToDiamond(p, 32767);
                DiamondPoint.Left = Scale(DiamondPoint.Left, -32767, 32767, -100, 100);
                DiamondPoint.Right = Scale(DiamondPoint.Right, -32767, 32767, -100, 100);

                System.Diagnostics.Trace.WriteLine(string.Format("DiamondPoint left({0}) right({1})",
                    DiamondPoint.Left, DiamondPoint.Right));

                string jsn = JsonConvert.SerializeObject(new { Cmd = "MOV", M1 = (float)DiamondPoint.Left, M2 = (float)DiamondPoint.Right });
                if (Mqtt?.IsConnected ?? false)
                    Mqtt.Publish("robot1/Cmd", UTF8Encoding.ASCII.GetBytes(jsn));
            }
            else
            {
                if (++changeDebounce < 10 )
                {
                    string jsn = JsonConvert.SerializeObject(new { Cmd = "MOV", M1 = (float)0, M2 = (float)0 });
                    if (Mqtt?.IsConnected ?? false)
                        Mqtt.Publish("robot1/Cmd", UTF8Encoding.ASCII.GetBytes(jsn));
                }
            }
        }
Пример #4
0
        private void _selectedController_StateChanged(object sender, XboxControllerStateChangedEventArgs e)
        {
            MethodInvoker mi = delegate
            {
                leftStickXBar.Value = normalizeValue(_selectedController.LeftThumbStick.X, 32768);
                leftStickYBar.Value = normalizeValue(_selectedController.RightThumbStick.X, 32768);
                rightStickYBar.Value = normalizeValue(_selectedController.RightThumbStick.Y, 32768);
                leftStickXLabel.Text = _selectedController.LeftThumbStick.X.ToString();
                leftStickYLabel.Text = _selectedController.LeftThumbStick.Y.ToString();
                if (_selectedController.IsDPadDownPressed)
                    ChangeOffset(false);
                if (_selectedController.IsDPadUpPressed)
                    ChangeOffset(true);
                if (_selectedController.IsStartPressed)
                    _shutdown = _shutdown == -1 ? 0 : -2;
                label3.Text = _selectedController.RightThumbStick.Y.ToString();
            };
            if (InvokeRequired)
                this.Invoke(mi);
            //OnPropertyChanged("SelectedController");
            if (updated)
            {
                for (int i = 0; i < 3; ++i)
                    oldVals[i] = newVals[i];
                updated = false;

            }

            newVals[0] = (int)ExtensionMethods.Map(leftStickXBar.Value, 0, 65536, 45, 135);
            newVals[1] = (int)ExtensionMethods.Map(leftStickYBar.Value, 0, 65536, 45, 135);
            newVals[2] = (int)ExtensionMethods.Map(rightStickYBar.Value, 0, 65536, 0, 180);
        }
Пример #5
0
 void xBoxControl_StateChanged(object sender, XboxControllerStateChangedEventArgs e)
 {
     XinputKey.GetXinputKey(e);
     SetKeys();
 }
Пример #6
0
 void _selectedController_StateChanged(object sender, XboxControllerStateChangedEventArgs e)
 {
     OnPropertyChanged("SelectedController");
 }
Пример #7
0
        private void ControllerOnStateChanged(object sender, XboxControllerStateChangedEventArgs xboxControllerStateChangedEventArgs)
        {
            if (!this.Controller.IsConnected || !this.AcceptingControllerInput)
                return;

            // Simulate keyboard presses for left thumbstick movement, A button press

            ControllerThumbstickPosition previousPosition =
                GetPositionForGamepad(xboxControllerStateChangedEventArgs.PreviousInputState.Gamepad);
            ControllerThumbstickPosition currentPosition =
                GetPositionForGamepad(xboxControllerStateChangedEventArgs.CurrentInputState.Gamepad);

            if (currentPosition != previousPosition)
            {
                if (currentPosition == ControllerThumbstickPosition.Left)
                    SendKeys.SendWait("{LEFT}");
                else if (currentPosition == ControllerThumbstickPosition.Right)
                    SendKeys.SendWait("{RIGHT}");
            }

            if (this.Controller.IsAPressed)
                SendKeys.SendWait("{ENTER}");
        }
Пример #8
0
        public static void GetXinputKey(XboxControllerStateChangedEventArgs arg)
        {
            _arg = arg;
            #region Tigger
            if (arg.CurrentInputState.Gamepad.bLeftTrigger != 0)
            {
                XKS.LeftTigger = Down;
            }
            else if (arg.CurrentInputState.Gamepad.bLeftTrigger == 0 && arg.PreviousInputState.Gamepad.bLeftTrigger != 0)
            {
                XKS.LeftTigger = Up;
            }
            else
            {
                XKS.LeftTigger = NaN;
            }

            if (arg.CurrentInputState.Gamepad.bRightTrigger != 0 && arg.PreviousInputState.Gamepad.bRightTrigger==0)
            {
                XKS.RightTigger = Down;//arg.CurrentInputState.Gamepad.bRightTrigger;
            }
            else if(arg.CurrentInputState.Gamepad.bRightTrigger == 0 && arg.PreviousInputState.Gamepad.bRightTrigger != 0)
            {
                XKS.RightTigger = Up;
            }
            else
            {
                XKS.RightTigger = NaN;
            }
            #endregion

            #region LeftStick
            if (arg.CurrentInputState.Gamepad.sThumbLY > 0)
            {
                XKS.LeftStickUp = arg.CurrentInputState.Gamepad.sThumbLY;
            }
            else if (arg.CurrentInputState.Gamepad.sThumbLY < 0)
            {
                XKS.LeftStickDown = -arg.CurrentInputState.Gamepad.sThumbLY;
            }
            else
            {
                XKS.LeftStickUp = NaN;
                XKS.LeftStickDown = NaN;
            }

            if (arg.CurrentInputState.Gamepad.sThumbLX > 0)
            {
                XKS.LeftStickRight = arg.CurrentInputState.Gamepad.sThumbLX;
            }
            else if (arg.CurrentInputState.Gamepad.sThumbLX < 0)
            {
                XKS.LeftStickLeft = -arg.CurrentInputState.Gamepad.sThumbLX;
            }
            else
            {
                XKS.LeftStickRight = NaN;
                XKS.LeftStickLeft = NaN;
            }
            #endregion

            #region RightStick
            if (arg.CurrentInputState.Gamepad.sThumbRY != 0)
            {
                XKS.RightStickUp = arg.CurrentInputState.Gamepad.sThumbRY;
            }
            else
            {
                XKS.RightStickUp = NaN;
            }

            if (arg.CurrentInputState.Gamepad.sThumbRX != 0)
            {
                XKS.RightStickLeft = arg.CurrentInputState.Gamepad.sThumbRX;
            }
            else
            {
                XKS.RightStickLeft = NaN;
            }
            #endregion

            #region buttons
            //十字键
            XKS.Up = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_DPAD_UP);
            XKS.Down = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_DPAD_DOWN);
            XKS.Left = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_DPAD_LEFT);
            XKS.Right = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_DPAD_RIGHT);
            //ABXY
            XKS.X = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_X);
            XKS.Y = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_Y);
            XKS.A = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_A);
            XKS.B = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_B);

            //Bumper&Stick
            XKS.LeftBumper = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_LEFT_SHOULDER);
            XKS.RightBumper = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_RIGHT_SHOULDER);
            XKS.LeftStick = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_LEFT_THUMB);
            XKS.RightStick = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_RIGHT_THUMB);

            //Start&Back
            XKS.Start = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_START);
            XKS.Back = setKeys((int)ButtonFlags.XINPUT_GAMEPAD_BACK);

            #endregion
        }