in ScpControl/ScpProxy.cs [30:104]
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].Value,
SCP_LY = inputReport[Ds4Axis.Ly].Value,
SCP_L1 = inputReport[Ds4Button.L1].Pressure,
SCP_L2 = inputReport[Ds4Axis.L2].Pressure,
SCP_L3 = inputReport[Ds4Button.L3].Pressure,
SCP_RX = inputReport[Ds4Axis.Rx].Value,
SCP_RY = inputReport[Ds4Axis.Ry].Value,
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;
}