mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-10-02 16:23:57 +08:00
Sync more Steam Controller header definitions for the Steam Deck
(cherry picked from commit a8f4f40d08)
This commit is contained in:
@@ -817,7 +817,7 @@ static const char *s_ControllerMappings[] = {
|
||||
"05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,",
|
||||
"05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,",
|
||||
"03000000de2800000512000011010000,Steam Deck,a:b3,b:b4,back:b11,dpdown:b17,dpleft:b18,dpright:b19,dpup:b16,guide:b13,leftshoulder:b7,leftstick:b14,lefttrigger:a9,leftx:a0,lefty:a1,misc1:b2,paddle1:b21,paddle2:b20,paddle3:b23,paddle4:b22,rightshoulder:b8,rightstick:b15,righttrigger:a8,rightx:a2,righty:a3,start:b12,x:b5,y:b6,",
|
||||
"03000000de2800000512000000016800,Steam Deck,a:b0,b:b1,x:b2,y:b3,back:b4,guide:b5,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b9,rightshoulder:b10,dpup:b11,dpdown:b12,dpleft:b13,dpright:b14,misc1:b15,paddle1:b17,paddle2:b16,paddle3:b19,paddle4:b18,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,",
|
||||
"03000000de2800000512000000016800,Steam Deck,a:b0,b:b1,x:b2,y:b3,back:b4,guide:b5,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b9,rightshoulder:b10,dpup:b11,dpdown:b12,dpleft:b13,dpright:b14,misc1:b15,paddle1:b16,paddle2:b17,paddle3:b18,paddle4:b19,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,",
|
||||
"03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
|
||||
"0500000011010000311400001b010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b32,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
|
||||
"05000000110100001914000009010000,SteelSeries Stratus XL,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b18,leftshoulder:b6,leftstick:b13,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:+a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
|
||||
|
||||
@@ -1069,9 +1069,9 @@ static int HIDAPI_DriverSteam_SetSensorsEnabled(SDL_HIDAPI_Device *device, SDL_J
|
||||
SDL_memset(buf, 0, 65);
|
||||
buf[1] = ID_SET_SETTINGS_VALUES;
|
||||
if (enabled) {
|
||||
ADD_SETTING(SETTING_GYRO_MODE, 0x18 /* SETTING_GYRO_SEND_RAW_ACCEL | SETTING_GYRO_MODE_SEND_RAW_GYRO */);
|
||||
ADD_SETTING(SETTING_IMU_MODE, SETTING_GYRO_MODE_SEND_RAW_ACCEL | SETTING_GYRO_MODE_SEND_RAW_GYRO);
|
||||
} else {
|
||||
ADD_SETTING(SETTING_GYRO_MODE, 0x00 /* SETTING_GYRO_MODE_OFF */);
|
||||
ADD_SETTING(SETTING_IMU_MODE, SETTING_GYRO_MODE_OFF);
|
||||
}
|
||||
buf[2] = nSettings * 3;
|
||||
if (SetFeatureReport(device->dev, buf, 3 + nSettings * 3) < 0) {
|
||||
|
||||
@@ -33,6 +33,35 @@
|
||||
#include "steam/controller_constants.h"
|
||||
#include "steam/controller_structs.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
STEAMDECK_LBUTTON_R2 = 0x00000001,
|
||||
STEAMDECK_LBUTTON_L2 = 0x00000002,
|
||||
STEAMDECK_LBUTTON_R = 0x00000004,
|
||||
STEAMDECK_LBUTTON_L = 0x00000008,
|
||||
STEAMDECK_LBUTTON_Y = 0x00000010,
|
||||
STEAMDECK_LBUTTON_B = 0x00000020,
|
||||
STEAMDECK_LBUTTON_X = 0x00000040,
|
||||
STEAMDECK_LBUTTON_A = 0x00000080,
|
||||
STEAMDECK_LBUTTON_DPAD_UP = 0x00000100,
|
||||
STEAMDECK_LBUTTON_DPAD_RIGHT = 0x00000200,
|
||||
STEAMDECK_LBUTTON_DPAD_LEFT = 0x00000400,
|
||||
STEAMDECK_LBUTTON_DPAD_DOWN = 0x00000800,
|
||||
STEAMDECK_LBUTTON_VIEW = 0x00001000,
|
||||
STEAMDECK_LBUTTON_STEAM = 0x00002000,
|
||||
STEAMDECK_LBUTTON_MENU = 0x00004000,
|
||||
STEAMDECK_LBUTTON_L5 = 0x00008000,
|
||||
STEAMDECK_LBUTTON_R5 = 0x00010000,
|
||||
STEAMDECK_LBUTTON_LEFT_PAD = 0x00020000,
|
||||
STEAMDECK_LBUTTON_RIGHT_PAD = 0x00040000,
|
||||
STEAMDECK_LBUTTON_L3 = 0x00400000,
|
||||
STEAMDECK_LBUTTON_R3 = 0x04000000,
|
||||
|
||||
STEAMDECK_HBUTTON_L4 = 0x00000200,
|
||||
STEAMDECK_HBUTTON_R4 = 0x00000400,
|
||||
STEAMDECK_HBUTTON_QAM = 0x00040000,
|
||||
} SteamDeckButtons;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Uint32 update_rate_us;
|
||||
@@ -54,17 +83,17 @@ static SDL_bool DisableDeckLizardMode(SDL_hid_device *dev)
|
||||
return SDL_FALSE;
|
||||
|
||||
msg->header.type = ID_SET_SETTINGS_VALUES;
|
||||
msg->header.length = 5 * sizeof(WriteDeckRegister);
|
||||
msg->payload.wrDeckRegister.reg[0].addr = SETTING_DECK_RPAD_MARGIN; // disable margin
|
||||
msg->payload.wrDeckRegister.reg[0].val = 0;
|
||||
msg->payload.wrDeckRegister.reg[1].addr = SETTING_DECK_LPAD_MODE; // disable mouse
|
||||
msg->payload.wrDeckRegister.reg[1].val = 7;
|
||||
msg->payload.wrDeckRegister.reg[2].addr = SETTING_DECK_RPAD_MODE; // disable mouse
|
||||
msg->payload.wrDeckRegister.reg[2].val = 7;
|
||||
msg->payload.wrDeckRegister.reg[3].addr = SETTING_DECK_LPAD_CLICK_PRESSURE; // disable clicky pad
|
||||
msg->payload.wrDeckRegister.reg[3].val = 0xFFFF;
|
||||
msg->payload.wrDeckRegister.reg[4].addr = SETTING_DECK_RPAD_CLICK_PRESSURE; // disable clicky pad
|
||||
msg->payload.wrDeckRegister.reg[4].val = 0xFFFF;
|
||||
msg->header.length = 5 * sizeof(ControllerSetting);
|
||||
msg->payload.setSettingsValues.settings[0].settingNum = SETTING_SMOOTH_ABSOLUTE_MOUSE;
|
||||
msg->payload.setSettingsValues.settings[0].settingValue = 0;
|
||||
msg->payload.setSettingsValues.settings[1].settingNum = SETTING_LEFT_TRACKPAD_MODE;
|
||||
msg->payload.setSettingsValues.settings[1].settingValue = TRACKPAD_NONE;
|
||||
msg->payload.setSettingsValues.settings[2].settingNum = SETTING_RIGHT_TRACKPAD_MODE; // disable mouse
|
||||
msg->payload.setSettingsValues.settings[2].settingValue = TRACKPAD_NONE;
|
||||
msg->payload.setSettingsValues.settings[3].settingNum = SETTING_LEFT_TRACKPAD_CLICK_PRESSURE; // disable clicky pad
|
||||
msg->payload.setSettingsValues.settings[3].settingValue = 0xFFFF;
|
||||
msg->payload.setSettingsValues.settings[4].settingNum = SETTING_RIGHT_TRACKPAD_CLICK_PRESSURE; // disable clicky pad
|
||||
msg->payload.setSettingsValues.settings[4].settingValue = 0xFFFF;
|
||||
|
||||
rc = SDL_hid_send_feature_report(dev, buffer, sizeof(buffer));
|
||||
if (rc != sizeof(buffer))
|
||||
@@ -90,9 +119,9 @@ static SDL_bool FeedDeckLizardWatchdog(SDL_hid_device *dev)
|
||||
return SDL_FALSE;
|
||||
|
||||
msg->header.type = ID_SET_SETTINGS_VALUES;
|
||||
msg->header.length = 1 * sizeof(WriteDeckRegister);
|
||||
msg->payload.wrDeckRegister.reg[0].addr = SETTING_DECK_RPAD_MODE; // disable mouse
|
||||
msg->payload.wrDeckRegister.reg[0].val = 7;
|
||||
msg->header.length = 1 * sizeof(ControllerSetting);
|
||||
msg->payload.setSettingsValues.settings[0].settingNum = SETTING_RIGHT_TRACKPAD_MODE;
|
||||
msg->payload.setSettingsValues.settings[0].settingValue = TRACKPAD_NONE;
|
||||
|
||||
rc = SDL_hid_send_feature_report(dev, buffer, sizeof(buffer));
|
||||
if (rc != sizeof(buffer))
|
||||
@@ -230,32 +259,32 @@ static SDL_bool HIDAPI_DriverSteamDeck_UpdateDevice(SDL_HIDAPI_Device *device)
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_Y) ? SDL_PRESSED : SDL_RELEASED);
|
||||
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_LT) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L) ? SDL_PRESSED : SDL_RELEASED);
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_RT) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R) ? SDL_PRESSED : SDL_RELEASED);
|
||||
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_BACK,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_SELECT) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_VIEW) ? SDL_PRESSED : SDL_RELEASED);
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_START,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_START) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_MENU) ? SDL_PRESSED : SDL_RELEASED);
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_GUIDE,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_MODE) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_STEAM) ? SDL_PRESSED : SDL_RELEASED);
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_MISC1,
|
||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_BASE) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_QAM) ? SDL_PRESSED : SDL_RELEASED);
|
||||
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_LEFTSTICK,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_STICKL) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L3) ? SDL_PRESSED : SDL_RELEASED);
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_RIGHTSTICK,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_STICKR) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R3) ? SDL_PRESSED : SDL_RELEASED);
|
||||
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_PADDLE1,
|
||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_PADDLE1) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_R4) ? SDL_PRESSED : SDL_RELEASED);
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_PADDLE2,
|
||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_PADDLE2) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_L4) ? SDL_PRESSED : SDL_RELEASED);
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_PADDLE3,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_PADDLE3) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R5) ? SDL_PRESSED : SDL_RELEASED);
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_PADDLE4,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_PADDLE4) ? SDL_PRESSED : SDL_RELEASED);
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L5) ? SDL_PRESSED : SDL_RELEASED);
|
||||
|
||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_UP,
|
||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_DPAD_UP) ? SDL_PRESSED : SDL_RELEASED);
|
||||
@@ -269,9 +298,9 @@ static SDL_bool HIDAPI_DriverSteamDeck_UpdateDevice(SDL_HIDAPI_Device *device)
|
||||
}
|
||||
|
||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_TRIGGERLEFT,
|
||||
(int)pInReport->payload.deckState.sLeftTrigger * 2 - 32768);
|
||||
(int)pInReport->payload.deckState.sTriggerRawL * 2 - 32768);
|
||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
|
||||
(int)pInReport->payload.deckState.sRightTrigger * 2 - 32768);
|
||||
(int)pInReport->payload.deckState.sTriggerRawR * 2 - 32768);
|
||||
|
||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTX,
|
||||
pInReport->payload.deckState.sLeftStickX);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -32,6 +32,13 @@ typedef struct
|
||||
unsigned char length;
|
||||
} FeatureReportHeader;
|
||||
|
||||
// Generic controller settings structure
|
||||
typedef struct
|
||||
{
|
||||
unsigned char settingNum;
|
||||
unsigned short settingValue;
|
||||
} ControllerSetting;
|
||||
|
||||
// Generic controller attribute structure
|
||||
typedef struct
|
||||
{
|
||||
@@ -39,25 +46,89 @@ typedef struct
|
||||
uint32_t attributeValue;
|
||||
} ControllerAttribute;
|
||||
|
||||
// Generic controller settings structure
|
||||
typedef struct
|
||||
{
|
||||
ControllerSetting settings[ ( HID_FEATURE_REPORT_BYTES - sizeof( FeatureReportHeader ) ) / sizeof( ControllerSetting ) ];
|
||||
} MsgSetSettingsValues, MsgGetSettingsValues, MsgGetSettingsDefaults, MsgGetSettingsMaxs;
|
||||
|
||||
// Generic controller settings structure
|
||||
typedef struct
|
||||
{
|
||||
ControllerAttribute attributes[ ( HID_FEATURE_REPORT_BYTES - sizeof( FeatureReportHeader ) ) / sizeof( ControllerAttribute ) ];
|
||||
} MsgGetAttributes;
|
||||
|
||||
// 16bit Steam Deck register with address
|
||||
typedef struct
|
||||
{
|
||||
uint8_t addr;
|
||||
uint16_t val;
|
||||
} WriteDeckRegister;
|
||||
unsigned char attributeTag;
|
||||
char attributeValue[20];
|
||||
} MsgGetStringAttribute;
|
||||
|
||||
// Generic Steam Deck write register message
|
||||
typedef struct
|
||||
{
|
||||
WriteDeckRegister reg[ (HID_FEATURE_REPORT_BYTES - sizeof ( FeatureReportHeader ) ) / sizeof (WriteDeckRegister ) ];
|
||||
} MsgWriteDeckRegister;
|
||||
unsigned char mode;
|
||||
} MsgSetControllerMode;
|
||||
|
||||
// Trigger a haptic pulse
|
||||
typedef struct {
|
||||
unsigned char which_pad;
|
||||
unsigned short pulse_duration;
|
||||
unsigned short pulse_interval;
|
||||
unsigned short pulse_count;
|
||||
short dBgain;
|
||||
unsigned char priority;
|
||||
} MsgFireHapticPulse;
|
||||
|
||||
typedef struct {
|
||||
uint8_t mode;
|
||||
} MsgHapticSetMode;
|
||||
|
||||
typedef enum {
|
||||
HAPTIC_TYPE_OFF,
|
||||
HAPTIC_TYPE_TICK,
|
||||
HAPTIC_TYPE_CLICK,
|
||||
HAPTIC_TYPE_TONE,
|
||||
HAPTIC_TYPE_RUMBLE,
|
||||
HAPTIC_TYPE_NOISE,
|
||||
HAPTIC_TYPE_SCRIPT,
|
||||
HAPTIC_TYPE_LOG_SWEEP,
|
||||
} haptic_type_t;
|
||||
|
||||
typedef enum {
|
||||
HAPTIC_INTENSITY_SYSTEM,
|
||||
HAPTIC_INTENSITY_SHORT,
|
||||
HAPTIC_INTENSITY_MEDIUM,
|
||||
HAPTIC_INTENSITY_LONG,
|
||||
HAPTIC_INTENSITY_INSANE,
|
||||
} haptic_intensity_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t side; // 0x01 = L, 0x02 = R, 0x03 = Both
|
||||
uint8_t cmd; // 0 = Off, 1 = tick, 2 = click, 3 = tone, 4 = rumble, 5 =
|
||||
// rumble_noise, 6 = script, 7 = sweep,
|
||||
uint8_t ui_intensity; // 0-4 (0 = default)
|
||||
int8_t dBgain; // dB Can be positive (reasonable clipping / limiting will apply)
|
||||
uint16_t freq; // Frequency of tone (if applicable)
|
||||
int16_t dur_ms; // Duration of tone / rumble (if applicable) (neg = infinite)
|
||||
|
||||
uint16_t noise_intensity;
|
||||
uint16_t lfo_freq; // Drives both tone and rumble geneators
|
||||
uint8_t lfo_depth; // percentage, typically 100
|
||||
uint8_t rand_tone_gain; // Randomize each LFO cycle's gain
|
||||
uint8_t script_id; // Used w/ dBgain for scripted haptics
|
||||
|
||||
uint16_t lss_start_freq; // Used w/ Log Sine Sweep
|
||||
uint16_t lss_end_freq; // Ditto
|
||||
} MsgTriggerHaptic;
|
||||
|
||||
typedef struct {
|
||||
uint8_t unRumbleType;
|
||||
uint16_t unIntensity;
|
||||
uint16_t unLeftMotorSpeed;
|
||||
uint16_t unRightMotorSpeed;
|
||||
int8_t nLeftGain;
|
||||
int8_t nRightGain;
|
||||
} MsgSimpleRumbleCmd;
|
||||
|
||||
// This is the only message struct that application code should use to interact with feature request messages. Any new
|
||||
// messages should be added to the union. The structures defined here should correspond to the ones defined in
|
||||
@@ -68,8 +139,17 @@ typedef struct
|
||||
FeatureReportHeader header;
|
||||
union
|
||||
{
|
||||
MsgGetAttributes getAttributes;
|
||||
MsgWriteDeckRegister wrDeckRegister;
|
||||
MsgSetSettingsValues setSettingsValues;
|
||||
MsgGetSettingsValues getSettingsValues;
|
||||
MsgGetSettingsMaxs getSettingsMaxs;
|
||||
MsgGetSettingsDefaults getSettingsDefaults;
|
||||
MsgGetAttributes getAttributes;
|
||||
MsgSetControllerMode controllerMode;
|
||||
MsgFireHapticPulse fireHapticPulse;
|
||||
MsgGetStringAttribute getStringAttribute;
|
||||
MsgHapticSetMode hapticMode;
|
||||
MsgTriggerHaptic triggerHaptic;
|
||||
MsgSimpleRumbleCmd simpleRumble;
|
||||
} payload;
|
||||
|
||||
} FeatureReportMsg;
|
||||
@@ -317,8 +397,8 @@ typedef struct
|
||||
short sGyroQuatZ;
|
||||
|
||||
// Uncalibrated trigger values
|
||||
short sLeftTrigger;
|
||||
short sRightTrigger;
|
||||
unsigned short sTriggerRawL;
|
||||
unsigned short sTriggerRawR;
|
||||
|
||||
// Left stick values
|
||||
short sLeftStickX;
|
||||
@@ -329,8 +409,8 @@ typedef struct
|
||||
short sRightStickY;
|
||||
|
||||
// Touchpad pressures
|
||||
short sLeftPadPressure;
|
||||
short sRightPadPressure;
|
||||
unsigned short sPressurePadLeft;
|
||||
unsigned short sPressurePadRight;
|
||||
} SteamDeckStatePacket_t;
|
||||
|
||||
typedef struct
|
||||
|
||||
Reference in New Issue
Block a user