Files
decky-frontend-lib/src/globals/steam-client/Input.ts

811 lines
28 KiB
TypeScript

import { Unregisterable } from "./shared";
/**
* Represents functions related to input and controllers in Steam.
*/
export interface Input {
CalibrateControllerIMU(controllerIndex: any): any;
CalibrateControllerJoystick(controllerIndex: any): any;
CalibrateControllerTrackpads(controllerIndex: any): any;
CancelGyroSWCalibration(): any;
ClearSelectedConfigForApp(appId: number, controllerIndex: number): any;
CloseDesktopConfigurator: any;
/**
* Writes text.
* @param textToWrite The text to write.
*/
ControllerKeyboardSendText(textToWrite: string): void;
/**
* Sets a specified key's pressed state.
* @param key The key index to set the state for.
* @param state `true` for pressed, `false` otherwise.
* @example
* Send paste command:
* ```
* SteamClient.Input.ControllerKeyboardSetKeyState(EHIDKeyboardKey.LControl, true);
* SteamClient.Input.ControllerKeyboardSetKeyState(EHIDKeyboardKey.V, true);
* SteamClient.Input.ControllerKeyboardSetKeyState(EHIDKeyboardKey.V, false);
* SteamClient.Input.ControllerKeyboardSetKeyState(EHIDKeyboardKey.LControl, false);
* ```
*/
ControllerKeyboardSetKeyState(key: EHIDKeyboardKey, state: boolean): void;
DecrementCloudedControllerConfigsCounter(): any;
DeletePersonalControllerConfiguration(param0: any): any;
//f.Debug("sending to client"), this.SetEditingConfigurationValue(e, t, c.QU, (e => SteamClient.Input.DuplicateControllerConfigurationSourceMode(this.m_unControllerIndex, e))), this.SaveEditingConfiguration(e), this
DuplicateControllerConfigurationSourceMode(controllerIndex: number, param1: any): any;
EndControllerDeviceSupportFlow(): any;
ExportCurrentControllerConfiguration(controllerIndex: number, appId: number, param2: number, title: string, description: string, param5: string): Promise<any>;
ForceConfiguratorFocus(param0: boolean): any;
ForceSimpleHapticEvent(param0: number, param1: number, param2: number, param3: number, param4: number): any;
FreeControllerConfig(m_ChordSummaryConfiguration: any): any;
GetConfigForAppAndController(appId: number, unControllerIndex: number): any;
/**
* Retrieves the controller mapping string for the specified controller index.
* @param unControllerIndex The controller index.
* @returns the controller mapping string.
*/
GetControllerMappingString(unControllerIndex: number): Promise<string>;
GetControllerPreviouslySeen(): Promise<number[]>;
GetSteamControllerDongleState(): Promise<boolean>;
GetTouchMenuIconsForApp(appId: number): Promise<any>;
GetXboxDriverInstallState(): Promise<any>; // "{"nResult":0}"
IdentifyController(controllerIndex: number): any;
InitControllerSounds(): any;
InitializeControllerPersonalizationSettings(controllerIndex: number): any;
ModalKeyboardDismissed(): void;
OpenDesktopConfigurator: any;
PreviewConfigForAppAndController(appId: number, controllerIndex: number, workshopUri: string): any;
PreviewControllerLEDColor(flHue: number, flSaturation: number, flBrightness: number): any;
QueryControllerConfigsForApp(appId: number, controllerIndex: number, param2: boolean): any;
RegisterForActiveControllerChanges: Unregisterable; // {"nActiveController":0}
//param0 - e possibly appid?
//param1 - some index?
RegisterForConfigSelectionChanges(callback: (param0: number, param1: number) => void): Unregisterable;
RegisterForControllerAccountChanges: Unregisterable;
RegisterForControllerAnalogInputMessages(
callback: (msgs: ControllerAnalogInputMessage[]) => void,
): Unregisterable;
RegisterForControllerBatteryChanges(callback: any): Unregisterable;
RegisterForControllerCommandMessages(
callback: (msg: ControllerCommandMessage) => void,
): Unregisterable;
/**
* Registers a callback for changes in controller configuration cloud state.
* @param callback The callback function for config cloud state changes.
* @returns an object that can be used to unregister the callback.
*/
RegisterForControllerConfigCloudStateChanges(
callback: (state: ControllerConfigCloudState) => void,
): Unregisterable;
/**
* Registers a callback for receiving controller configuration info messages (controller layouts query, personal controller layout query).
* @param callback The callback function for controller config info messages.
* @returns an object that can be used to unregister the callback.
* @remarks Do Not Use, this will break the controller layout selection unless you know what you are doing.
*/
RegisterForControllerConfigInfoMessages(
callback: (
msgs: ControllerConfigInfoMessageList[] | ControllerConfigInfoMessageQuery[],
) => void,
): Unregisterable;
/**
* Registers a callback function to be invoked when controller input messages are received.
* @param callback The callback function to be invoked when controller input messages are received.
* @returns an object that can be used to unregister the callback.
*/
RegisterForControllerInputMessages(
callback: (controllerIndex: number, gamepadButton: ControllerInputGamepadButton, isButtonPressed: boolean) => void,
): Unregisterable;
RegisterForControllerListChanges(callback: (controllerListChanges: ControllerInfo[]) => void): Unregisterable;
/**
* Registers a callback for changes in the controller state (buttons presses, triggers presses, joystick changes etc...).
* @param callback The callback function for controller state changes.
* @returns an object that can be used to unregister the callback.
*/
RegisterForControllerStateChanges(
callback: (changes: ControllerStateChange[]) => void,
): Unregisterable;
RegisterForDualSenseUpdateNotification(callback: (m_strDualSenseUpdateProduct: string) => void): Unregisterable;
/**
* Registers a callback for receiving game keyboard messages (text field popup for inputting text for games when in character creation or etc...).
* @param callback The callback function for game keyboard messages.
* @returns an object that can be used to unregister the callback.
*/
RegisterForGameKeyboardMessages(callback: (msg: GameKeyboardMessage) => void): Unregisterable;
RegisterForRemotePlayConfigChanges(callback: () => void): Unregisterable;
//data.appId, data.ulConfigId
RegisterForShowControllerLayoutPreviewMessages(callback: (data: any) => void): Unregisterable;
/*
onTouchMenuInput(e) {
for (let t = 0; t < e.length; t++) {
const n = this.TouchMenuGetKey(e[t]), o = this.m_mapActiveTouchMenus.get(n);
void 0 !== o && o.updateTouchMenuState(e[t])
}
}
*/
RegisterForTouchMenuInputMessages(callback: (inputs: number[]) => void): Unregisterable;
RegisterForTouchMenuMessages(callback: (msg: TouchMenuMessage) => void): Unregisterable;
//param0 - index?
RegisterForUIVisualization(param0: any, param1: any, param2: any): Unregisterable;
RegisterForUnboundControllerListChanges(callback: (m_unboundControllerList: any) => void): Unregisterable; // param0 is an array
/*
OnDismissKeyboardMessage(e) {
this.m_WindowStore.SteamUIWindows.forEach((e => e.VirtualKeyboardManager.SetVirtualKeyboardHidden(e.BrowserWindow)))
}
*/
RegisterForUserDismissKeyboardMessages(callback: (param0: any) => void): Unregisterable;
RegisterForUserKeyboardMessages: Unregisterable;
RequestGyroActive(controllerIndex: number, param1: boolean): any;
RequestRemotePlayControllerConfigs(param0: any): any;
ResetControllerBindings(param0: any): any;
ResolveCloudedControllerConfigConflict(param0: any): any;
RestoreControllerPersonalizationSettings(controllerIndex: number): any;
SaveControllerCalibration(controllerIndex: number): any;
SaveControllerPersonalizationSettings(param0: any): any;
SaveControllerSounds: any;
SaveEditingControllerConfiguration(controllerIndex: number, sharedConfig: boolean): any;
//this.SetEditingConfigurationValue(e, t, c.sL, (e => SteamClient.Input.SetControllerConfigurationModeShiftBinding(this.m_unControllerIndex, e)))
SetControllerConfigurationModeShiftBinding(controllerIndex: number, param1: any): any;
SetControllerHapticSetting(controllerIndex: number, eHapticSetting: any): any;
SetControllerMappingString(mapping: string): void;
SetControllerName(controllerIndex: number, controllerName: string): any;
SetControllerNintendoLayoutSetting: any;
SetControllerPersonalizationName: any;
//param0 - nLStickDeadzone, bSWAntiDrift, nRHapticStrength, flRPadPressureCurve
/*
SteamClient.Input.SetControllerPersonalizationSetting("nLStickDeadzone", e.nLStickDeadzone),
SteamClient.Input.SetControllerPersonalizationSetting("nRStickDeadzone", e.nRStickDeadzone),
SteamClient.Input.SetControllerPersonalizationSetting("bSWAntiDrift", e.bSWAntiDrift ? 1 : 0),
SteamClient.Input.SetControllerPersonalizationSetting("nLHapticStrength", e.nLHapticStrength),
SteamClient.Input.SetControllerPersonalizationSetting("nRHapticStrength", e.nRHapticStrength),
SteamClient.Input.SetControllerPersonalizationSetting("flLPadPressureCurve", 100 * e.flLPadPressureCurve),
SteamClient.Input.SetControllerPersonalizationSetting("flRPadPressureCurve", 100 * e.flRPadPressureCurve),
SteamClient.Input.SetControllerPersonalizationSetting("ePlayerSlotLEDSetting", e),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nGyroSampleAngleOffsetX", e.nGyroSampleAngleOffsetX),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.bMomentumEnabled", e.bMomentumEnabled ? 1 : 0),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nMomentumFrictionX", e.nMomentumFrictionX),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nMomentumFrictionY", e.nMomentumFrictionY),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nAccerationLevel", e.nAccerationLevel),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.bInvertX", e.bInvertX ? 1 : 0),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.bInvertY", e.bInvertY ? 1 : 0),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nRotationAngle", e.nRotationAngle),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nTriggerClamping", e.nTriggerClamping),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nTriggerClampingAmount", e.nTriggerClampingAmount),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nGyroEnableButton", e.nGyroEnableButton),
SteamClient.Input.SetControllerPersonalizationSetting("GyroPreferenceData.nGyroEnableButtonBehavior", e.nGyroEnableButtonBehavior),
*/
SetControllerPersonalizationSetting(param0: string, param1: number): any;
//param0 - flGyroStationaryTolerance, flAccelerometerStationaryTolerance,
/*
SteamClient.Input.SetControllerPersonalizationSettingFloat("GyroPreferenceData.flGyroNaturalSensitivity", e.flGyroNaturalSensitivity),
SteamClient.Input.SetControllerPersonalizationSettingFloat("GyroPreferenceData.flGyroXYRatio", e.flGyroXYRatio),
SteamClient.Input.SetControllerPersonalizationSettingFloat("GyroPreferenceData.flGyroSpeedDeadzone", e.flGyroSpeedDeadzone),
SteamClient.Input.SetControllerPersonalizationSettingFloat("GyroPreferenceData.flGyroPrecisionSpeed", e.flGyroPrecisionSpeed),
SteamClient.Input.SetControllerPersonalizationSettingFloat("flGyroStationaryTolerance", e.flGyroStationaryTolerance),
SteamClient.Input.SetControllerPersonalizationSettingFloat("flAccelerometerStationaryTolerance", e.flAccelerometerStationaryTolerance),
*/
SetControllerPersonalizationSettingFloat(param0: string, param1: number): any;
SetControllerRumbleSetting(controllerIndex: number, rumblePreference: EControllerRumbleSetting): any;
SetControllerUseUniversalFaceButtonGlyphs(controllerIndex: number, value: boolean): void;
SetCursorActionset(param0: boolean): any;
SetDualSenseUpdateNotification(param0: boolean): any
/*
SetEditingConfigurationValue(e, t, n, o) {
const a = new r.BinaryWriter;
n.serializeBinaryToWriter(n.fromObject(t), a);
const s = a.getResultBase64String();
f.Debug("SetEditingConfigurationValue serializeBinaryToWriter", (0, i.ZN)(t), s), this.EditingConfigurationWillUpdate(), this.m_updatingEditingConfigurationPromise = o(s).then((t => {
if (null == t) return f.Debug("SetEditingConfigurationValue returned nothing."), void (0, i.z)((() => this.UpdateEditingConfiguration(e, this.m_unControllerIndex, this.EditingConfiguration)));
const n = c.bE.deserializeBinary(t).toObject();
f.Debug("SetEditingConfigurationValue returned controller configuration.", n), this.UpdateEditingConfiguration(e, this.m_unControllerIndex, n), this.m_nEditNumber++, -1 == n.url.indexOf("autosave://") && this.SaveEditingConfiguration(e)
})).catch((e => {
f.Error("SetEditingConfigurationValue fail:", o, l.jt(e.result), e.message), this.m_bIsUpdatingActiveConfiguration = !1
}))
}
SetControllerActionSet(e, t) {
this.SetEditingConfigurationValue(e, t, c.X3, (e => SteamClient.Input.SetEditingControllerConfigurationActionSet(this.m_unControllerIndex, e)))
}
*/
SetEditingControllerConfigurationActionSet(controllerIndex: number, param1: any): any;
//this.SetEditingConfigurationValue(e, t, c.io, (e => SteamClient.Input.SetEditingControllerConfigurationInputActivator(this.m_unControllerIndex, e)))
SetEditingControllerConfigurationInputActivator(controllerIndex: number, param1: any): any;
//this.SetEditingConfigurationValue(e, t, c.tH, (e => SteamClient.Input.SetEditingControllerConfigurationInputActivatorEnabled(this.m_unControllerIndex, e)))
SetEditingControllerConfigurationInputActivatorEnabled(controllerIndex: number, param1: any): any;
//this.SetEditingConfigurationValue(e, t, c.J2, (e => SteamClient.Input.SetEditingControllerConfigurationInputBinding(this.m_unControllerIndex, e)))
SetEditingControllerConfigurationInputBinding(controllerIndex: number, param1: any): any;
//this.SetEditingConfigurationValue(e, t, c.Sz, (e => SteamClient.Input.SetEditingControllerConfigurationMiscSetting(this.m_unControllerIndex, e)))
SetEditingControllerConfigurationMiscSetting(controllerIndex: number, param1: any): any;
//f.Debug("sending to client"), this.SetEditingConfigurationValue(e, t, c.QU, (e => SteamClient.Input.SetEditingControllerConfigurationSourceMode(this.m_unControllerIndex, e)))
SetEditingControllerConfigurationSourceMode(controllerIndex: number, param1: any): any;
SetGamepadKeyboardText(param0: boolean, param1: string): any;
SetKeyboardActionset(param0: boolean, param1: boolean): any;
/**
* Sets the mouse position.
* @param pid 0
* @param x Mouse X position.
* @param y Mouse Y position.
*/
SetMousePosition(pid: number, x: number, y: number): void;
SetSelectedConfigForApp(appId: number, controllerIndex: number, url: string, param3: boolean): any;
SetSteamControllerDonglePairingMode(bEnable: boolean, bSilent: boolean): any;
SetVirtualMenuKeySelected(unControllerIndex: number, unMenuIndex: number, m_controllerMenuActiveMenuItem: number): any; //
SetWebBrowserActionset(param0: boolean): any;
SetXboxDriverInstallState(param0: any): any; // state
/**
* Opens the Steam Input controller settings.
* This function displays the Steam Input controller settings for configuration.
*/
ShowControllerSettings(): void;
StandaloneKeyboardDismissed(): any;
StartControllerDeviceSupportFlow(param0: any, param1: any, callback: (param2: any) => void): any;
/*
this.m_updatingEditingConfigurationPromise = SteamClient.Input.StartEditingControllerConfigurationForAppIDAndControllerIndex(e, t).then((n=>{
const o = c.bE.deserializeBinary(n).toObject();
f.Debug("Loaded controller config for appid", e, n, o),
(0,
i.z)((()=>this.UpdateEditingConfiguration(e, t, o)))
}
)).catch((n=>{
f.Debug("Loading controller config for appid rejected", e, n),
(0,
i.z)((()=>this.UpdateEditingConfiguration(e, t, null)))
}
))
*/
StartEditingControllerConfigurationForAppIDAndControllerIndex(m_appId: number, m_unControllerIndex: number): Promise<any>;
StartGyroSWCalibration(callback: () => void): any;
StopEditingControllerConfiguration(controllerIndex: number): any;
SwapControllerConfigurationSourceModes: any;
//this.SetEditingConfigurationValue(e, t, c.Qb, (e => SteamClient.Input.SwapControllerModeInputBindings(this.m_unControllerIndex, e)))
SwapControllerModeInputBindings(controllerIndex: number, param1: any): any;
SwapControllerOrder(controllerIndex1: number, controllerIndex2: number): any;
SyncCloudedControllerConfigs(): any;
// type - enum
/*
Off - 0, Tick, Click
*/
TriggerHapticPulse(controllerIndex: number, eHapticType: number, param2: number): any;
TriggerSimpleHapticEvent(
controllerIndex: number,
eHapticType: number,
unIntensity: number,
ndBGain: number,
param4: number,
): any;
UnregisterForControllerStateChanges(): void;
UnregisterForUIVisualization(controllerIndex: number): any;
UploadChangesForCloudedControllerConfigs(): any;
}
export enum EHIDKeyboardKey {
Invalid,
BeforeFirst = 3,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
Key_1,
Key_2,
Key_3,
Key_4,
Key_5,
Key_6,
Key_7,
Key_8,
Key_9,
Key_0,
Return,
Escape,
Backspace,
Tab,
Space,
Dash,
Equals,
LeftBracket,
RightBracket,
Backslash,
Unused1,
Semicolon,
SingleQuote,
Backtick,
Comma,
Period,
ForwardSlash,
CapsLock,
F1,
F2,
F3,
F4,
F5,
F6,
F7,
F8,
F9,
F10,
F11,
F12,
PrintScreen,
ScrollLock,
Break,
Insert,
Home,
PageUp,
Delete,
End,
PageDown,
RightArrow,
LeftArrow,
DownArrow,
UpArrow,
NumLock,
KeypadForwardSlash,
KeypadAsterisk,
KeypadDash,
KeypadPlus,
KeypadEnter,
Keypad_1,
Keypad_2,
Keypad_3,
Keypad_4,
Keypad_5,
Keypad_6,
Keypad_7,
Keypad_8,
Keypad_9,
Keypad_0,
KeypadPeriod,
LAlt,
LShift,
LWin,
LControl,
RAlt,
RShift,
RWin,
RControl,
VolUp,
VolDown,
Mute,
Play,
Stop,
Next,
Prev,
AfterLast,
}
export interface ControllerAnalogInputMessage {
nA: number;
x: number;
y: number;
nC: number;
}
export interface ControllerCommandMessage {
/**
* @todo enum
*/
eAction: number;
nControllerIndex: number;
}
export interface ControllerConfigCloudState {
bSyncDone: boolean;
bSyncConflict: boolean;
bSyncError: boolean;
}
export interface ControllerConfigInfoMessage {
appID: number;
}
export interface ControllerConfigInfoMessageQuery extends ControllerConfigInfoMessage {
bPersonalQueryDone: boolean;
}
export interface ControllerConfigInfoMessageList extends ControllerConfigInfoMessage {
nControllerType: number;
publishedFileID: string;
accountID: number;
Title: string;
Description: string;
URL: string;
timeUpdated: string;
bOfficial: boolean;
bProgenitorOfficial: boolean;
bRecommended: boolean;
bProgenitorRecommended: boolean;
bUsesSIAPI: boolean;
bUsesMouse: boolean;
bUsesKeyboard: boolean;
bUsesGamepad: boolean;
/**
* @todo unconfirmed
*/
eExportType: EControllerConfigExportType;
playtime: string;
bSelected: boolean;
}
export enum EControllerConfigExportType {
Unknown,
PersonalLocal,
PersonalCloud,
Community,
Template,
Official,
OfficialDefault,
}
export enum EControllerRumbleSetting {
ControllerPreference,
Off,
On,
}
export enum ControllerInputGamepadButton {
GAMEPAD_BUTTON_A = 0,
GAMEPAD_BUTTON_B = 1,
GAMEPAD_BUTTON_X = 2,
GAMEPAD_BUTTON_Y = 3,
GAMEPAD_BUTTON_DPAD_UP = 4,
GAMEPAD_BUTTON_DPAD_RIGHT = 5,
GAMEPAD_BUTTON_DPAD_DOWN = 6,
GAMEPAD_BUTTON_DPAD_LEFT = 7,
GAMEPAD_BUTTON_MENU = 8,
GAMEPAD_BUTTON_VIEW = 9,
GAMEPAD_LEFTPAD_UP = 10,
GAMEPAD_LEFTPAD_DOWN = 11,
GAMEPAD_LEFTPAD_LEFT = 12,
GAMEPAD_LEFTPAD_RIGHT = 13,
GAMEPAD_LEFTPAD_ANALOG = 14,
GAMEPAD_RIGHTPAD_UP = 15,
GAMEPAD_RIGHTPAD_DOWN = 16,
GAMEPAD_RIGHTPAD_LEFT = 17,
GAMEPAD_RIGHTPAD_RIGHT = 18,
GAMEPAD_RIGHTPAD_ANALOG = 19,
GAMEPAD_LEFTSTICK_UP = 20,
GAMEPAD_LEFTSTICK_DOWN = 21,
GAMEPAD_LEFTSTICK_LEFT = 22,
GAMEPAD_LEFTSTICK_RIGHT = 23,
GAMEPAD_LEFTSTICK_ANALOG = 24,
GAMEPAD_LEFTSTICK_CLICK = 25,
GAMEPAD_LTRIGGER_ANALOG = 26,
GAMEPAD_RTRIGGER_ANALOG = 27,
GAMEPAD_BUTTON_LTRIGGER = 28,
GAMEPAD_BUTTON_RTRIGGER = 29,
GAMEPAD_BUTTON_LSHOULDER = 30,
GAMEPAD_BUTTON_RSHOULDER = 31,
GAMEPAD_BUTTON_LBACK = 32,
GAMEPAD_BUTTON_RBACK = 33,
GAMEPAD_BUTTON_GUIDE = 34,
GAMEPAD_BUTTON_SELECT = 35,
GAMEPAD_BUTTON_START = 36,
GAMEPAD_BUTTON_LPAD_CLICKED = 37,
GAMEPAD_BUTTON_LPAD_TOUCH = 38,
GAMEPAD_BUTTON_RPAD_CLICKED = 39,
GAMEPAD_BUTTON_RPAD_TOUCH = 40,
GAMEPAD_RIGHTSTICK_CLICK = 41,
GAMEPAD_RIGHTSTICK_TOUCH = 42,
GAMEPAD_LEFTSTICK_TOUCH = 43,
GAMEPAD_BUTTON_LBACK_UPPER = 44,
GAMEPAD_BUTTON_RBACK_UPPER = 45,
GAMEPAD_BUTTON_LAST = 46,
GAMEPAD_ANALOG_SCROLL = 47,
GAMEPAD_ANALOG_LEFT_KEYBOARD_CURSOR = 48,
GAMEPAD_ANALOG_RIGHT_KEYBOARD_CURSOR = 49,
GAMEPAD_ANALOG_LAST = 50
}
// TODO: Not the actual name, but the enum is only represented in a dropdown
// options vector, ty valve
export enum EThirdPartyControllerConfiguration {
Off,
DefaultSetting,
On,
}
export interface ActiveAccount {
strActiveAccountID: string;
strName: string;
strAvatarHash: string;
}
export interface ControllerInfo {
strName: string;
eControllerType: EControllerType;
nXInputIndex: number;
nControllerIndex: number;
eRumblePreference: EControllerRumbleSetting;
bWireless: boolean;
unUniqueID: number;
unVendorID: number;
unProductID: number;
/** Bitmask */
unCapabilities: number;
strFirmwareBuildTime: string;
strSerialNumber: string;
strChipID: string;
nLEDColorR: number;
nLEDColorG: number;
nLEDColorB: number;
flLEDBrightness: number;
flLEDSaturation: number;
nTurnOnSound: number;
nTurnOffSound: number;
nLStickDeadzone: number;
nRStickDeadzone: number;
nLHapticStrength: number;
nRHapticStrength: number;
flLPadPressureCurve: number;
flRPadPressureCurve: number;
bHaptics: boolean;
bSWAntiDrift: boolean;
flGyroStationaryTolerance: number;
flAccelerometerStationaryTolerance: number;
bRemoteDevice: boolean;
bNintendoLayout: boolean;
bUseReversedLayout: boolean;
ActiveAccount: ActiveAccount | undefined;
vecAltAccounts: any[]; // The type for this property might need to be more specific based on the actual data structure
}
export enum EControllerType {
None = -1,
Unknown,
UnknownSteamController,
SteamController, // Codename Gordon
SteamControllerV2, // Codename Headcrab
SteamControllerNeptune, // Steam Deck
FrontPanelBoard = 20,
Generic = 30,
XBox360Controller,
XBoxOneController,
PS3Controller,
PS4Controller,
WiiController,
AppleController,
AndroidController,
SwitchProController,
SwitchJoyConLeft,
SwitchJoyConRight,
SwitchJoyConPair,
SwitchProGenericInputOnlyController,
MobileTouch,
SwitchProXInputSwitchController,
PS5Controller,
XboxEliteController,
LastController, // Unverified
PS5EdgeController,
GenericKeyboard = 400,
GenericMouse = 800,
}
export interface ControllerStateChange {
unControllerIndex: number;
unPacketNum: number;
/**
* Bitmask representing pressed upper buttons.
* - Bit 0-8: Unknown (@todo Please provide more details if known)
* - Bit 9: L4
* - Bit 10: R4
* - Bit 11-13: Unknown (@todo Please provide more details if known)
* - Bit 14: Left Joystick Touch
* - Bit 15: Right Joystick Touch
* - Bit 16-17: Unknown (@todo Please provide more details if known)
* - Bit 18: Quick Access Menu
*/
ulUpperButtons: number;
/**
* Bitmask representing pressed buttons.
* - Bit 0: R2
* - Bit 1: L2
* - Bit 2: R1
* - Bit 3: L1
* - Bit 4: Y
* - Bit 5: B
* - Bit 6: X
* - Bit 7: A
* - Bit 8: D-Pad Up
* - Bit 9: D-Pad Right
* - Bit 10: D-Pad Left
* - Bit 11: D-Pad Down
* - Bit 12: Select
* - Bit 13: Steam/Home
* - Bit 14: Start
* - Bit 15: L5
* - Bit 16: R5
* - Bit 17: Left Touchpad Click
* - Bit 18: Right Touchpad Click
* - Bit 19: Left Touchpad Touch
* - Bit 20: Right Touchpad Touch
* - Bit 21: Unknown (@todo Please provide more details if known)
* - Bit 22: L3
* - Bit 23-25: Unknown (@todo Please provide more details if known)
* - Bit 26: R3
* - Bit 27-28: Unknown (@todo Please provide more details if known)
* - Bit 29: Mute (Dualsense)
* - Bit 30-31: Unknown (@todo Please provide more details if known)
*/
ulButtons: number;
sLeftPadX: number;
sLeftPadY: number;
sRightPadX: number;
sRightPadY: number;
sCenterPadX: number;
sCenterPadY: number;
sLeftStickX: number;
sLeftStickY: number;
sRightStickX: number;
sRightStickY: number;
sTriggerL: number;
sTriggerR: number;
flTrustedGravityVectorX: number;
flTrustedGravityVectorY: number;
flTrustedGravityVectorZ: number;
flSoftwareQuatW: number;
flSoftwareQuatX: number;
flSoftwareQuatY: number;
flSoftwareQuatZ: number;
flSoftwareGyroDegreesPerSecondPitch: number;
flSoftwareGyroDegreesPerSecondYaw: number;
flSoftwareGyroDegreesPerSecondRoll: number;
flHardwareQuatW: number;
flHardwareQuatX: number;
flHardwareQuatY: number;
flHardwareQuatZ: number;
flHardwareGyroDegreesPerSecondPitch: number;
flHardwareGyroDegreesPerSecondYaw: number;
flHardwareGyroDegreesPerSecondRoll: number;
flGyroNoiseLength: number;
flGyroCalibrationProgress: number;
flGravityVectorX: number;
flGravityVectorY: number;
flGravityVectorZ: number;
flAccelerometerNoiseLength: number;
sBatteryLevel: number;
sPressurePadLeft: number;
sPressurePadRight: number;
sPressureBumperLeft: number;
sPressureBumperRight: number;
unHardwareUpdateInMicrosec: number;
}
export interface GameKeyboardMessage {
m_bOpen: boolean;
nAppID: number;
m_dwPID: number;
m_dwOverlayPID: number;
m_hPipe: number;
/** @todo enum */
m_eInputMode: number;
/** @todo enum */
m_eLineInputMode: number;
m_pchDescription: string;
m_unCharMax: number;
m_pchExistingText: string;
}
export interface TouchMenuMessage {
bHasVirtualMenus: boolean;
unControllerIndex: number;
appID: number;
}