예제 #1
0
        public static uint XInputGetExtended(uint dwUserIndex, ref SCP_EXTN pPressure)
        {
            try
            {
                pPressure = _scpProxy.GetExtended(dwUserIndex);
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Couldn't receive pressure information: {0}", ex);
            }

            return(0); // success
        }
예제 #2
0
        /// <summary>
        ///     Used by ScpXInputBridge to request pressure sensitive button information.
        /// </summary>
        /// <param name="dwUserIndex">The pad index to request data from (zero-based).</param>
        /// <returns>The pressure sensitive button/axis information.</returns>
        public SCP_EXTN GetExtended(uint dwUserIndex)
        {
            ScpHidReport inputReport;
            var          extended = default(SCP_EXTN);

            try
            {
                inputReport = _packetCache[(DsPadId)dwUserIndex];
            }
            catch (KeyNotFoundException)
            {
                return(extended);
            }

            var hidReport = inputReport.HidReport;

            switch (inputReport.Model)
            {
            case DsModel.None:
                break;

            case DsModel.DS3:
                // translate and wrap button/axis information
                extended = new SCP_EXTN
                {
                    SCP_UP     = hidReport [AxesEnum.Up].Value,
                    SCP_RIGHT  = hidReport [AxesEnum.Right].Value,
                    SCP_DOWN   = hidReport [AxesEnum.Down].Value,
                    SCP_LEFT   = hidReport [AxesEnum.Left].Value,
                    SCP_LX     = hidReport [AxesEnum.Lx].Axis,
                    SCP_LY     = -hidReport[AxesEnum.Ly].Axis,
                    SCP_L1     = hidReport [AxesEnum.L1].Value,
                    SCP_L2     = hidReport [AxesEnum.L2].Value,
                    SCP_L3     = hidReport [ButtonsEnum.L3].Value,
                    SCP_RX     = hidReport [AxesEnum.Rx].Axis,
                    SCP_RY     = -hidReport[AxesEnum.Ry].Axis,
                    SCP_R1     = hidReport [AxesEnum.R1].Value,
                    SCP_R2     = hidReport [AxesEnum.R2].Value,
                    SCP_R3     = hidReport [ButtonsEnum.R3].Value,
                    SCP_T      = hidReport [AxesEnum.Triangle].Value,
                    SCP_C      = hidReport [AxesEnum.Circle].Value,
                    SCP_X      = hidReport [AxesEnum.Cross].Value,
                    SCP_S      = hidReport [AxesEnum.Square].Value,
                    SCP_SELECT = hidReport [ButtonsEnum.Select].Value,
                    SCP_START  = hidReport [ButtonsEnum.Start].Value,
                    SCP_PS     = hidReport [ButtonsEnum.Ps].Value
                };
                break;

            case DsModel.DS4:
                extended = new SCP_EXTN
                {
                    SCP_UP     = hidReport[ButtonsEnum.Up].Value,
                    SCP_RIGHT  = hidReport[ButtonsEnum.Right].Value,
                    SCP_DOWN   = hidReport[ButtonsEnum.Down].Value,
                    SCP_LEFT   = hidReport[ButtonsEnum.Left].Value,
                    SCP_LX     = hidReport[AxesEnum.Lx].Value,
                    SCP_LY     = hidReport[AxesEnum.Ly].Value,
                    SCP_L1     = hidReport[ButtonsEnum.L1].Value,
                    SCP_L2     = hidReport[AxesEnum.L2].Value,
                    SCP_L3     = hidReport[ButtonsEnum.L3].Value,
                    SCP_RX     = hidReport[AxesEnum.Rx].Value,
                    SCP_RY     = hidReport[AxesEnum.Ry].Value,
                    SCP_R1     = hidReport[ButtonsEnum.R1].Value,
                    SCP_R2     = hidReport[AxesEnum.R2].Value,
                    SCP_R3     = hidReport[ButtonsEnum.R3].Value,
                    SCP_T      = hidReport[ButtonsEnum.Triangle].Value,
                    SCP_C      = hidReport[ButtonsEnum.Circle].Value,
                    SCP_X      = hidReport[ButtonsEnum.Cross].Value,
                    SCP_S      = hidReport[ButtonsEnum.Square].Value,
                    SCP_SELECT = hidReport[ButtonsEnum.Share].Value,
                    SCP_START  = hidReport[ButtonsEnum.Options].Value,
                    SCP_PS     = hidReport[ButtonsEnum.Ps].Value
                };
                break;
            }

            return(extended);
        }
예제 #3
0
        /// <summary>
        ///     Used by ScpXInputBridge to request pressure sensitive button information.
        /// </summary>
        /// <param name="dwUserIndex">The pad index to request data from (zero-based).</param>
        /// <returns>The pressure sensitive button/axis information.</returns>
        public SCP_EXTN GetExtended(uint dwUserIndex)
        {
            ScpHidReport inputReport;
            var          extended = default(SCP_EXTN);

            try
            {
                inputReport = _packetCache[(DsPadId)dwUserIndex];
            }
            catch (KeyNotFoundException)
            {
                return(extended);
            }

            switch (inputReport.Model)
            {
            case DsModel.None:
                break;

            case DsModel.DS3:
                // translate and wrap button/axis information
                extended = new SCP_EXTN
                {
                    SCP_UP     = inputReport[Ds3Axis.Up].Pressure,
                    SCP_RIGHT  = inputReport[Ds3Axis.Right].Pressure,
                    SCP_DOWN   = inputReport[Ds3Axis.Down].Pressure,
                    SCP_LEFT   = inputReport[Ds3Axis.Left].Pressure,
                    SCP_LX     = inputReport[Ds3Axis.Lx].Axis,
                    SCP_LY     = -inputReport[Ds3Axis.Ly].Axis,
                    SCP_L1     = inputReport[Ds3Axis.L1].Pressure,
                    SCP_L2     = inputReport[Ds3Axis.L2].Pressure,
                    SCP_L3     = inputReport[Ds3Button.L3].Pressure,
                    SCP_RX     = inputReport[Ds3Axis.Rx].Axis,
                    SCP_RY     = -inputReport[Ds3Axis.Ry].Axis,
                    SCP_R1     = inputReport[Ds3Axis.R1].Pressure,
                    SCP_R2     = inputReport[Ds3Axis.R2].Pressure,
                    SCP_R3     = inputReport[Ds3Button.R3].Pressure,
                    SCP_T      = inputReport[Ds3Axis.Triangle].Pressure,
                    SCP_C      = inputReport[Ds3Axis.Circle].Pressure,
                    SCP_X      = inputReport[Ds3Axis.Cross].Pressure,
                    SCP_S      = inputReport[Ds3Axis.Square].Pressure,
                    SCP_SELECT = inputReport[Ds3Button.Select].Pressure,
                    SCP_START  = inputReport[Ds3Button.Start].Pressure,
                    SCP_PS     = inputReport[Ds3Button.Ps].Pressure
                };
                break;

            case DsModel.DS4:
                extended = new SCP_EXTN
                {
                    SCP_UP     = inputReport[Ds4Button.Up].Pressure,
                    SCP_RIGHT  = inputReport[Ds4Button.Right].Pressure,
                    SCP_DOWN   = inputReport[Ds4Button.Down].Pressure,
                    SCP_LEFT   = inputReport[Ds4Button.Left].Pressure,
                    SCP_LX     = inputReport[Ds4Axis.Lx].Axis,
                    SCP_LY     = inputReport[Ds4Axis.Ly].Axis,
                    SCP_L1     = inputReport[Ds4Button.L1].Pressure,
                    SCP_L2     = inputReport[Ds4Axis.L2].Pressure,
                    SCP_L3     = inputReport[Ds4Button.L3].Pressure,
                    SCP_RX     = inputReport[Ds4Axis.Rx].Axis,
                    SCP_RY     = inputReport[Ds4Axis.Ry].Axis,
                    SCP_R1     = inputReport[Ds4Button.R1].Pressure,
                    SCP_R2     = inputReport[Ds4Axis.R2].Pressure,
                    SCP_R3     = inputReport[Ds4Button.R3].Pressure,
                    SCP_T      = inputReport[Ds4Button.Triangle].Pressure,
                    SCP_C      = inputReport[Ds4Button.Circle].Pressure,
                    SCP_X      = inputReport[Ds4Button.Cross].Pressure,
                    SCP_S      = inputReport[Ds4Button.Square].Pressure,
                    SCP_SELECT = inputReport[Ds4Button.Share].Pressure,
                    SCP_START  = inputReport[Ds4Button.Options].Pressure,
                    SCP_PS     = inputReport[Ds4Button.Ps].Pressure
                };
                break;
            }

            return(extended);
        }
예제 #4
0
 public static uint XInputGetExtended(uint dwUserIndex, ref SCP_EXTN pPressure)
 {
     throw new NotImplementedException();
 }