Steamworks 文献库
ISteamInput 接口
Steam 输入 API 是一个基于操作的灵活 API,支持所有主要控制器类型——Xbox、PlayStation、Nintendo Switch Pro 和 Steam 控制器。

参见 Steam 输入 文档,了解更多信息。

成员函数

ISteamInpu 的成员函数通过全局访问器函数 SteamInput() 调用。

ActivateActionSet

void ActivateActionSet( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle );
名称类型描述
inputHandleInputHandle_t您要为其激活一个操作集的控制器句柄。
actionSetHandleInputActionSetHandle_t您要激活的操作集的句柄。

重新配置控制器以使用指定的操作集(如:“菜单”、“行走”或“驾驶”)。

此函数消耗低,并能多次安全调用。 通常在您的状态循环中反复调用较为容易,无需试图将其放入您的所有状态转换中。

示例:
void updateStateLoop() { switch( currentState ) { case MENU: SteamInput()->ActivateActionSet( inputHandle1, menuSetHandle ); doMenuStuff(); break; case WALKING: SteamInput()->ActivateActionSet( inputHandle1, walkingSetHandle ); doWalkingStuff(); break; case DRIVING: SteamInput()->ActivateActionSet( inputHandle1, drivingSetHandle ); doDrivingStuff(); break; case FIGHTING: SteamInput()->ActivateActionSet( inputHandle1, fightingSetHandle ); doFightingStuff(); break; } }

激活所有控制器

许多时候,您会想要一次性激活所有控制器,而非单个设备。 那么,您应当使用常量 STEAM_INPUT_HANDLE_ALL_CONTROLLERS 作为您的控制器句柄。 同样地,您也可以在其他任何调用单个控制器句柄的函数中使用此值。

示例:
void updateStateLoop() { switch( currentState ) { case MENU: SteamInput()->ActivateActionSet( STEAM_INPUT_HANDLE_ALL_CONTROLLERS, menuSetHandle ); doMenuStuff(); break; case WALKING: SteamInput()->ActivateActionSet( STEAM_INPUT_HANDLE_ALL_CONTROLLERS, walkingSetHandle ); doWalkingStuff(); break; case DRIVING: SteamInput()->ActivateActionSet( STEAM_INPUT_HANDLE_ALL_CONTROLLERS, drivingSetHandle ); doDrivingStuff(); break; case FIGHTING: SteamInput()->ActivateActionSet( STEAM_INPUT_HANDLE_ALL_CONTROLLERS, fightingSetHandle ); doFightingStuff(); break; } }

ActivateActionSetLayer

void ActivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle );
名称类型描述
inputHandleInputHandle_t您要为其激活一个操作集层的控制器句柄。
actionSetHandleInputActionSetHandle_t您要激活的操作集层的句柄。

重新配置控制器以使用指定的操作集层。

参见操作集层一文,了解详情以及深度实用示例。

示例:
SteamInput()->ActivateActionSetLayer( inputHandle1, myActionSetLayer );

DeactivateActionSetLayer

void DeactivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle );
名称类型描述
inputHandleInputHandle_t您要为其停用一个操作集层的控制器句柄。
actionSetHandleInputActionSetHandle_t您要停用的操作集层的句柄。

重新配置控制器以停止使用指定的操作集层。

示例:
SteamInput()->DeactivateActionSetLayer( inputHandle1, myActionSetLayer );

DeactivateAllActionSetLayers

void DeactivateAllActionSetLayers( InputHandle_t inputHandle );
名称类型描述
inputHandleInputHandle_t您要为其停用所有操作集层的控制器句柄。

重新配置控制器以停止使用所有操作集层。

示例:
SteamInput()->DeactivateAllActionSetLayers( inputHandle1 );

GetActiveActionSetLayers

int GetActiveActionSetLayers( InputHandle_t inputHandle, InputActionSetHandle_t *handlesOut );
名称类型描述
inputHandleInputHandle_t您要为其获得操作集层的控制器句柄。
handlesOutInputActionSetHandle_t*必须指向 ControllerHandle_t 的一个 STEAM_INPUT_MAX_COUNT 大小的数组。

把一个指定控制器句柄的所有当前激活操作集层填入一个数组。

示例:
InputActionSetHandle_t hActiveLayerHandles [STEAM_INPUT_MAX_ACTIVE_LAYERS]; SteamInput()->GetActiveActionSetLayers( controllerHandle, hActiveLayerHandles );

GetActionSetHandle

InputActionSetHandle_t GetActionSetHandle( const char *pszActionSetName );
名称类型描述
pszActionSetNameconst char *在游戏的 VDF 文件中定义的操作集的字符串标识符。

查找操作集句柄。 最好在启动时调用一次,并存储句柄供所有未来 API 调用使用。

返回: InputActionSetHandle_t
指定操作集的句柄。

示例:
InputActionSetHandle_t fightingSetHandle = SteamInput()->GetActionSetHandle( "fighting" );

GetAnalogActionData

InputAnalogActionData_t GetAnalogActionData( InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle );
名称类型描述
inputHandleInputHandle_t您要查询的控制器句柄。
analogActionHandleInputAnalogActionHandle_t您要查询的模拟操作的句柄。

返回所提供的模拟游戏操作的当前状态。

返回: InputAnalogActionData_t
指定模拟操作的当前状态。

示例:
InputAnalogActionData_t data = SteamInput()->GetAnalogActionData( controller1Handle, moveHandle );

GetAnalogActionHandle

InputAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName );
名称类型描述
pszActionNameconst char *在游戏的 VDF 文件中定义的模拟操作的字符串标识符。

获得指定的模拟操作的句柄。

注意: 此函数不接受操作集句柄参数。 这意味着 VDF 文件中的每个操作都必须有唯一的字符串标识符。 换言之,如果您在两个不同的操作集中使用了一个名为“向上”的操作,此函数将只返回其中一个,而忽略另一个。

返回: InputAnalogActionHandle_t
指定模拟操作的句柄。

示例:
InputAnalogActionHandle_t moveHandle = SteamInput()->GetAnalogActionHandle( "move" );

GetAnalogActionOrigins

int GetAnalogActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, EInputActionOrigin *originsOut );
名称类型描述
inputHandleInputHandle_t您要查询的控制器句柄。
actionSetHandleInputActionSetHandle_t您要查询的操作集句柄。
analogActionHandleInputAnalogActionHandle_t您要查询的模拟操作的句柄。
originsOutEInputActionOrigin *EInputActionOrigin 句柄的一个 STEAM_INPUT_MAX_ORIGINS 大小的数组。

用 EInputActionOrigin 句柄填充 originsOut,获取模拟操作集中某一模拟操作的来源。 用于显示该操作的相应屏幕提示。

返回:int
originsOut 中提供的源数量。

示例:
EInputActionOrigin *origins = new EInputActionOrigin[ STEAM_INPUT_MAX_ORIGINS ]; SteamInput()->GetAnalogActionOrigins( controller1Handle, walkingSetHandle, moveHandle, origins );

GetConnectedControllers

int GetConnectedControllers( InputHandle_t *handlesOut );
名称类型描述
handlesOutInputHandle_t *必须指向 InputHandle_t 的一个 STEAM_INPUT_MAX_COUNT 大小的数组。

通过用控制器句柄来填充 handlesOut,枚举当前连接的控制器。

返回:int
写入 handlesOut 的句柄数量。

示例:
InputHandle_t *inputHandles = new InputHandle_t[ STEAM_INPUT_MAX_COUNT ]; SteamInput()->GetConnectedControllers( inputHandles );

GetControllerForGamepadIndex

InputHandle_t GetControllerForGamepadIndex( int nIndex );
名称类型描述
nIndexint您要为其获得控制器句柄的模拟手柄的索引。

返回指定模拟游戏手柄的相关控制器句柄。 可以与 GetInputTypeForHandle 一起使用,来判定使用 Steam 输入手柄模拟的控制器的类型。

返回: InputHandle_t


示例:
// 用您正在询问的 XInput 槽位代替。 这一数值在 0 至 3 之间 int nXinputSlotIndex = 0; InputHandle_t inputHandle = SteamInput()->GetControllerForGamepadIndex( nXinputSlotIndex ); if ( inputHandle == 0 ) { // 有效的输入句柄为非 0,这是一个普通的 Xbox 控制器。 } else { ESteamInputType inputType = SteamInput()->GetInputTypeForHandle( inputHandle ); switch( inputType ) { case k_ESteamInputType_Unknown: printf( "unknown!\n" ); break; case k_ESteamInputType_SteamController: printf( "Steam controller!\n" ); break; case k_ESteamInputType_XBox360Controller: printf( "XBox 360 controller!\n" ); break; case k_ESteamInputType_XBoxOneController: printf( "XBox One controller!\n" ); break; case k_ESteamInputType_GenericXInput: printf( "Generic XInput!\n" ); break; case k_ESteamInputType_PS4Controller: printf( "PS4 controller!\n" ); break; } }

GetCurrentActionSet

InputActionSetHandle_t GetCurrentActionSet( InputHandle_t inputHandle );
名称类型描述
inputHandleInputHandle_t您要查询的控制器句柄。

获取指定控制器当前激活的操作集。

返回: InputActionSetHandle_t
为指定控制器激活的操作集的句柄。

示例:
InputActionSetHandle_t controller1Set = SteamInput()->GetCurrentActionSet(controller1Handle);

GetDigitalActionData

InputDigitalActionData_t GetDigitalActionData( InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle );
名称类型描述
inputHandleInputHandle_t您要查询的控制器句柄。
digitalActionHandleInputDigitalActionHandle_t您要查询的数字操作的句柄。

返回所提供的数字游戏操作的当前状态。

返回: InputDigitalActionData_t
指定数字操作的当前状态。

GetDigitalActionHandle

InputDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName );
名称类型描述
pszActionNameconst char *在游戏的 VDF 文件中定义的数字操作的字符串标识符。

获取指定的数字操作的句柄。

注意: 此函数不接受操作集句柄参数。 这意味着 VDF 文件中的每个操作都必须有唯一的字符串标识符。 换言之,如果您在两个不同的操作集中使用了一个名为“向上”的操作,此函数将只返回其中一个,而忽略另一个。

返回: InputDigitalActionHandle_t
指定的数字操作的句柄。

示例:
InputDigitalActionHandle_t punchHandle = SteamInput()->GetDigitalActionHandle( "punch" );

GetDigitalActionOrigins

int GetDigitalActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, EInputActionOrigin *originsOut );
名称类型描述
inputHandleInputHandle_t您要查询的控制器句柄。
actionSetHandleInputActionSetHandle_t您要查询的操作集句柄。
digitalActionHandleInputDigitalActionHandle_t您要查询的数字操作的句柄。
originsOutEInputActionOrigin *EInputActionOrigin 句柄的一个 STEAM_INPUT_MAX_ORIGINS 大小的数组。

通过用 EInputActionOrigin 句柄填充 originsOut,获取一个操作集中某一数字操作的源。 用于显示该操作的相应屏幕提示。

返回:int
originsOut 中提供的源数量。

示例:
EInputActionOrigin *origins = new EInputActionOrigin[ STEAM_INPUT_MAX_ORIGINS ]; SteamInput()->GetDigitalActionOrigins( controller1Handle, fightingSetHandle, punchHandle, origins );

GetGamepadIndexForController

int GetGamepadIndexForController( InputHandle_t ulControllerHandle );
名称类型描述
ulControllerHandleInputHandle_t您要为其获取手柄索引的控制器的句柄。

如果模拟一个手柄,则返回指定控制器的关联手柄索引。

返回:int


示例:
int gamepadIndex = SteamInput()->GetGamepadIndexForController( controller1Handle );

GetGlyphForActionOrigin

const char * GetGlyphForActionOrigin( EInputActionOrigin eOrigin );
名称类型描述
eOriginEInputActionOrigin

获取某个特定源的屏幕字形的本地路径。

返回: const char *
图标的 png 文件的路径。
如: "C:\Program Files (x86)\Steam\tenfoot\resource\images\library\controller\api\ps4_button_x.png"

示例:
// 获取“出拳”的源 EInputActionOrigin *origins = new EInputActionOrigin[ STEAM_INPUT_MAX_ORIGINS ]; SteamInput()->GetDigitalActionOrigins( controller1Handle, fightingSetHandle, punchHandle, origins ); EInputActionOrigin firstOrigin = origins[0]; //如 k_EInputActionOrigin_PS4_X // 这是游戏自带函数,用来尝试获取自定义图标设计 int glyphTextureID = getHardCodedButtonGlyphTexture( firstOrigin ); // 我们的游戏中没有为此源推出任何艺术作品! 我想 Steam 已添加了 // 对一个新控制器的支持,或者我们只是忘记添加了此艺术作品! //(例如,我们只有 Steam 控制器的图标,但现在接入的是 PlayStation 4 控制器) if( glyphTextureID == -1 ) { // 转而从 Steam 客户端获取图像。 const char *localGlyphPath = SteamInput()->GetGlyphForActionOrigin( firstOrigin ); printf( "path = %s\n", localGlyphPath ); // "path = C:\Program Files (x86)\Steam\tenfoot\resource\images\library\controller\api\ps4_button_x.png" // 游戏中将文件路径转换为可用游戏纹理的函数 glyphTextureID = loadButtonGlyphTextureFromLocalPath( localGlyphPath ); }

GetInputTypeForHandle

ESteamInputType GetInputTypeForHandle( InputHandle_t inputHandle );
名称类型描述
inputHandleInputHandle_t您要查询其输入样式(设备型号)的控制器的句柄。

返回指定控制器的输入样式(设备型号)。 这能告诉您是否给定控制器为 Steam 控制器、Xbox 360 控制器、PS4 控制器等。

返回: ESteamInputType


示例:
ESteamInputType inputType = SteamInput()->GetInputTypeForHandle(controller1Handle); switch(inputType) { case k_ESteamInputType_Unknown: printf("unknown!\n"); break; case k_ESteamInputType_SteamController: printf("Steam controller!\n"); break; case k_ESteamInputType_XBox360Controller: printf("XBox 360 controller!\n"); break; case k_ESteamInputType_XBoxOneController: printf("XBox One controller!\n"); break; case k_ESteamInputType_GenericXInput: printf("Generic XInput!\n"); break; case k_ESteamInputType_PS4Controller: printf("PS4 controller!\n"); break; }

GetMotionData

InputMotionData_t GetMotionData( InputHandle_t inputHandle );
名称类型描述
inputHandleInputHandle_t您要获得运动数据的控制器句柄。

返回指定控制器的原始运动数据。

返回: InputMotionData_t


示例:
InputMotionData_t motionData = SteamInput()->GetControllerMotionData( inputHandle );

GetStringForActionOrigin

const char * GetStringForActionOrigin( EInputActionOrigin eOrigin );
名称类型描述
eOriginEInputActionOrigin

(从 Steam 的语言设置)返回指定源的本地化字符串。

返回: const char *


示例:
EInputActionOrigin *origins = new EInputActionOrigin[ STEAM_INPUT_MAX_ORIGINS ]; SteamInput()->GetDigitalActionOrigins( controller1Handle, fightingSetHandle, punchHandle, origins ); const char * punchString = SteamInput()->GetStringForActionOrigin( origins[0] ); printf("punch = %s\n",punchString);

Init

bool Init();
在开始使用 ISteamInput 接口时必须调用。

返回: bool
始终返回 true

示例:
SteamInput()->Init();

RunFrame

void RunFrame();
将 API 状态与可用的最新 Steam 控制器输入同步。 由 SteamAPI_RunCallbacks 自动执行,但是您可以在读取控制器状态之前直接调用此函数,以获得可能的最低延迟。

示例:
SteamInput()->RunFrame();

SetDualSenseTriggerEffect

void SetDualSenseTriggerEffect( InputHandle_t inputHandle, const ScePadTriggerEffectParam *pParam );
名称类型描述
inputHandleInputHandle_t要影响的控制器句柄。
pParam ScePadTriggerEffectParam于 isteamdualsense.h 中定义的扳机键参数。

为 DualSense 控制器设置扳机键效果。

示例:
ScePadTriggerEffectParam param; memset( &param, 0, sizeof( param ) ); param.triggerMask = SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_R2; param.command[SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_R2].mode = SCE_PAD_TRIGGER_EFFECT_MODE_VIBRATION; param.command[SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_R2].commandData.vibrationParam.position = 5; param.command[SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_R2].commandData.vibrationParam.amplitude = 5; param.command[SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_R2].commandData.vibrationParam.frequency = 8; SteamInput()->SetDualSenseTriggerEffect( controller1Handle, &param );

SetLEDColor

void SetLEDColor( InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags );
名称类型描述
inputHandleInputHandle_t要影响的控制器句柄。
nColorRuint8要设置的颜色的红色部分(0-255)。
nColorGuint8要设置的颜色的绿色部分(0-255)。
nColorBuint8要设置的颜色的蓝色部分(0-255)。
nFlagsunsigned intESteamControllerLEDFlag 中定义的值相结合的位掩码标志。

在支持的控制器上设置控制器的 LED 颜色。

注意:
Valve Steam 控制器不支持除白色以外的任何颜色,它会将 RGB 值解释为灰度值,用于调节 Steam 按钮 LED 的亮度。
而 DUALSHOCK 4 控制器则支持完整的彩色信息,会使用 RGB 值来设置灯条的颜色和亮度。

示例:
// 为控制器 1 恢复用户默认颜色: SteamInput()->SetLEDColor( controller1Handle, 0, 0, 0, k_ESteamControllerLEDFlag_RestoreUserDefault ); // 将控制器 2 的颜色设置为洋红色: SteamInput()->SetLEDColor( controller2Handle, 255, 0, 255, k_ESteamControllerLEDFlag_SetColor );

ShowAnalogActionOrigins

bool ShowAnalogActionOrigins( InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition );
名称类型描述
inputHandleInputHandle_t
analogActionHandleInputAnalogActionHandle_t
flScalefloat
flXPositionfloat
flYPositionfloat

已弃用。

返回: bool
始终返回 true

ShowBindingPanel

bool ShowBindingPanel( InputHandle_t inputHandle );
名称类型描述
inputHandleInputHandle_t您要为其调出绑定屏幕的控制器的句柄。

调出 Steam 叠加界面并打开绑定屏幕。

返回: bool
true 表示成功;如果叠加界面被禁用或不可用,则返回 false。 如果玩家正在使用大屏幕模式,配置会在叠加界面中打开。 在桌面模式下,将以弹出窗口的形式创建大屏幕模式,并打开配置。

示例:
SteamInput()->ShowBindingPanel( myControllerHandle );

ShowDigitalActionOrigins

bool ShowDigitalActionOrigins( InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition );
名称类型描述
inputHandleInputHandle_t
digitalActionHandleInputDigitalActionHandle_t
flScalefloat
flXPositionfloat
flYPositionfloat

已弃用。

返回: bool
始终返回 true

Shutdown

bool Shutdown();
在结束使用 ISteamInput 接口时必须调用。

返回: bool
始终返回 true

示例:
SteamInput()->Shutdown();

StopAnalogActionMomentum

void StopAnalogActionMomentum( InputHandle_t inputHandle, InputAnalogActionHandle_t eAction );
名称类型描述
inputHandleInputHandle_t要影响的控制器句柄。
eActionInputAnalogActionHandle_t要停止动量的模拟操作。

停止模拟操作的动量(适用时,如有虚拟轨迹球设置的触控板)。

注意:
这也会阻止所有相关联的触感。 当您想要向用户表明已达到某个操作的极限,如转动轮播区或滚动页面时,这会非常有用。

示例:
SteamInput()->StopAnalogActionMomentum( controller1Handle, moveHandle );

TriggerHapticPulse

void TriggerHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec );
名称类型描述
inputHandleInputHandle_t要影响的控制器句柄。
eTargetPadESteamControllerPad要影响的触感触控板。
usDurationMicroSecunsigned short脉冲的持续时间,以微秒(1/1,000,000 秒)表示。

在支持的控制器上触发一个(低电平)触感脉冲。

注意:
目前只有 Valve Steam 控制器支持触感脉冲。
其他所有的控制器型号会忽略此 API 调用。
无符号短整型通常最大值为 65535,这意味着您可以用此方法触发的最长触感脉冲持续时间为 0.065535 秒(即少于 1/10 秒)。 此函数应被视为一个低级原语,以在高级用户函数中反复使用,生成更复杂的行为。

示例:
//脉冲一次持续 1/20 秒 SteamInput()->TriggerHapticPulse(controller1Handle, k_ESteamControllerPad_Left, 50000);

TriggerRepeatedHapticPulse

void TriggerRepeatedHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags );
名称类型描述
inputHandleInputHandle_t要影响的控制器的句柄。
eTargetPadESteamControllerPad要影响的触感触控板。
usDurationMicroSecunsigned short脉冲的持续时间,以微秒(1/1,000,000 秒)表示。
usOffMicroSecunsigned short脉冲间隔的持续时间,以微秒表示。
unRepeatunsigned short重复 usDurationMicroSec / usOffMicroSec 工作周期的次数。
nFlagsunsigned int目前未使用,保留供将来使用。

在支持的控制器上触发重复的触感脉冲。

注意:
目前只有 Steam 控制器、Steam Deck 和 Nintendo Switch Pro 控制器设备支持触感脉冲。
其他不兼容的控制器型号会忽略此 API 调用。
此调用能生成足够长时间的脉冲类型,以引起用户注意,因此比 TriggerHapticPulse 对用户更为友好。
改变 usDurationMicroSec 和 usOffMicroSec 参数将改变触感脉冲的“纹理”。

示例:
//脉冲持续 1 秒,并按照每次开/关时间各 1/20 秒的模式执行。 SteamInput()->TriggerRepeatedHapticPulse( controller1Handle, k_ESteamControllerPad_Left, 50000, 50000, 10 );

TriggerVibration

void TriggerVibration( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed );
名称类型描述
inputHandleInputHandle_t要影响的控制器句柄。
usLeftSpeedunsigned short左侧振动马达的强度值。
usRightSpeedunsigned short右侧振动马达的强度值。

在支持的控制器上触发一个振动事件。

注意:
其他不兼容的控制器型号会忽略此 API 调用。
此调用将生成传统的机身振动效果。
Valve Steam 控制器将使用其触感反馈的振动模拟传统的机身振动。

示例:
SteamInput()->TriggerVibration( controller1Handle, 10000, 10000 );

TriggerVibrationExtended

void TriggerVibrationExtended( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed );
名称类型描述
inputHandleInputHandle_t要影响的控制器句柄。
usLeftSpeedunsigned short左侧振动马达的强度值。
usRightSpeedunsigned short右侧振动马达的强度值。
usLeftTriggerSpeedunsigned shortXbox 左脉动扳机键振动马达的强度值。
usRightTriggerSpeedunsigned shortXbox 右脉动扳机键振动马达的强度值。

在支持的控制器上触发振动事件,包括 Xbox 脉动扳机键的马达强度值。

注意:
若要在 Windows 获得对 Xbox 脉动扳机键马达强度值的支持,用户需要安装 Xbox 扩展功能支持驱动。
Steam 控制器和 Steam Deck 会使用自身的触感系统模拟传统的振动。

示例:
SteamInput()->TriggerVibrationExtended( controller1Handle, 10000, 10000, 10000, 10000 );

GetActionOriginFromXboxOrigin

EInputActionOrigin GetActionOriginFromXboxOrigin( InputHandle_t inputHandle, EXboxOrigin eOrigin );
名称类型描述
inputHandleInputHandle_t要影响的控制器句柄。 您可以使用 GetControllerForGamepadIndex 获取此句柄。
eOriginEXboxOrigin这是您想要为其获得图像的按钮。例如:k_EXboxOrigin_A

返回:EInputActionOrigin

获取可以在您的标志查找表中使用的操作源或传入 GetGlyphForActionOrigin 或 GetStringForActionOrigin 的操作源。


示例:
int nXinputSlot = 1; // 这里应换成对您的玩家来说正确的 Xinput 槽位 InputHandle_t controller1Handle = GetControllerForGamepadIndex( nXinputSlot ); EInputActionOrigin buttonOrigin = SteamInput()->GetActionOriginFromXboxOrigin( controller1Handle, k_EXboxOrigin_A ); // 从 Steam 客户端获取图像。 const char *localGlyphPath = SteamInput()->GetGlyphForActionOrigin( buttonOrigin ); printf( "path = %s\n", localGlyphPath ); // "路径 = C:\Program Files (x86)\Steam\tenfoot\resource\images\library\controller\api\ps4_button_x.png" // 游戏中将文件路径转换为可用游戏纹理的函数 glyphTextureID = loadButtonGlyphTextureFromLocalPath( localGlyphPath );

TranslateActionOrigin

EInputActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin );
名称类型描述
inputHandleInputHandle_t要影响的控制器句柄。 您可以使用 GetControllerForGamepadIndex 获取此句柄。
eDestinationInputTypeESteamInputType您要转译成的控制器类型。 如果使用了 k_ESteamInputType_Unknown,Steam 将采用与您的 SDK 版本最接近的类型。
eSourceOriginEInputActionOrigin这是您要转译的按键。

返回: EInputActionOrigin

如果 eDestinationInputType 为 k_ESteamInputType_Unknown,获得与给定控制器类型或与 SDK 中最接近且已集成进游戏中的控制器类型等同的源。 此操作源可以用于您的标志查找表中或传入 GetGlyphForActionOrigin 或 GetStringForActionOrigin。


示例:
int nXinputSlot = 1; // 这里应换成对您的玩家来说正确的 Xinput 槽位 InputHandle_t controller1Handle = GetControllerForGamepadIndex( nXinputSlot ); EInputActionOrigin buttonOrigin = SteamInput()->GetActionOriginFromXboxOrigin( controller1Handle, k_EXboxOrigin_A ); //如 k_EInputActionOrigin_PS4_X if ( buttonOrigin >= k_EInputActionOrigin_Count ) { // 我们的游戏中没有为此源推出任何艺术作品! 我想 Steam 已添加了 // 对新控制器的支持。 让我们获取我们所使用的 SDK 所支持的最接近的值 buttonOrigin = SteamInput()->TranslateActionOrigin( k_ESteamInputType_Unknown, buttonOrigin ) } // 这是游戏自带函数,用来尝试获取自定义图标设计 int glyphTextureID = getHardCodedButtonGlyphTexture( actionOrigin );

GetDeviceBindingRevision

bool GetDeviceBindingRevision( InputHandle_t inputHandle, int *pMajor, int *pMinor );
名称类型描述
inputHandleInputHandle_t要查询的控制器句柄。
pMajorint * 重大绑定更改将填入的 int 的指针。
pMinorint * 轻微绑定更改将填入的 int 的指针。

返回: bool - 如果成功找到设备绑定设置,为 true;如果绑定设置仍在载入,为 false。

为 Steam 输入 API 配置获取设备绑定设置的重大与小型更改。 重大更改适用于操作集数量改变,或重写配置使旧配置不再可用的情况。 当用户的绑定与当前官方配置的重大改变不符时,Steam 将强制更新用户的配置至新配置。 在有重大更改的更新时,需要为各个控制器设置新配置。 小型更改适用于添加新的可选操作或更新配置中的本地化内容等小幅度的变更。 更新小型更改时,通常只需要更新一个配置并勾选“使用操作块”,即可将该操作块的更改应用至其他配置。

示例代码:
int nMajorRevision = -1; int nMinorRevision= -1; const int nCurrentMajorRevision = 1; const int nCurrentMinorRevision = 1; if ( GetDeviceBindingRevision( inputHandle, &nMajorRevision , &nMinorRevision ) ) { if ( nMinorRevision != nCurrentMinorRevision ) { // 轻微更改的版本已过期,但没关系 // 下次编辑配置时这个问题将得到修复 } if ( nMajorRevision != nCurrentMajorRevision ) { // 应只在 Steam 检测到时短暂出现 // 然后强制用户更新至最新的官方配置 } } else { // 还没有为此控制器载入配置 }

游戏内操作文件使用示例:
"In Game Actions" { "major_revision" "0" "minor_revision" "1" "actions" { ...

GetRemotePlaySessionID

uint32 GetRemotePlaySessionID( InputHandle_t inputHandle );
名称类型描述
inputHandleInputHandle_t要查询的控制器句柄。

返回:uint32 - Steam 远程畅玩会话 ID

获取和设备相关联的 Steam 远程畅玩会话 ID,若没有相关会话,则返回 0。 请参阅 isteamremoteplay.h,了解更多有关 Steam 远程畅玩会话的信息。

结构

以下是 ISteamInput 中的函数可能返回和/或与之交互的结构。

InputAnalogActionData_t

表示模拟操作的当前状态。

注意:
  • 确切的值、范围等取决于配置,但是(大致来讲)传统的模拟操作将提供在 -1.0 到 1.0 的范围内的标准浮点值,而鼠标类操作将提供增量更新,指明自上一帧开始移动的“像素”数。 这样做的结果是,鼠标类操作将提供更大的绝对 x 和 y 值,并且与上一个记录的输入位置相对;而传统的模拟操作则提供较小值,且与中央物理锚点相对。
  • 虽然由鼠标类操作提供的增量非常类似于操作系统所提供的像素增量,但 SC 增量是浮点数,而不是整数。 这意味着当将此数据映射到摄像头旋转时,会导致潜在量化的减少与精度的降低。
  • 在单轴模拟输入(例如模拟扳机键)的情况下,只有 x 轴会包含数据,而 y 轴始终为 0。

名称类型描述
eModeEControllerSourceMode来自该操作的数据的类型,与操作集的 VDF 定义中指定的数据类型相匹配。
xfloat此操作当前在水平轴上的状态。
yfloat此操作当前在垂直轴上的状态。
bActivebool当前是否可以将该操作绑定到有效操作集。 如果不可用,或不属于有效操作集,则为 false。

InputDigitalActionData_t

代表数字操作的当前状态。

名称类型描述
bStatebool此操作的当前状态;若此操作当前被按下,为 true,反之则为 false
bActivebool当前是否可以将该操作绑定到有效操作集。

InputMotionData_t

表示设备运动传感器的当前状态。

注意:如果是 rotQuatX/rotQuatY/rotQuatZ/rotQuatW,控制器上的惯性测量单元将创建一个基于融合陀螺仪和加速计的四元数。 此值是控制器的绝对方位,但会在偏航轴上漂移。

位置加速度报告为介于 INT16_MIN 和 INT16_MAX 之间的插值,其中范围被限制为 ±2G(1G = 9.80665 m/s2)。<!-- sup -->).

角速度报告为介于 INT16_MIN 和 INT16_MAX 之间的插值,其中范围被限制为每秒 ±2000 度。

名称类型描述
rotQuatXfloat融合了传感器的绝对旋转(在航向中漂移),x 轴
rotQuatYfloat融合了传感器的绝对旋转(在航向中漂移),y 轴
rotQuatZfloat融合了传感器的绝对旋转(在航向中漂移),z 轴
rotQuatWfloat融合了传感器的绝对旋转(在航向中漂移),w 轴
posAccelXfloat位置加速度,x 轴
posAccelYfloat位置加速度,y 轴
posAccelZfloat位置加速度,z 轴
rotVelXfloat角速度,x 轴
rotVelYfloat角速度,y 轴
rotVelZfloat角速度,z 轴

枚举

以下为经过定义来与 ISteamInput 一起使用的枚举。

EInputActionOrigin

玩家在 Steam 输入配置器中为操作绑定的输入。 这些值的主要目的是指示对于某个给定操作,应在屏幕上显示什么按键标志,例如“按 [A] 跳跃”。

名称描述
k_EInputActionOrigin_None0
k_EInputActionOrigin_A1(Valve Steam 控制器)数字正面按键 A
k_EInputActionOrigin_B2(Valve Steam 控制器)数字正面按键 B
k_EInputActionOrigin_X3(Valve Steam 控制器)数字正面按键 X
k_EInputActionOrigin_Y4(Valve Steam 控制器)数字正面按键 Y
k_EInputActionOrigin_LeftBumper5(Valve Steam 控制器)数字左缓冲键(即 LB 键)
k_EInputActionOrigin_RightBumper6(Valve Steam 控制器)数字右缓冲键(即 RB 键)
k_EInputActionOrigin_LeftGrip7(Valve Steam 控制器)数字左握持键
k_EInputActionOrigin_RightGrip8(Valve Steam 控制器)数字右握持键
k_EInputActionOrigin_Start9(Valve Steam 控制器)数字开始键
k_EInputActionOrigin_Back10(Valve Steam 控制器)数字返回键
k_EInputActionOrigin_LeftPad_Touch11(Valve Steam 控制器)左触控板,单指简单触碰
k_EInputActionOrigin_LeftPad_Swipe12(Valve Steam 控制器)左触控板,任何轴触碰输入
k_EInputActionOrigin_LeftPad_Click13(Valve Steam 控制器)左触控板,数字点击(整体)
k_EInputActionOrigin_LeftPad_DPadNorth14(Valve Steam 控制器)左触控板,数字点击(上象限)
k_EInputActionOrigin_LeftPad_DPadSouth15(Valve Steam 控制器)左触控板,数字点击(下象限)
k_EInputActionOrigin_LeftPad_DPadWest16(Valve Steam 控制器)左触控板,数字点击(左象限)
k_EInputActionOrigin_LeftPad_DPadEast17(Valve Steam 控制器)左触控板,数字点击(右象限)
k_EInputActionOrigin_RightPad_Touch18(Valve Steam 控制器)右触控板,单指简单触碰
k_EInputActionOrigin_RightPad_Swipe19(Valve Steam 控制器)右触控板,任何轴触碰输入
k_EInputActionOrigin_RightPad_Click20(Valve Steam 控制器)右触控板,数字点击(整体)
k_EInputActionOrigin_RightPad_DPadNorth21(Valve Steam 控制器)右触控板,数字点击(上象限)
k_EInputActionOrigin_RightPad_DPadSouth22(Valve Steam 控制器)右触控板,数字点击(下象限)
k_EInputActionOrigin_RightPad_DPadWest23(Valve Steam 控制器)右触控板,数字点击(左象限)
k_EInputActionOrigin_RightPad_DPadEast24(Valve Steam 控制器)右触控板,数字点击(右象限)
k_EInputActionOrigin_LeftTrigger_Pull25(Valve Steam 控制器)左模拟扳机键,任何力度扣动(模拟值)
k_EInputActionOrigin_LeftTrigger_Click26(Valve Steam 控制器)左模拟扳机键,扣动到底(数字值)
k_EInputActionOrigin_RightTrigger_Pull27(Valve Steam 控制器)右模拟扳机键,任何力度扣动(模拟值)
k_EInputActionOrigin_RightTrigger_Click28(Valve Steam 控制器)右模拟扳机键,扣动到底(数字值)
k_EInputActionOrigin_LeftStick_Move29(Valve Steam 控制器)左摇杆,任何轴运动(模拟值)
k_EInputActionOrigin_LeftStick_Click30(Valve Steam 控制器)左摇杆,点击(数字值)
k_EInputActionOrigin_LeftStick_DPadNorth31(Valve Steam 控制器)左摇杆,数字运动(上象限)
k_EInputActionOrigin_LeftStick_DPadSouth32(Valve Steam 控制器)左摇杆,数字运动(下象限)
k_EInputActionOrigin_LeftStick_DPadWest33(Valve Steam 控制器)左摇杆,数字运动(左象限)
k_EInputActionOrigin_LeftStick_DPadEast34(Valve Steam 控制器)左摇杆,数字运动(右象限)
k_EInputActionOrigin_Gyro_Move35(Valve Steam 控制器)陀螺仪,任何轴模拟运动
k_EInputActionOrigin_Gyro_Pitch36(Valve Steam 控制器)陀螺仪,倾斜轴模拟运动(向上指向天花板,向下指向地板)
k_EInputActionOrigin_Gyro_Yaw37(Valve Steam 控制器)陀螺仪,偏航轴模拟运动(向左转面对一面墙,向右转面对另一面墙)
k_EInputActionOrigin_Gyro_Roll38(Valve Steam 控制器)陀螺仪,滚转轴模拟运动(斜向左朝向一边肩膀,斜向右朝向另一边肩膀)
k_EInputActionOrigin_SteamController_Reserved039保留供将来使用
k_EInputActionOrigin_SteamController_Reserved140保留供将来使用
k_EInputActionOrigin_SteamController_Reserved241保留供将来使用
k_EInputActionOrigin_SteamController_Reserved342保留供将来使用
k_EInputActionOrigin_SteamController_Reserved443保留供将来使用
k_EInputActionOrigin_SteamController_Reserved544保留供将来使用
k_EInputActionOrigin_SteamController_Reserved645保留供将来使用
k_EInputActionOrigin_SteamController_Reserved746保留供将来使用
k_EInputActionOrigin_SteamController_Reserved847保留供将来使用
k_EInputActionOrigin_SteamController_Reserved948保留供将来使用
k_EInputActionOrigin_SteamController_Reserved1049保留供将来使用
k_EInputActionOrigin_PS4_X50(Sony Dualshock 4)数字正面按键 X
k_EInputActionOrigin_PS4_Circle51(Sony Dualshock 4)数字正面按键 ○
k_EInputActionOrigin_PS4_Triangle52(Sony Dualshock 4)数字正面按键 △
k_EInputActionOrigin_PS4_Square53(Sony Dualshock 4)数字正面按键 □
k_EInputActionOrigin_PS4_LeftBumper54(Sony Dualshock 4)数字左缓冲键(即 L1 键)
k_EInputActionOrigin_PS4_RightBumper55(Sony Dualshock 4)数字右缓冲键(即 R1 键)
k_EInputActionOrigin_PS4_Options56(Sony Dualshock 4)数字 OPTIONS 键(即开始键)
k_EInputActionOrigin_PS4_Share57(Sony Dualshock 4)数字 SHARE 键(即返回键)
k_EInputActionOrigin_PS4_LeftPad_Touch58(Sony Dualshock 4)左半部触摸板,单指简单触碰
k_EInputActionOrigin_PS4_LeftPad_Swipe59(Sony Dualshock 4)左半部触摸板,任何轴触碰输入
k_EInputActionOrigin_PS4_LeftPad_Click60(Sony Dualshock 4)左半部触摸板,数字点击(整体)
k_EInputActionOrigin_PS4_LeftPad_DPadNorth61(Sony Dualshock 4)左半部触摸板,数字点击(上象限)
k_EInputActionOrigin_PS4_LeftPad_DPadSouth62(Sony Dualshock 4)左半部触摸板,数字点击(下象限)
k_EInputActionOrigin_PS4_LeftPad_DPadWest63(Sony Dualshock 4)左半部触摸板,数字点击(左象限)
k_EInputActionOrigin_PS4_LeftPad_DPadEast64(Sony Dualshock 4)左半部触摸板,数字点击(右象限)
k_EInputActionOrigin_PS4_RightPad_Touch65(Sony Dualshock 4)右半部触摸板,单指简单触碰
k_EInputActionOrigin_PS4_RightPad_Swipe66(Sony Dualshock 4)右半部触摸板,任何轴触碰输入
k_EInputActionOrigin_PS4_RightPad_Click67(Sony Dualshock 4)右半部触摸板,数字点击(整体)
k_EInputActionOrigin_PS4_RightPad_DPadNorth68(Sony Dualshock 4)右半部触摸板,数字点击(上象限)
k_EInputActionOrigin_PS4_RightPad_DPadSouth69(Sony Dualshock 4)右半部触摸板,数字点击(下象限)
k_EInputActionOrigin_PS4_RightPad_DPadWest70(Sony Dualshock 4)右半部触摸板,数字点击(左象限)
k_EInputActionOrigin_PS4_RightPad_DPadEast71(Sony Dualshock 4)右半部触摸板,数字点击(右象限)
k_EInputActionOrigin_PS4_CenterPad_Touch72(Sony Dualshock 4)统一触摸板,单指简单触碰
k_EInputActionOrigin_PS4_CenterPad_Swipe73(Sony Dualshock 4)统一触摸板,任何轴触碰输入
k_EInputActionOrigin_PS4_CenterPad_Click74(Sony Dualshock 4)统一触摸板,数字点击(整体)
k_EInputActionOrigin_PS4_CenterPad_DPadNorth75(Sony Dualshock 4)统一触摸板,数字点击(上象限)
k_EInputActionOrigin_PS4_CenterPad_DPadSouth76(Sony Dualshock 4)统一触摸板,数字点击(下象限)
k_EInputActionOrigin_PS4_CenterPad_DPadWest77(Sony Dualshock 4)统一触摸板,数字点击(左象限)
k_EInputActionOrigin_PS4_CenterPad_DPadEast78(Sony Dualshock 4)统一触摸板,数字点击(右象限)
k_EInputActionOrigin_PS4_LeftTrigger_Pull79(Sony Dualshock 4)左模拟扳机键(L2 键),任何力度扣动(模拟值)
k_EInputActionOrigin_PS4_LeftTrigger_Click80(Sony Dualshock 4)左模拟扳机键(L2 键),扣动到底(数字值)
k_EInputActionOrigin_PS4_RightTrigger_Pull81(Sony Dualshock 4)右模拟扳机键(R2 键),任何力度扣动(模拟值)
k_EInputActionOrigin_PS4_RightTrigger_Click82(Sony Dualshock 4)右模拟扳机键(R2 键),扣动到底(数字值)
k_EInputActionOrigin_PS4_LeftStick_Move83(Sony Dualshock 4)左操作杆,任何轴运动(模拟值)
k_EInputActionOrigin_PS4_LeftStick_Click84(Sony Dualshock 4)左操作杆,点击(数字值)
k_EInputActionOrigin_PS4_LeftStick_DPadNorth85(Sony Dualshock 4)左操作杆,数字运动(上象限)
k_EInputActionOrigin_PS4_LeftStick_DPadSouth86(Sony Dualshock 4)左操作杆,数字运动(下象限)
k_EInputActionOrigin_PS4_LeftStick_DPadWest87(Sony Dualshock 4)左操作杆,数字运动(左象限)
k_EInputActionOrigin_PS4_LeftStick_DPadEast88(Sony Dualshock 4)左操作杆,数字运动(右象限)
k_EInputActionOrigin_PS4_RightStick_Move89(Sony Dualshock 4)右操作杆,任何轴运动(模拟值)
k_EInputActionOrigin_PS4_RightStick_Click90(Sony Dualshock 4)右操作杆,点击(数字值)
k_EInputActionOrigin_PS4_RightStick_DPadNorth91(Sony Dualshock 4)右操作杆,数字运动(上象限)
k_EInputActionOrigin_PS4_RightStick_DPadSouth92(Sony Dualshock 4)右操作杆,数字运动(下象限)
k_EInputActionOrigin_PS4_RightStick_DPadWest93(Sony Dualshock 4)右操作杆,数字运动(左象限)
k_EInputActionOrigin_PS4_RightStick_DPadEast94(Sony Dualshock 4)右操作杆,数字运动(右象限)
k_EInputActionOrigin_PS4_DPad_North95(Sony Dualshock 4)方向键,按下(上象限)
k_EInputActionOrigin_PS4_DPad_South96(Sony Dualshock 4)方向键,按下(下象限)
k_EInputActionOrigin_PS4_DPad_West97(Sony Dualshock 4)方向键,按下(左象限)
k_EInputActionOrigin_PS4_DPad_East98(Sony Dualshock 4)方向键,按下(右象限)
k_EInputActionOrigin_PS4_Gyro_Move99(Sony Dualshock 4)陀螺仪,任何轴模拟运动
k_EInputActionOrigin_PS4_Gyro_Pitch100(Sony Dualshock 4)陀螺仪,倾斜轴模拟运动(向上指向天花板,向下指向地板)
k_EInputActionOrigin_PS4_Gyro_Yaw101(Sony Dualshock 4)陀螺仪,偏航轴模拟运动(向左转面对一面墙,向右转面对另一面墙)
k_EInputActionOrigin_PS4_Gyro_Roll102(Sony Dualshock 4)陀螺仪,滚转轴模拟运动(斜向左朝向一边肩膀,斜向右朝向另一边肩膀)
k_EInputActionOrigin_PS4_Reserved0103保留供将来使用
k_EInputActionOrigin_PS4_Reserved1104保留供将来使用
k_EInputActionOrigin_PS4_Reserved2105保留供将来使用
k_EInputActionOrigin_PS4_Reserved3106保留供将来使用
k_EInputActionOrigin_PS4_Reserved4107保留供将来使用
k_EInputActionOrigin_PS4_Reserved5108保留供将来使用
k_EInputActionOrigin_PS4_Reserved6109保留供将来使用
k_EInputActionOrigin_PS4_Reserved7110保留供将来使用
k_EInputActionOrigin_PS4_Reserved8111保留供将来使用
k_EInputActionOrigin_PS4_Reserved9112保留供将来使用
k_EInputActionOrigin_PS4_Reserved10113保留供将来使用
k_EInputActionOrigin_XBoxOne_A114(XB1)数字正面按键 A
k_EInputActionOrigin_XBoxOne_B115(XB1)数字正面按键 B
k_EInputActionOrigin_XBoxOne_X116(XB1)数字正面按键 X
k_EInputActionOrigin_XBoxOne_Y117(XB1)数字正面按键 Y
k_EInputActionOrigin_XBoxOne_LeftBumper118(XB1)数字左缓冲键(即 LB 键)
k_EInputActionOrigin_XBoxOne_RightBumper119(XB1)数字右缓冲键(即 RB 键)
k_EInputActionOrigin_XBoxOne_Menu120(XB1)数字菜单键(即开始键)
k_EInputActionOrigin_XBoxOne_View121(XB1)数字“视图”按钮(即返回键)
k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull122(XB1)左模拟扳机键,任何力度扣动(模拟值)
k_EInputActionOrigin_XBoxOne_LeftTrigger_Click123(XB1)左模拟扳机键,扣动到底(数字值)
k_EInputActionOrigin_XBoxOne_RightTrigger_Pull124(XB1)右模拟扳机键,任何力度扣动(模拟值)
k_EInputActionOrigin_XBoxOne_RightTrigger_Click125(XB1)右模拟扳机键,扣动到底(数字值)
k_EInputActionOrigin_XBoxOne_LeftStick_Move126(XB1)左摇杆,任何轴运动(模拟值)
k_EInputActionOrigin_XBoxOne_LeftStick_Click127(XB1)左摇杆,点击(数字值)
k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth128(XB1)左摇杆,数字运动(上象限)
k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth129(XB1)左摇杆,数字运动(下象限)
k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest130(XB1)左摇杆,数字运动(左象限)
k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast131(XB1)左摇杆,数字运动(右象限)
k_EInputActionOrigin_XBoxOne_RightStick_Move132(XB1)右摇杆,任何轴运动(模拟值)
k_EInputActionOrigin_XBoxOne_RightStick_Click133(XB1)右摇杆,点击(数字值)
k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth134(XB1)右摇杆,数字运动(上象限)
k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth135(XB1)右摇杆,数字运动(下象限)
k_EInputActionOrigin_XBoxOne_RightStick_DPadWest136(XB1)右摇杆,数字运动(左象限)
k_EInputActionOrigin_XBoxOne_RightStick_DPadEast137(XB1)右摇杆,数字运动(右象限)
k_EInputActionOrigin_XBoxOne_DPad_North138(XB1)方向键,按下(上象限)
k_EInputActionOrigin_XBoxOne_DPad_South139(XB1)方向键,按下(下象限)
k_EInputActionOrigin_XBoxOne_DPad_West140(XB1)方向键,按下(左象限)
k_EInputActionOrigin_XBoxOne_DPad_East141(XB1)方向键,按下(右象限)
k_EInputActionOrigin_XBoxOne_Reserved0142保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved1143保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved2144保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved3145保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved4146保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved5147保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved6148保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved7149保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved8150保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved9151保留供将来使用
k_EInputActionOrigin_XBoxOne_Reserved10152保留供将来使用
k_EInputActionOrigin_XBox360_A153(X360)数字正面按键 A
k_EInputActionOrigin_XBox360_B154(X360)数字正面按键 B
k_EInputActionOrigin_XBox360_X155(X360)数字正面按键 X
k_EInputActionOrigin_XBox360_Y156(X360)数字正面按键 Y
k_EInputActionOrigin_XBox360_LeftBumper157(X360)数字左缓冲键(即 LB 键)
k_EInputActionOrigin_XBox360_RightBumper158(X360)数字右缓冲键(即 RB 键)
k_EInputActionOrigin_XBox360_Start159(X360)数字开始键
k_EInputActionOrigin_XBox360_Back160(X360)数字返回键
k_EInputActionOrigin_XBox360_LeftTrigger_Pull161(X360)左模拟扳机键,任何力度扣动(模拟值)
k_EInputActionOrigin_XBox360_LeftTrigger_Click162(X360)左模拟扳机键,扣动到底(数字值)
k_EInputActionOrigin_XBox360_RightTrigger_Pull163(X360)右模拟扳机键,任何力度扣动(模拟值)
k_EInputActionOrigin_XBox360_RightTrigger_Click164(X360)右模拟扳机键,任何方式扣动(数字值)
k_EInputActionOrigin_XBox360_LeftStick_Move165(X360)左摇杆,任何轴运动(模拟值)
k_EInputActionOrigin_XBox360_LeftStick_Click166(X360)左摇杆,点击(数字值)
k_EInputActionOrigin_XBox360_LeftStick_DPadNorth167(X360)左摇杆,数字运动(上象限)
k_EInputActionOrigin_XBox360_LeftStick_DPadSouth168(X360)左摇杆,数字运动(下象限)
k_EInputActionOrigin_XBox360_LeftStick_DPadWest169(X360)左摇杆,数字运动(左象限)
k_EInputActionOrigin_XBox360_LeftStick_DPadEast170(X360)左摇杆,数字运动(右象限)
k_EInputActionOrigin_XBox360_RightStick_Move171(X360)右摇杆,任何轴运动(模拟值)
k_EInputActionOrigin_XBox360_RightStick_Click172(X360)右摇杆,点击(数字值)
k_EInputActionOrigin_XBox360_RightStick_DPadNorth173(X360)右摇杆,数字运动(上象限)
k_EInputActionOrigin_XBox360_RightStick_DPadSouth174(X360)右摇杆,数字运动(下象限)
k_EInputActionOrigin_XBox360_RightStick_DPadWest175(X360)右摇杆,数字运动(左象限)
k_EInputActionOrigin_XBox360_RightStick_DPadEast176(X360)右摇杆,数字运动(右象限)
k_EInputActionOrigin_XBox360_DPad_North177(X360)方向键,按下(上象限)
k_EInputActionOrigin_XBox360_DPad_South178(X360)方向键,按下(下象限)
k_EInputActionOrigin_XBox360_DPad_West179(X360)方向键,按下(左象限)
k_EInputActionOrigin_XBox360_DPad_East180(X360)方向键,按下(右象限)
k_EInputActionOrigin_XBox360_Reserved0181保留供将来使用
k_EInputActionOrigin_XBox360_Reserved1182保留供将来使用
k_EInputActionOrigin_XBox360_Reserved2183保留供将来使用
k_EInputActionOrigin_XBox360_Reserved3184保留供将来使用
k_EInputActionOrigin_XBox360_Reserved4185保留供将来使用
k_EInputActionOrigin_XBox360_Reserved5186保留供将来使用
k_EInputActionOrigin_XBox360_Reserved6187保留供将来使用
k_EInputActionOrigin_XBox360_Reserved7188保留供将来使用
k_EInputActionOrigin_XBox360_Reserved8189保留供将来使用
k_EInputActionOrigin_XBox360_Reserved9190保留供将来使用
k_EInputActionOrigin_XBox360_Reserved10191保留供将来使用
k_EInputActionOrigin_Switch_A192(Nintendo Switch Pro)数字正面按键 A
k_EInputActionOrigin_Switch_B193(Nintendo Switch Pro)数字正面按键 B
k_EInputActionOrigin_Switch_X194(Nintendo Switch Pro)数字正面按键 X
k_EInputActionOrigin_Switch_Y195(Nintendo Switch Pro)数字正面按键 Y
k_EInputActionOrigin_Switch_LeftBumper196(Nintendo Switch Pro)数字左缓冲键( L 键)
k_EInputActionOrigin_Switch_RightBumper197(Nintendo Switch Pro)数字右缓冲键(R 键)
k_EInputActionOrigin_Switch_Plus198(Nintendo Switch Pro)“+”键
k_EInputActionOrigin_Switch_Minus199(Nintendo Switch Pro)“-”键
k_EInputActionOrigin_Switch_Capture200(Nintendo Switch Pro)数字截图键
k_EInputActionOrigin_Switch_LeftTrigger_Pull201(Nintendo Switch Pro) ZL 键,点击
k_EInputActionOrigin_Switch_LeftTrigger_Click202(Nintendo Switch Pro) ZL 键,点击(与先前值相同)
k_EInputActionOrigin_Switch_RightTrigger_Pull203(Nintendo Switch Pro) ZR 键,点击
k_EInputActionOrigin_Switch_RightTrigger_Click204(Nintendo Switch Pro) ZR 键,点击(与先前值相同)
k_EInputActionOrigin_Switch_LeftStick_Move205(Nintendo Switch Pro)L 摇杆,任何轴运动(模拟值)
k_EInputActionOrigin_Switch_LeftStick_Click206(Nintendo Switch Pro)L 摇杆,点击(模拟值)
k_EInputActionOrigin_Switch_LeftStick_DPadNorth207(Nintendo Switch Pro)L 摇杆,数字运动(上象限)
k_EInputActionOrigin_Switch_LeftStick_DPadSouth208(Nintendo Switch Pro)左摇杆,数字运动(下象限)
k_EInputActionOrigin_Switch_LeftStick_DPadWest209(Nintendo Switch Pro)左摇杆,数字运动(左象限)
k_EInputActionOrigin_Switch_LeftStick_DPadEast210(Nintendo Switch Pro)左摇杆,数字运动(右象限)
k_EInputActionOrigin_Switch_RightStick_Move211(Nintendo Switch Pro)右摇杆,任何轴运动(模拟值)
k_EInputActionOrigin_Switch_RightStick_Click212(Nintendo Switch Pro)R 摇杆,点击(模拟值)
k_EInputActionOrigin_Switch_RightStick_DPadNorth213(Nintendo Switch Pro)右摇杆,数字运动(上象限)
k_EInputActionOrigin_Switch_RightStick_DPadSouth214(Nintendo Switch Pro)右摇杆,数字运动(下象限)
k_EInputActionOrigin_Switch_RightStick_DPadWest215(Nintendo Switch Pro)右摇杆,数字运动(左象限)
k_EInputActionOrigin_Switch_RightStick_DPadEast216(Nintendo Switch Pro)右摇杆,数字运动(右象限)
k_EInputActionOrigin_Switch_DPad_North217(Nintendo Switch Pro)十字键,按下(上象限)
k_EInputActionOrigin_Switch_DPad_South218(Nintendo Switch Pro)十字键,按下(下象限)
k_EInputActionOrigin_Switch_DPad_West219(Nintendo Switch Pro)十字键,按下(左象限)
k_EInputActionOrigin_Switch_DPad_East220(Nintendo Switch Pro)十字键,按下(右象限)
k_EInputActionOrigin_SwitchProGyro_Move221(Nintendo Switch Pro)陀螺仪,任何轴模拟运动
k_EInputActionOrigin_SwitchProGyro_Pitch222(Nintendo Switch Pro)陀螺仪,倾斜轴模拟运动(向上指向天花板,向下指向地板)
k_EInputActionOrigin_SwitchProGyro_Yaw223(Nintendo Switch Pro)陀螺仪,偏航轴模拟运动(向左转面对一面墙,向右转面对另一面墙)
k_EInputActionOrigin_SwitchProGyro_Roll224(Nintendo Switch Pro)陀螺仪,滚转轴模拟运动(斜向左朝向一边肩膀,斜向右朝向另一边肩膀)
k_EInputActionOrigin_Switch_Reserved0225保留供将来使用
k_EInputActionOrigin_Switch_Reserved1226保留供将来使用
k_EInputActionOrigin_Switch_Reserved2227保留供将来使用
k_EInputActionOrigin_Switch_Reserved3228保留供将来使用
k_EInputActionOrigin_Switch_Reserved4229保留供将来使用
k_EInputActionOrigin_Switch_Reserved5230保留供将来使用
k_EInputActionOrigin_Switch_Reserved6231保留供将来使用
k_EInputActionOrigin_Switch_Reserved7232保留供将来使用
k_EInputActionOrigin_Switch_Reserved8233保留供将来使用
k_EInputActionOrigin_Switch_Reserved9234保留供将来使用
k_EInputActionOrigin_Switch_Reserved10235保留供将来使用
k_EInputActionOrigin_Count258此枚举中的值的数量,有助于循环访问。
k_EInputActionOrigin_MaximumPossibleValue32767此枚举中的值的数量,有助于循环访问。

EControllerSource

控制器的一个区域,可以视为一个更大的抽象模块单元,可对其应用各种模式并输出有用数据。 例如,摇杆可以被当作单个模拟输入,或者被分成四个离散的数字,组成一个虚拟十字键。 同样地,ABXY 正面按键自成一组,可作为四个独立按键,或者一个虚拟十字键的组件,等等。

名称描述
k_EInputSource_None0无控制器源。
k_EInputSource_LeftTrackpad1左触控板,或者是中央触控板的左半部分。
k_EInputSource_RightTrackpad2右触控板,或者是中央触控板的右半部分。
k_EInputSource_Joystick3摇杆,如存在多个摇杆,则为左摇杆。
k_EInputSource_ABXY4四个主要正面按键。
k_EInputSource_Switch5控制器上不属于任何其他指定源的开关/按键。 这包括缓冲键、开始/选择键及握持键。 此特殊失配情况不适合更大的范式,因此有其自己的数字按键来源,也有处理其的相应模式。
k_EInputSource_LeftTrigger6左模拟扳机键。
k_EInputSource_RightTrigger7右模拟扳机键。
k_EInputSource_Gyro8内部陀螺仪。
k_EInputSource_CenterTrackpad9中央触控板 (仅限 DS4)。
k_EInputSource_RightJoystick10右摇杆。 如果只有一个摇杆,则不使用此源。
k_EInputSource_DPad11十字键。
k_EInputSource_Key12键盘键(用于带扫描码的键盘)。
k_EInputSource_Mouse13传统鼠标
k_EInputSource_Count14枚举的数量,有助于循环访问。

EControllerSourceMode

配置器在控制器源上施加的虚拟输入模式。 例如,配置器可以让模拟摇杆像带有四个数字输入的十字键那样使用;EControllerSource 将为 k_EInputSource_Joystick,而 EControllerSourceMode 为 k_EInputSourceMode_Dpad。 此模式还会更改任何关联操作所接收的输入数据。

名称描述
k_EInputSourceMode_None0无输入模式。
k_EInputSourceMode_Dpad1十字键:四个数字方向键以十字形组合在一起,在任何时候,每个轴上只能按下一个键。
k_EInputSourceMode_Buttons2
k_EInputSourceMode_FourButtons3四个数字正面按键,可同时按下其中的任意按键。
k_EInputSourceMode_AbsoluteMouse4
k_EInputSourceMode_RelativeMouse5
k_EInputSourceMode_JoystickMove6
k_EInputSourceMode_JoystickMouse7
k_EInputSourceMode_JoystickCamera8
k_EInputSourceMode_ScrollWheel9
k_EInputSourceMode_Trigger10
k_EInputSourceMode_TouchMenu11
k_EInputSourceMode_MouseJoystick12
k_EInputSourceMode_MouseRegion13
k_EInputSourceMode_RadialMenu14
k_EInputSourceMode_SingleButton15
k_EInputSourceMode_Switches16

ESteamControllerLEDFlag

控制 Steam 控制器设备的 LED 颜色(如果设备有 LED 的话)。

注意:
Valve Steam 控制器有一个 LED 灯,但只有亮度会受到影响(颜色始终为白色)。
DUALSHOCK 4 控制器的 LED 就是它的灯条,其颜色和亮度均可配置。

名称描述
k_ESteamInputType_Unknown0用于所有未识别的设备
k_ESteamInputType_SteamController1将颜色恢复为默认(游戏外)设置。

ESteamInputType

表示给定硬件的设备型号。

名称基类型描述
k_ESteamInputType_Unknown0用于所有未识别的设备
k_ESteamInputType_SteamController1Valve Steam 控制器
k_ESteamInputType_XBox360Controller2Microsoft XBox 360 控制器
k_ESteamInputType_XBoxOneController3Microsoft Xbox One 控制器
k_ESteamInputType_GenericXInput4任何通用的第三方 XInput 设备
k_ESteamInputType_PS4Controller5索尼 PlayStation 4 控制器
k_ESteamInputType_AppleMFiController6未使用
k_ESteamInputType_AndroidController7未使用
k_ESteamInputType_SwitchJoyConPair8未使用
k_ESteamInputType_SwitchJoyConSingle9未使用
k_ESteamInputType_SwitchProController10Nintendo Switch Pro 控制器
k_ESteamInputType_MobileTouch11Steam 流式应用移动触控控制器
k_ESteamInputType_PS3Controller12索尼 Playstation 3 控制器或兼容 PS3/PS4 的格斗摇杆
k_ESteamInputType_Count13当前返回的值的数量
k_ESteamInputType_MaximumPossibleValue255可能返回的最大值

ESteamControllerPad

Steam 控制器触控板的一个区域

注意:
在 Valve Steam 控制器上,这些值对应于左和右触控板。
在 DUALSHOCK 4 控制器上,这些值对应于中央单触控板的左半部和右半部。

名称描述
k_ESteamControllerPad_Left0Steam 控制器设备上的左触控板区域。 兼容型号:VSC、DS4
k_ESteamControllerPad_Right1Steam 控制器设备上的右触控板区域。 兼容型号:VSC、DS4

Typedefs

以下为经过定义来与 ISteamInput 一起使用的 typedef。

名称基础类型描述
InputActionSetHandle_tuint64这些句柄用于引用特定的游戏内操作或操作集。
为保证性能,所有操作句柄都应在初始化期间查询。
InputAnalogActionHandle_tuint64模拟操作的句柄。 可以通过 GetAnalogActionHandle 获得。
InputDigitalActionHandle_tuint64数字操作的句柄。 可以通过 GetDigitalActionHandle 获得。
InputHandle_tuint64即使断开后再重新连接,此句柄也能继续识别某个控制器。

常量

以下是经过定义来与 ISteamInput 一起使用的常量。

名称类型描述
STEAMINPUT_INTERFACE_VERSIONconst char *"SteamInput001"
STEAM_INPUT_HANDLE_ALL_CONTROLLERSintUINT64_MAX在向特定控制器句柄发送选项时,您可以使用此特殊值替代句柄来将选项发送到所有控制器。
STEAM_INPUT_MAX_ANALOG_ACTIONSint16各控制器上可执行的模拟操作的最大数量。
STEAM_INPUT_MAX_ANALOG_ACTION_DATAfloat1.0f任何给定轴上的模拟操作能够报告的最大值。
STEAM_INPUT_MAX_COUNTint16能与 Steam 输入配置器同时使用的控制器的最大数量。
STEAM_INPUT_MAX_DIGITAL_ACTIONSint128各控制器上可执行的数字操作的最大数量。
STEAM_INPUT_MAX_ORIGINSint8能附加于单个操作的输入源的最大数量。
STEAM_INPUT_MIN_ANALOG_ACTION_DATAfloat-1.0f任何给定轴上的模拟操作能够报告的最小值。