public static GamePad GetPadState(int nUserIdx) { XINPUT_STATE st = new XINPUT_STATE(); unsafe { if (XInputGetState(nUserIdx, &st) != 0) return null; } GamePad gp = new GamePad(); gp.dwPacketNumber = st.dwPacketNumber; gp.Buttons = st.Gamepad.wButtons; gp.LeftTrigger = apply_thresh(st.Gamepad.bLeftTrigger, XInput.TriggerThresh, XInput.TriggerMax); gp.RightTrigger = apply_thresh(st.Gamepad.bRightTrigger, XInput.TriggerThresh, XInput.TriggerMax); //if (m_settings.LThumbToDPad) //{ gp.ThumbL = apply_thresh_2d(st.Gamepad.sThumbLX, st.Gamepad.sThumbLY, XInput.LeftThumbThresh, XInput.ThumbstickMax); gp.ThumbR = apply_thresh_2d(st.Gamepad.sThumbRX, st.Gamepad.sThumbRY, XInput.RightThumbThresh, XInput.ThumbstickMax); /*} else { gp.ThumbL = apply_thresh_2d(st.Gamepad.sThumbLX, st.Gamepad.sThumbLY, XInput.LeftThumbThresh, XInput.ThumbstickMax); gp.ThumbR = apply_thresh_2d(st.Gamepad.sThumbRX, st.Gamepad.sThumbRY, XInput.RightThumbThresh, XInput.ThumbstickMax); }*/ return gp; }
public void Update() { if (_controller.IsConnected == false) { return; } if (XInputGetStateExProc != null) { _state = new XINPUT_STATE(); XInputGetStateExProc(_index0, out _state); } else { var slimState = _controller.GetState(); _state.dwPacketNumber = slimState.PacketNumber; _state.Gamepad.wButtons = (ushort)slimState.Gamepad.Buttons; _state.Gamepad.sThumbLX = slimState.Gamepad.LeftThumbX; _state.Gamepad.sThumbLY = slimState.Gamepad.LeftThumbY; _state.Gamepad.sThumbRX = slimState.Gamepad.RightThumbX; _state.Gamepad.sThumbRY = slimState.Gamepad.RightThumbY; _state.Gamepad.bLeftTrigger = slimState.Gamepad.LeftTrigger; _state.Gamepad.bRightTrigger = slimState.Gamepad.RightTrigger; } }
public MainWindow() { InitializeComponent(); Task.Factory.StartNew(() => { while (true) { XINPUT_STATE nextState = new XINPUT_STATE(); int result = XInputWrapper.GetState(0, ref nextState); if (result == XInput.ERROR_DEVICE_NOT_CONNECTED) { Console.WriteLine("Not Connected"); } else { if (!GamePadState.Equals(nextState)) { GamePadState = nextState; Dispatcher.Invoke(() => { Draw(); }); } } Thread.Sleep(5); } }); }
private static bool IsSerialOccupied(int serial) { if (--serial < 0 || serial > 3) { throw new ArgumentException(string.Format("Serial index ({0}) must be within range", serial)); } var state = new XINPUT_STATE(); return(XInputNatives.XInputGetState((uint)serial, ref state) == ResultWin32.ERROR_SUCCESS); }
public static int Poll(int deviceno, out XINPUT_STATE currState, out XINPUT_STATE prevState) { CurrXInputStateIndices[deviceno] ^= 1; var index = CurrXInputStateIndices[deviceno]; var currStateHandle = XInputStates[deviceno, index]; var hr = XInputGetState(deviceno, currStateHandle.AddrOfPinnedObject()); #pragma warning disable CS8605 // Unboxing a possibly null value. currState = (XINPUT_STATE)currStateHandle.Target; prevState = (XINPUT_STATE)XInputStates[deviceno, index ^ 1].Target; #pragma warning restore CS8605 // Unboxing a possibly null value. return(hr); }
public InputState(XINPUT_STATE inputState) { PacketNumber = inputState.dwPacketNumber; LeftAnalogX = inputState.Gamepad.sThumbLX; LeftAnalogY = inputState.Gamepad.sThumbLY; RightAnalogX = inputState.Gamepad.sThumbRX; RightAnalogY = inputState.Gamepad.sThumbRY; LTPressed = inputState.Gamepad.bLeftTrigger; RTPressed = inputState.Gamepad.bRightTrigger; AssignButtons(inputState.Gamepad.wButtons); }
unsafe bool CreateDevices() { // check for XInput presense haveXInput = XInput.IsXInputPresent(); if (haveXInput) { XINPUT_STATE state = new XINPUT_STATE(); for (int n = 0; n < XInput.MaxControllers; n++) { int result = XInput.GetState(n, ref state); if (!XInputNativeWrapper.Wrapper.FAILED(result)) { string name = string.Format("XBox Controller {0}", n); WindowsXBoxGamepad device = new WindowsXBoxGamepad(name, n); if (!device.Init()) { device.CallOnShutdown(); continue; } RegisterDevice(device); } } } // check for DirectInput devices //int hr = IDirectInput.EnumDevices( directInput, DInput.DI8DEVCLASS_GAMECTRL, // EnumDevicesHandler, null, DInput.DIEDFL_ATTACHEDONLY ); //if( global::DirectInput.Wrapper.FAILED( hr ) ) //{ // Log.Warning( "WindowsInputDeviceManager: IDirectInput.EnumDevices failed ({0}).", // DInput.GetOutString( DInput.DXGetErrorStringW( hr ) ) ); // return false; //} return(true); }
public void ReadState() { var inputState = new XINPUT_STATE(); _driver.GetState(_dwUserIndex, ref inputState); PreviousInputState = InputState; InputState = new InputState(inputState); if (PreviousInputState == null) { PreviousInputState = InputState; } var batteryInformation = new XINPUT_BATTERY_INFORMATION(); _driver.GetBatteryInformation(_dwUserIndex, _devType, ref batteryInformation); PreviousBatteryState = BatteryState; BatteryState = new BatteryState(batteryInformation); if (PreviousBatteryState == null) { PreviousBatteryState = BatteryState; } }
public static uint XInputGetStateEx(uint dwUserIndex, ref XINPUT_STATE pState) { throw new NotImplementedException(); }
public static uint XInputGetState(uint dwUserIndex, ref XINPUT_STATE pState) { return(OriginalXInputGetStateFunction.Value(dwUserIndex, ref pState)); }
public static int GetJoypadXInputState( int InputType, out XINPUT_STATE XInputState) { if( System.IntPtr.Size == 4 ) { return dx_GetJoypadXInputState_x86( InputType , out XInputState ); } else { return dx_GetJoypadXInputState_x64( InputType , out XInputState ); } }
public static uint XInputGetState(uint dwUserIndex, ref XINPUT_STATE pState) { return OriginalXInputGetStateFunction.Value(dwUserIndex, ref pState); }
public static extern uint XInputGetState(uint dwUserIndex, ref XINPUT_STATE pState);
private static unsafe extern int XInputGetState(int idx, XINPUT_STATE* state);
private bool UpdateState(int controller) { XINPUT_STATE pState = new XINPUT_STATE(); UInt32 err = XInputGetState((UInt32)controller, ref pState); if (err != ERROR_SUCCESS) { return(false); } if (pState.dwPacketNumber == lastPacketNumber[controller]) { // Controller state hasn't changed since last time return(true); } lastPacketNumber[controller] = pState.dwPacketNumber; XINPUT_GAMEPAD_BUTTONS buttons = pState.Gamepad.wButtons; // Face buttons buttonStates[controller, (int)XInputElement.BTN_A] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_A); buttonStates[controller, (int)XInputElement.BTN_B] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_B); buttonStates[controller, (int)XInputElement.BTN_X] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_X); buttonStates[controller, (int)XInputElement.BTN_Y] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_Y); buttonStates[controller, (int)XInputElement.BTN_BACK] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_BACK); buttonStates[controller, (int)XInputElement.BTN_START] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_START); // D-pad buttonStates[controller, (int)XInputElement.BTN_DPAD_UP] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_DPAD_UP); buttonStates[controller, (int)XInputElement.BTN_DPAD_DOWN] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_DPAD_DOWN); buttonStates[controller, (int)XInputElement.BTN_DPAD_LEFT] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_DPAD_LEFT); buttonStates[controller, (int)XInputElement.BTN_DPAD_RIGHT] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_DPAD_RIGHT); // Thumb buttons buttonStates[controller, (int)XInputElement.BTN_LSTICK] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_LEFT_THUMB); buttonStates[controller, (int)XInputElement.BTN_RSTICK] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_RIGHT_THUMB); // Shoulder buttons buttonStates[controller, (int)XInputElement.BTN_LSHOULDER] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_DPAD_RIGHT); buttonStates[controller, (int)XInputElement.BTN_RSHOULDER] = buttons.HasFlag(XINPUT_GAMEPAD_BUTTONS.XINPUT_GAMEPAD_DPAD_RIGHT); // Translate analog triggers to buttons buttonStates[controller, (int)XInputElement.BTN_LTRIGGER] = pState.Gamepad.bLeftTrigger > XINPUT_GAMEPAD_TRIGGER_THRESHOLD; buttonStates[controller, (int)XInputElement.BTN_RTRIGGER] = pState.Gamepad.bRightTrigger > XINPUT_GAMEPAD_TRIGGER_THRESHOLD; // Translate analog sticks to buttons Int16 lStickX = pState.Gamepad.sThumbLX; Int16 lStickY = pState.Gamepad.sThumbLY; if (Math.Sqrt(lStickX * lStickX + lStickY * lStickY) > XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) { double angle = Math.Atan2(lStickY, lStickX) + Math.PI; buttonStates[controller, (int)XInputElement.BTN_LSTICK_UP] = (angle >= 3.53429174 && angle <= 5.89048623); buttonStates[controller, (int)XInputElement.BTN_LSTICK_DOWN] = (angle >= 0.39269908 && angle <= 2.74889357); buttonStates[controller, (int)XInputElement.BTN_LSTICK_LEFT] = (angle >= 5.10508806 || angle <= 1.17809725); buttonStates[controller, (int)XInputElement.BTN_LSTICK_RIGHT] = (angle >= 1.96349541 && angle <= 4.3196899); } else { buttonStates[controller, (int)XInputElement.BTN_LSTICK_UP] = false; buttonStates[controller, (int)XInputElement.BTN_LSTICK_DOWN] = false; buttonStates[controller, (int)XInputElement.BTN_LSTICK_LEFT] = false; buttonStates[controller, (int)XInputElement.BTN_LSTICK_RIGHT] = false; } Int16 rStickX = pState.Gamepad.sThumbLX; Int16 rStickY = pState.Gamepad.sThumbLY; if (Math.Sqrt(rStickX * rStickX + rStickY * rStickY) > XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE) { double angle = Math.Atan2(lStickY, lStickX) + Math.PI; buttonStates[controller, (int)XInputElement.BTN_RSTICK_UP] = (angle >= 3.53429174 && angle <= 5.89048623); buttonStates[controller, (int)XInputElement.BTN_RSTICK_DOWN] = (angle >= 0.39269908 && angle <= 2.74889357); buttonStates[controller, (int)XInputElement.BTN_RSTICK_LEFT] = (angle >= 5.10508806 || angle <= 1.17809725); buttonStates[controller, (int)XInputElement.BTN_RSTICK_RIGHT] = (angle >= 1.96349541 && angle <= 4.3196899); } else { buttonStates[controller, (int)XInputElement.BTN_RSTICK_UP] = false; buttonStates[controller, (int)XInputElement.BTN_RSTICK_DOWN] = false; buttonStates[controller, (int)XInputElement.BTN_RSTICK_LEFT] = false; buttonStates[controller, (int)XInputElement.BTN_RSTICK_RIGHT] = false; } return(true); }
private static extern UInt32 XInputGetState(UInt32 dwUserIndex, ref XINPUT_STATE pState);
public void Update() { if (controller.IsConnected == false) return; if (XInputGetStateExProc != null) { state = new XINPUT_STATE(); XInputGetStateExProc(0, out state); } else { var slimstate = controller.GetState(); state.dwPacketNumber = slimstate.PacketNumber; state.Gamepad.wButtons = (ushort)slimstate.Gamepad.Buttons; state.Gamepad.sThumbLX = slimstate.Gamepad.LeftThumbX; state.Gamepad.sThumbLY = slimstate.Gamepad.LeftThumbY; state.Gamepad.sThumbRX = slimstate.Gamepad.RightThumbX; state.Gamepad.sThumbRY = slimstate.Gamepad.RightThumbY; state.Gamepad.bLeftTrigger = slimstate.Gamepad.LeftTrigger; state.Gamepad.bRightTrigger = slimstate.Gamepad.RightTrigger; } }
public static extern uint XInputGetState ( [In] uint dwUserIndex, // Index of the gamer associated with the device [Out] XINPUT_STATE pState // Receives the current state );
public static uint XInputGetState(uint dwUserIndex, ref XINPUT_STATE pState) { #if !EXPERIMENTAL return(OriginalXInputGetStateFunction.Value(dwUserIndex, ref pState)); #else if (OriginalXInputGetStateFunction.Value(dwUserIndex, ref pState) == ResultWin32.ERROR_SUCCESS) { return(ResultWin32.ERROR_SUCCESS); } try { ScpHidReport report = null; while (dwUserIndex == 0 && (report = Proxy.GetReport(dwUserIndex)) == null) { Thread.Sleep(100); } if (report == null || report.PadState != DsState.Connected) { return(ResultWin32.ERROR_DEVICE_NOT_CONNECTED); } var xPad = new XINPUT_GAMEPAD(); pState.dwPacketNumber = report.PacketCounter; switch (report.Model) { case DsModel.DS3: { // select & start xPad.wButtons |= (ushort)report[Ds3Button.Select].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.Start].Xbox360Button; // d-pad xPad.wButtons |= (ushort)report[Ds3Button.Up].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.Right].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.Down].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.Left].Xbox360Button; // shoulders xPad.wButtons |= (ushort)report[Ds3Button.L1].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.R1].Xbox360Button; // face buttons xPad.wButtons |= (ushort)report[Ds3Button.Triangle].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.Circle].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.Cross].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.Square].Xbox360Button; // PS/Guide xPad.wButtons |= (ushort)report[Ds3Button.Ps].Xbox360Button; // thumbs xPad.wButtons |= (ushort)report[Ds3Button.L3].Xbox360Button; xPad.wButtons |= (ushort)report[Ds3Button.R3].Xbox360Button; // triggers xPad.bLeftTrigger = report[Ds3Axis.L2].Value; xPad.bRightTrigger = report[Ds3Axis.R2].Value; // thumb axes xPad.sThumbLX = (short)+DsMath.Scale(report[Ds3Axis.Lx].Value, false); xPad.sThumbLY = (short)-DsMath.Scale(report[Ds3Axis.Ly].Value, false); xPad.sThumbRX = (short)+DsMath.Scale(report[Ds3Axis.Rx].Value, false); xPad.sThumbRY = (short)-DsMath.Scale(report[Ds3Axis.Ry].Value, false); } break; case DsModel.DS4: { // select & start xPad.wButtons |= (ushort)report[Ds4Button.Share].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.Options].Xbox360Button; // d-pad xPad.wButtons |= (ushort)report[Ds4Button.Up].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.Right].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.Down].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.Left].Xbox360Button; // shoulders xPad.wButtons |= (ushort)report[Ds4Button.L1].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.R1].Xbox360Button; // face buttons xPad.wButtons |= (ushort)report[Ds4Button.Triangle].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.Circle].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.Cross].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.Square].Xbox360Button; // PS/Guide xPad.wButtons |= (ushort)report[Ds4Button.Ps].Xbox360Button; // thumbs xPad.wButtons |= (ushort)report[Ds4Button.L3].Xbox360Button; xPad.wButtons |= (ushort)report[Ds4Button.R3].Xbox360Button; // triggers xPad.bLeftTrigger = report[Ds4Axis.L2].Value; xPad.bRightTrigger = report[Ds4Axis.R2].Value; // thumb axes xPad.sThumbLX = (short)+DsMath.Scale(report[Ds4Axis.Lx].Value, false); xPad.sThumbLY = (short)-DsMath.Scale(report[Ds4Axis.Ly].Value, false); xPad.sThumbRX = (short)+DsMath.Scale(report[Ds4Axis.Rx].Value, false); xPad.sThumbRY = (short)-DsMath.Scale(report[Ds4Axis.Ry].Value, false); } break; } pState.Gamepad = xPad; } catch (Exception ex) { Log.ErrorFormat("Unexpected error: {0}", ex); return(ResultWin32.ERROR_DEVICE_NOT_CONNECTED); } return(ResultWin32.ERROR_SUCCESS); #endif }
extern static int dx_GetJoypadXInputState_x64( int InputType, out XINPUT_STATE XInputState);
private static extern uint XInputGetState(uint index, ref XINPUT_STATE result);
/// <summary> /// XInputGetStateEX OrdinalNo=#100 /// 非公開関数:ガイドボタン状態もふくむGetState /// <summary> public static uint GetStateEx(uint dwUserIndex, ref XINPUT_STATE pState) { return(func_XInputGetStateEx(dwUserIndex, ref pState)); }
protected override void OnUpdateState() { XINPUT_STATE state = new XINPUT_STATE(); int result = XInput.GetState(controllerIndex, ref state); if (XInputNativeWrapper.Wrapper.FAILED(result)) { return; } //////////////////////////////////////// if (state.Gamepad.sThumbLX < XInput.XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE && state.Gamepad.sThumbLX > -XInput.XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) { state.Gamepad.sThumbLX = 0; } if (state.Gamepad.sThumbLY < XInput.XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE && state.Gamepad.sThumbLY > -XInput.XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE) { state.Gamepad.sThumbLY = 0; } if (state.Gamepad.sThumbRX < XInput.XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE && state.Gamepad.sThumbRX > -XInput.XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE) { state.Gamepad.sThumbRX = 0; } if (state.Gamepad.sThumbRY < XInput.XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE && state.Gamepad.sThumbRY > -XInput.XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE) { state.Gamepad.sThumbRY = 0; } if (state.Gamepad.bLeftTrigger < XInput.XINPUT_GAMEPAD_TRIGGER_THRESHOLD) { state.Gamepad.bLeftTrigger = 0; } if (state.Gamepad.bRightTrigger < XInput.XINPUT_GAMEPAD_TRIGGER_THRESHOLD) { state.Gamepad.bRightTrigger = 0; } //////////////////////////////////////// JoystickPOVDirections direction = JoystickPOVDirections.Centered; if ((state.Gamepad.wButtons & XInput.XINPUT_GAMEPAD_DPAD_DOWN) != 0) { direction |= JoystickPOVDirections.South; } if ((state.Gamepad.wButtons & XInput.XINPUT_GAMEPAD_DPAD_UP) != 0) { direction |= JoystickPOVDirections.North; } if ((state.Gamepad.wButtons & XInput.XINPUT_GAMEPAD_DPAD_RIGHT) != 0) { direction |= JoystickPOVDirections.East; } if ((state.Gamepad.wButtons & XInput.XINPUT_GAMEPAD_DPAD_LEFT) != 0) { direction |= JoystickPOVDirections.West; } if (POVs[0].Value != direction) { POVs[0].Value = direction; InputDeviceManager.Instance.SendEvent( new JoystickPOVChangedEvent(this, POVs[0])); } //////////////////////////////////////// for (int n = 0; n < 10; n++) { uint bits = 0; switch (n) { case 0: bits = XInput.XINPUT_GAMEPAD_A; break; case 1: bits = XInput.XINPUT_GAMEPAD_B; break; case 2: bits = XInput.XINPUT_GAMEPAD_X; break; case 3: bits = XInput.XINPUT_GAMEPAD_Y; break; case 4: bits = XInput.XINPUT_GAMEPAD_LEFT_SHOULDER; break; case 5: bits = XInput.XINPUT_GAMEPAD_RIGHT_SHOULDER; break; case 6: bits = XInput.XINPUT_GAMEPAD_BACK; break; case 7: bits = XInput.XINPUT_GAMEPAD_START; break; case 8: bits = XInput.XINPUT_GAMEPAD_LEFT_THUMB; break; case 9: bits = XInput.XINPUT_GAMEPAD_RIGHT_THUMB; break; } bool pressed = (state.Gamepad.wButtons & bits) != 0; if (Buttons[n].Pressed != pressed) { Buttons[n].Pressed = pressed; if (pressed) { InputDeviceManager.Instance.SendEvent( new JoystickButtonDownEvent(this, Buttons[n])); } else { InputDeviceManager.Instance.SendEvent( new JoystickButtonUpEvent(this, Buttons[n])); } } } //////////////////////////////////////// { float value = (float)state.Gamepad.sThumbLX; value /= (value > 0) ? 32767.0f : 32768.0f; if (Axes[0].Value != value) { Axes[0].Value = value; InputDeviceManager.Instance.SendEvent( new JoystickAxisChangedEvent(this, Axes[0])); } } { float value = (float)state.Gamepad.sThumbLY; value /= (value > 0) ? 32767.0f : 32768.0f; if (Axes[1].Value != value) { Axes[1].Value = value; InputDeviceManager.Instance.SendEvent( new JoystickAxisChangedEvent(this, Axes[1])); } } { float value = (float)state.Gamepad.sThumbRX; value /= (value > 0) ? 32767.0f : 32768.0f; if (Axes[2].Value != value) { Axes[2].Value = value; InputDeviceManager.Instance.SendEvent( new JoystickAxisChangedEvent(this, Axes[2])); } } { float value = (float)state.Gamepad.sThumbRY; value /= (value > 0) ? 32767.0f : 32768.0f; if (Axes[3].Value != value) { Axes[3].Value = value; InputDeviceManager.Instance.SendEvent( new JoystickAxisChangedEvent(this, Axes[3])); } } { float value = (float)state.Gamepad.bLeftTrigger / 255.0f; if (Axes[4].Value != value) { Axes[4].Value = value; InputDeviceManager.Instance.SendEvent( new JoystickAxisChangedEvent(this, Axes[4])); } } { float value = (float)state.Gamepad.bRightTrigger / 255.0f; if (Axes[5].Value != value) { Axes[5].Value = value; InputDeviceManager.Instance.SendEvent( new JoystickAxisChangedEvent(this, Axes[5])); } } }