steam-deck-tools/SteamController/Devices/SteamButtons.cs
Kamil Trzciński 00a30cbf5c SteamController: Fix PS button and Gyro support for DS4
Make DS4 fields be readonly and optimise DS4 packets.
2023-02-11 14:40:09 +01:00

77 lines
5.5 KiB
C#

using hidapi;
using PowerControl.External;
using static CommonHelpers.Log;
namespace SteamController.Devices
{
public partial class SteamController
{
public readonly SteamButton BtnL5 = new SteamButton2(0x08, SDCButton0.BTN_L5);
public readonly SteamButton BtnOptions = new SteamButton2(0x08, SDCButton0.BTN_OPTIONS);
public readonly SteamButton BtnSteam = new SteamButton2(0x08, SDCButton0.BTN_STEAM);
public readonly SteamButton BtnMenu = new SteamButton2(0x08, SDCButton0.BTN_MENU);
public readonly SteamButton BtnDpadDown = new SteamButton2(0x08, SDCButton0.BTN_DPAD_DOWN) { LizardButton = true };
public readonly SteamButton BtnDpadLeft = new SteamButton2(0x08, SDCButton0.BTN_DPAD_LEFT) { LizardButton = true };
public readonly SteamButton BtnDpadRight = new SteamButton2(0x08, SDCButton0.BTN_DPAD_RIGHT) { LizardButton = true };
public readonly SteamButton BtnDpadUp = new SteamButton2(0x08, SDCButton0.BTN_DPAD_UP) { LizardButton = true };
public readonly SteamButton BtnA = new SteamButton2(0x08, SDCButton0.BTN_A) { LizardButton = true };
public readonly SteamButton BtnX = new SteamButton2(0x08, SDCButton0.BTN_X);
public readonly SteamButton BtnB = new SteamButton2(0x08, SDCButton0.BTN_B) { LizardButton = true };
public readonly SteamButton BtnY = new SteamButton2(0x08, SDCButton0.BTN_Y);
public readonly SteamButton BtnL1 = new SteamButton2(0x08, SDCButton0.BTN_L1);
public readonly SteamButton BtnL2 = new SteamButton2(0x08, SDCButton0.BTN_L2) { LizardButton = true };
public readonly SteamButton BtnR1 = new SteamButton2(0x08, SDCButton0.BTN_R1);
public readonly SteamButton BtnR2 = new SteamButton2(0x08, SDCButton0.BTN_R2) { LizardButton = true };
public readonly SteamButton BtnLeftStickPress = new SteamButton2(0x0a, SDCButton1.BTN_LSTICK_PRESS);
public readonly SteamButton BtnLPadTouch = new SteamButton2(0x0a, SDCButton1.BTN_LPAD_TOUCH);
public readonly SteamButton BtnLPadPress = new SteamButton2(0x0a, SDCButton1.BTN_LPAD_PRESS);
public readonly SteamButton BtnRPadPress = new SteamButton2(0x0a, SDCButton1.BTN_RPAD_PRESS);
public readonly SteamButton BtnRPadTouch = new SteamButton2(0x0a, SDCButton1.BTN_RPAD_TOUCH);
public readonly SteamButton BtnR5 = new SteamButton2(0x0a, SDCButton1.BTN_R5);
public readonly SteamButton BtnRightStickPress = new SteamButton2(0x0B, SDCButton2.BTN_RSTICK_PRESS);
public readonly SteamButton BtnLStickTouch = new SteamButton2(0x0D, SDCButton4.BTN_LSTICK_TOUCH);
public readonly SteamButton BtnRStickTouch = new SteamButton2(0x0D, SDCButton4.BTN_RSTICK_TOUCH);
public readonly SteamButton BtnR4 = new SteamButton2(0x0D, SDCButton4.BTN_R4);
public readonly SteamButton BtnL4 = new SteamButton2(0x0D, SDCButton4.BTN_L4);
public readonly SteamButton BtnQuickAccess = new SteamButton2(0x0E, SDCButton5.BTN_QUICK_ACCESS);
public readonly SteamButton BtnVirtualLeftThumbUp = new SteamButton();
public readonly SteamButton BtnVirtualLeftThumbDown = new SteamButton();
public readonly SteamButton BtnVirtualLeftThumbLeft = new SteamButton();
public readonly SteamButton BtnVirtualLeftThumbRight = new SteamButton();
public readonly SteamAxis LPadX = new SteamAxis(0x10) { DeltaValueMode = Devices.DeltaValueMode.Delta };
public readonly SteamAxis LPadY = new SteamAxis(0x12) { DeltaValueMode = Devices.DeltaValueMode.Delta };
public readonly SteamAxis RPadX = new SteamAxis(0x14) { LizardMouse = true, DeltaValueMode = Devices.DeltaValueMode.Delta };
public readonly SteamAxis RPadY = new SteamAxis(0x16) { LizardMouse = true, DeltaValueMode = Devices.DeltaValueMode.Delta };
public readonly SteamAxis AccelX = new SteamAxis(0x18);
public readonly SteamAxis AccelY = new SteamAxis(0x1A);
public readonly SteamAxis AccelZ = new SteamAxis(0x1C);
public readonly SteamAxis GyroPitch = new SteamAxis(0x1E);
public readonly SteamAxis GyroRoll = new SteamAxis(0x20);
public readonly SteamAxis GyroYaw = new SteamAxis(0x22);
public readonly SteamAxis LeftTrigger = new SteamAxis(0x2C);
public readonly SteamAxis RightTrigger = new SteamAxis(0x2E);
public readonly SteamAxis LeftThumbX = new SteamAxis(0x30) { Deadzone = 5000, MinChange = 10, DeltaValueMode = Devices.DeltaValueMode.AbsoluteTime };
public readonly SteamAxis LeftThumbY = new SteamAxis(0x32) { Deadzone = 5000, MinChange = 10, DeltaValueMode = Devices.DeltaValueMode.AbsoluteTime };
public readonly SteamAxis RightThumbX = new SteamAxis(0x34) { Deadzone = 5000, MinChange = 10, DeltaValueMode = Devices.DeltaValueMode.AbsoluteTime };
public readonly SteamAxis RightThumbY = new SteamAxis(0x36) { Deadzone = 5000, MinChange = 10, DeltaValueMode = Devices.DeltaValueMode.AbsoluteTime };
public readonly SteamAxis LPadPressure = new SteamAxis(0x38);
public readonly SteamAxis RPadPressure = new SteamAxis(0x38);
private void InitializeButtons()
{
LPadX.ActiveButton = BtnLPadTouch;
LPadY.ActiveButton = BtnLPadTouch;
RPadX.ActiveButton = BtnRPadTouch;
RPadY.ActiveButton = BtnRPadTouch;
// map virtual key presses
LeftThumbX.VirtualLeft = BtnVirtualLeftThumbLeft;
LeftThumbX.VirtualRight = BtnVirtualLeftThumbRight;
LeftThumbY.VirtualLeft = BtnVirtualLeftThumbDown;
LeftThumbY.VirtualRight = BtnVirtualLeftThumbUp;
}
}
}