Steam 输入 API 是一个基于操作的灵活 API,支持所有主要控制器类型——Xbox、PlayStation、Nintendo Switch Pro 和 Steam 控制器。
参见
Steam 输入 文档,了解更多信息。
成员函数
ISteamInpu 的成员函数通过全局访问器函数
SteamInput() 调用。
ActivateActionSet
void ActivateActionSet( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle );
重新配置控制器以使用指定的操作集(如:“菜单”、“行走”或“驾驶”)。
此函数消耗低,并能多次安全调用。 通常在您的状态循环中反复调用较为容易,无需试图将其放入您的所有状态转换中。
示例: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;
}
}
示例: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 );
重新配置控制器以使用指定的操作集层。
参见
操作集层一文,了解详情以及深度实用示例。
示例:SteamInput()->ActivateActionSetLayer( inputHandle1, myActionSetLayer );
DeactivateActionSetLayer
void DeactivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle );
重新配置控制器以停止使用指定的操作集层。
示例:SteamInput()->DeactivateActionSetLayer( inputHandle1, myActionSetLayer );
DeactivateAllActionSetLayers
void DeactivateAllActionSetLayers( InputHandle_t inputHandle );
重新配置控制器以停止使用所有操作集层。
示例:SteamInput()->DeactivateAllActionSetLayers( inputHandle1 );
GetActiveActionSetLayers
int GetActiveActionSetLayers( InputHandle_t inputHandle, InputActionSetHandle_t *handlesOut );
把一个指定控制器句柄的所有当前激活操作集层填入一个数组。
示例:InputActionSetHandle_t hActiveLayerHandles [STEAM_INPUT_MAX_ACTIVE_LAYERS];
SteamInput()->GetActiveActionSetLayers( controllerHandle, hActiveLayerHandles );
GetActionSetHandle
InputActionSetHandle_t GetActionSetHandle( const char *pszActionSetName );
| 名称 | 类型 | 描述 |
| pszActionSetName | const char * | 在游戏的 VDF 文件中定义的操作集的字符串标识符。 |
查找操作集句柄。 最好在启动时调用一次,并存储句柄供所有未来 API 调用使用。
返回: InputActionSetHandle_t指定操作集的句柄。
示例:InputActionSetHandle_t fightingSetHandle = SteamInput()->GetActionSetHandle( "fighting" );
GetAnalogActionData
InputAnalogActionData_t GetAnalogActionData( InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle );
返回所提供的模拟游戏操作的当前状态。
返回: InputAnalogActionData_t指定模拟操作的当前状态。
示例:InputAnalogActionData_t data = SteamInput()->GetAnalogActionData( controller1Handle, moveHandle );
GetAnalogActionHandle
InputAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName );
| 名称 | 类型 | 描述 |
| pszActionName | const 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 );
用 EInputActionOrigin 句柄填充 originsOut,获取模拟操作集中某一模拟操作的来源。 用于显示该操作的相应屏幕提示。
返回:int
originsOut 中提供的源数量。
示例:EInputActionOrigin *origins = new EInputActionOrigin[ STEAM_INPUT_MAX_ORIGINS ];
SteamInput()->GetAnalogActionOrigins( controller1Handle, walkingSetHandle, moveHandle, origins );
GetConnectedControllers
int GetConnectedControllers( InputHandle_t *handlesOut );
通过用控制器句柄来填充 handlesOut,枚举当前连接的控制器。
返回:int
写入
handlesOut 的句柄数量。
示例:InputHandle_t *inputHandles = new InputHandle_t[ STEAM_INPUT_MAX_COUNT ];
SteamInput()->GetConnectedControllers( inputHandles );
GetControllerForGamepadIndex
InputHandle_t GetControllerForGamepadIndex( int nIndex );
| 名称 | 类型 | 描述 |
| nIndex | int | 您要为其获得控制器句柄的模拟手柄的索引。 |
返回指定模拟游戏手柄的相关控制器句柄。 可以与 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 );
获取指定控制器当前激活的操作集。
返回: InputActionSetHandle_t为指定控制器激活的操作集的句柄。
示例:InputActionSetHandle_t controller1Set = SteamInput()->GetCurrentActionSet(controller1Handle);
GetDigitalActionData
InputDigitalActionData_t GetDigitalActionData( InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle );
返回所提供的数字游戏操作的当前状态。
返回: InputDigitalActionData_t指定数字操作的当前状态。
GetDigitalActionHandle
InputDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName );
| 名称 | 类型 | 描述 |
| pszActionName | const 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 );
通过用
EInputActionOrigin 句柄填充
originsOut,获取一个操作集中某一数字操作的源。 用于显示该操作的相应屏幕提示。
返回:int
originsOut 中提供的源数量。
示例:EInputActionOrigin *origins = new EInputActionOrigin[ STEAM_INPUT_MAX_ORIGINS ];
SteamInput()->GetDigitalActionOrigins( controller1Handle, fightingSetHandle, punchHandle, origins );
GetGamepadIndexForController
int GetGamepadIndexForController( InputHandle_t ulControllerHandle );
如果模拟一个手柄,则返回指定控制器的关联手柄索引。
返回:int
示例:int gamepadIndex = SteamInput()->GetGamepadIndexForController( controller1Handle );
GetGlyphForActionOrigin
const char * GetGlyphForActionOrigin( EInputActionOrigin eOrigin );
获取某个特定源的屏幕字形的本地路径。
返回: 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 );
返回指定控制器的输入样式(设备型号)。 这能告诉您是否给定控制器为 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 );
返回指定控制器的原始运动数据。
返回: InputMotionData_t示例:InputMotionData_t motionData = SteamInput()->GetControllerMotionData( inputHandle );
GetStringForActionOrigin
const char * GetStringForActionOrigin( EInputActionOrigin eOrigin );
(从 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 );
| 名称 | 类型 | 描述 |
| inputHandle | InputHandle_t | 要影响的控制器句柄。 |
| pParam | ScePadTriggerEffectParam | 于 isteamdualsense.h 中定义的扳机键参数。 |
为 DualSense 控制器设置扳机键效果。
示例:ScePadTriggerEffectParam param;
memset( ¶m, 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, ¶m );
SetLEDColor
void SetLEDColor( InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags );
在支持的控制器上设置控制器的 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 );
已弃用。
返回: bool
始终返回
true。
ShowBindingPanel
bool ShowBindingPanel( InputHandle_t inputHandle );
调出 Steam 叠加界面并打开绑定屏幕。
返回: bool
true 表示成功;如果叠加界面被禁用或不可用,则返回
false。 如果玩家正在使用大屏幕模式,配置会在叠加界面中打开。 在桌面模式下,将以弹出窗口的形式创建大屏幕模式,并打开配置。
示例:SteamInput()->ShowBindingPanel( myControllerHandle );
ShowDigitalActionOrigins
bool ShowDigitalActionOrigins( InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition );
已弃用。
返回: bool
始终返回
true。
Shutdown
bool Shutdown();
在结束使用
ISteamInput 接口时必须调用。
返回: bool
始终返回
true。
示例:SteamInput()->Shutdown();
StopAnalogActionMomentum
void StopAnalogActionMomentum( InputHandle_t inputHandle, InputAnalogActionHandle_t eAction );
停止模拟操作的动量(适用时,如有虚拟轨迹球设置的触控板)。
注意:这也会阻止所有相关联的触感。 当您想要向用户表明已达到某个操作的极限,如转动轮播区或滚动页面时,这会非常有用。
示例:SteamInput()->StopAnalogActionMomentum( controller1Handle, moveHandle );
TriggerHapticPulse
void TriggerHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec );
在支持的控制器上触发一个(低电平)触感脉冲。
注意:目前只有 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 );
| 名称 | 类型 | 描述 |
| inputHandle | InputHandle_t | 要影响的控制器的句柄。 |
| eTargetPad | ESteamControllerPad | 要影响的触感触控板。 |
| usDurationMicroSec | unsigned short | 脉冲的持续时间,以微秒(1/1,000,000 秒)表示。 |
| usOffMicroSec | unsigned short | 脉冲间隔的持续时间,以微秒表示。 |
| unRepeat | unsigned short | 重复 usDurationMicroSec / usOffMicroSec 工作周期的次数。 |
| nFlags | unsigned 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 );
| 名称 | 类型 | 描述 |
| inputHandle | InputHandle_t | 要影响的控制器句柄。 |
| usLeftSpeed | unsigned short | 左侧振动马达的强度值。 |
| usRightSpeed | unsigned short | 右侧振动马达的强度值。 |
在支持的控制器上触发一个振动事件。
注意:其他不兼容的控制器型号会忽略此 API 调用。
此调用将生成传统的机身振动效果。
Valve Steam 控制器将使用其触感反馈的振动模拟传统的机身振动。
示例:SteamInput()->TriggerVibration( controller1Handle, 10000, 10000 );
TriggerVibrationExtended
void TriggerVibrationExtended( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed );
| 名称 | 类型 | 描述 |
| inputHandle | InputHandle_t | 要影响的控制器句柄。 |
| usLeftSpeed | unsigned short | 左侧振动马达的强度值。 |
| usRightSpeed | unsigned short | 右侧振动马达的强度值。 |
| usLeftTriggerSpeed | unsigned short | Xbox 左脉动扳机键振动马达的强度值。 |
| usRightTriggerSpeed | unsigned short | Xbox 右脉动扳机键振动马达的强度值。 |
在支持的控制器上触发振动事件,包括 Xbox 脉动扳机键的马达强度值。
注意:若要在 Windows 获得对 Xbox 脉动扳机键马达强度值的支持,用户需要安装 Xbox 扩展功能支持驱动。
Steam 控制器和 Steam Deck 会使用自身的触感系统模拟传统的振动。
示例:SteamInput()->TriggerVibrationExtended( controller1Handle, 10000, 10000, 10000, 10000 );
GetActionOriginFromXboxOrigin
EInputActionOrigin GetActionOriginFromXboxOrigin( InputHandle_t inputHandle, EXboxOrigin eOrigin );
| 名称 | 类型 | 描述 |
| inputHandle | InputHandle_t | 要影响的控制器句柄。 您可以使用 GetControllerForGamepadIndex 获取此句柄。 |
| eOrigin | EXboxOrigin | 这是您想要为其获得图像的按钮。例如: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 );
| 名称 | 类型 | 描述 |
| inputHandle | InputHandle_t | 要影响的控制器句柄。 您可以使用 GetControllerForGamepadIndex 获取此句柄。 |
| eDestinationInputType | ESteamInputType | 您要转译成的控制器类型。 如果使用了 k_ESteamInputType_Unknown,Steam 将采用与您的 SDK 版本最接近的类型。 |
| eSourceOrigin | EInputActionOrigin | 这是您要转译的按键。 |
返回: 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 );
返回: 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 );
返回:uint32 - Steam 远程畅玩会话 ID
获取和设备相关联的 Steam 远程畅玩会话 ID,若没有相关会话,则返回 0。 请参阅 isteamremoteplay.h,了解更多有关 Steam 远程畅玩会话的信息。
结构
以下是 ISteamInput 中的函数可能返回和/或与之交互的结构。
InputAnalogActionData_t
表示模拟操作的当前状态。
注意: - 确切的值、范围等取决于配置,但是(大致来讲)传统的模拟操作将提供在 -1.0 到 1.0 的范围内的标准浮点值,而鼠标类操作将提供增量更新,指明自上一帧开始移动的“像素”数。 这样做的结果是,鼠标类操作将提供更大的绝对 x 和 y 值,并且与上一个记录的输入位置相对;而传统的模拟操作则提供较小值,且与中央物理锚点相对。
- 虽然由鼠标类操作提供的增量非常类似于操作系统所提供的像素增量,但 SC 增量是浮点数,而不是整数。 这意味着当将此数据映射到摄像头旋转时,会导致潜在量化的减少与精度的降低。
- 在单轴模拟输入(例如模拟扳机键)的情况下,只有 x 轴会包含数据,而 y 轴始终为 0。
| 名称 | 类型 | 描述 |
| eMode | EControllerSourceMode | 来自该操作的数据的类型,与操作集的 VDF 定义中指定的数据类型相匹配。 |
| x | float | 此操作当前在水平轴上的状态。 |
| y | float | 此操作当前在垂直轴上的状态。 |
| bActive | bool | 当前是否可以将该操作绑定到有效操作集。 如果不可用,或不属于有效操作集,则为 false。 |
InputDigitalActionData_t
代表数字操作的当前状态。
| 名称 | 类型 | 描述 |
| bState | bool | 此操作的当前状态;若此操作当前被按下,为 true,反之则为 false。 |
| bActive | bool | 当前是否可以将该操作绑定到有效操作集。 |
InputMotionData_t
表示设备运动传感器的当前状态。
注意:如果是 rotQuatX/rotQuatY/rotQuatZ/rotQuatW,控制器上的惯性测量单元将创建一个基于融合陀螺仪和加速计的四元数。 此值是控制器的绝对方位,但会在偏航轴上漂移。
位置加速度报告为介于 INT16_MIN 和 INT16_MAX 之间的插值,其中范围被限制为 ±2G(1G = 9.80665 m/s
2)。<!-- sup -->).
角速度报告为介于 INT16_MIN 和 INT16_MAX 之间的插值,其中范围被限制为每秒 ±2000 度。
| 名称 | 类型 | 描述 |
| rotQuatX | float | 融合了传感器的绝对旋转(在航向中漂移),x 轴 |
| rotQuatY | float | 融合了传感器的绝对旋转(在航向中漂移),y 轴 |
| rotQuatZ | float | 融合了传感器的绝对旋转(在航向中漂移),z 轴 |
| rotQuatW | float | 融合了传感器的绝对旋转(在航向中漂移),w 轴 |
| posAccelX | float | 位置加速度,x 轴 |
| posAccelY | float | 位置加速度,y 轴 |
| posAccelZ | float | 位置加速度,z 轴 |
| rotVelX | float | 角速度,x 轴 |
| rotVelY | float | 角速度,y 轴 |
| rotVelZ | float | 角速度,z 轴 |
枚举
以下为经过定义来与 ISteamInput 一起使用的枚举。
EInputActionOrigin
玩家在 Steam 输入配置器中为操作绑定的输入。 这些值的主要目的是指示对于某个给定操作,应在屏幕上显示什么按键标志,例如“按 [A] 跳跃”。
| 名称 | 值 | 描述 |
| k_EInputActionOrigin_None | 0 | |
| k_EInputActionOrigin_A | 1 | (Valve Steam 控制器)数字正面按键 A |
| k_EInputActionOrigin_B | 2 | (Valve Steam 控制器)数字正面按键 B |
| k_EInputActionOrigin_X | 3 | (Valve Steam 控制器)数字正面按键 X |
| k_EInputActionOrigin_Y | 4 | (Valve Steam 控制器)数字正面按键 Y |
| k_EInputActionOrigin_LeftBumper | 5 | (Valve Steam 控制器)数字左缓冲键(即 LB 键) |
| k_EInputActionOrigin_RightBumper | 6 | (Valve Steam 控制器)数字右缓冲键(即 RB 键) |
| k_EInputActionOrigin_LeftGrip | 7 | (Valve Steam 控制器)数字左握持键 |
| k_EInputActionOrigin_RightGrip | 8 | (Valve Steam 控制器)数字右握持键 |
| k_EInputActionOrigin_Start | 9 | (Valve Steam 控制器)数字开始键 |
| k_EInputActionOrigin_Back | 10 | (Valve Steam 控制器)数字返回键 |
| k_EInputActionOrigin_LeftPad_Touch | 11 | (Valve Steam 控制器)左触控板,单指简单触碰 |
| k_EInputActionOrigin_LeftPad_Swipe | 12 | (Valve Steam 控制器)左触控板,任何轴触碰输入 |
| k_EInputActionOrigin_LeftPad_Click | 13 | (Valve Steam 控制器)左触控板,数字点击(整体) |
| k_EInputActionOrigin_LeftPad_DPadNorth | 14 | (Valve Steam 控制器)左触控板,数字点击(上象限) |
| k_EInputActionOrigin_LeftPad_DPadSouth | 15 | (Valve Steam 控制器)左触控板,数字点击(下象限) |
| k_EInputActionOrigin_LeftPad_DPadWest | 16 | (Valve Steam 控制器)左触控板,数字点击(左象限) |
| k_EInputActionOrigin_LeftPad_DPadEast | 17 | (Valve Steam 控制器)左触控板,数字点击(右象限) |
| k_EInputActionOrigin_RightPad_Touch | 18 | (Valve Steam 控制器)右触控板,单指简单触碰 |
| k_EInputActionOrigin_RightPad_Swipe | 19 | (Valve Steam 控制器)右触控板,任何轴触碰输入 |
| k_EInputActionOrigin_RightPad_Click | 20 | (Valve Steam 控制器)右触控板,数字点击(整体) |
| k_EInputActionOrigin_RightPad_DPadNorth | 21 | (Valve Steam 控制器)右触控板,数字点击(上象限) |
| k_EInputActionOrigin_RightPad_DPadSouth | 22 | (Valve Steam 控制器)右触控板,数字点击(下象限) |
| k_EInputActionOrigin_RightPad_DPadWest | 23 | (Valve Steam 控制器)右触控板,数字点击(左象限) |
| k_EInputActionOrigin_RightPad_DPadEast | 24 | (Valve Steam 控制器)右触控板,数字点击(右象限) |
| k_EInputActionOrigin_LeftTrigger_Pull | 25 | (Valve Steam 控制器)左模拟扳机键,任何力度扣动(模拟值) |
| k_EInputActionOrigin_LeftTrigger_Click | 26 | (Valve Steam 控制器)左模拟扳机键,扣动到底(数字值) |
| k_EInputActionOrigin_RightTrigger_Pull | 27 | (Valve Steam 控制器)右模拟扳机键,任何力度扣动(模拟值) |
| k_EInputActionOrigin_RightTrigger_Click | 28 | (Valve Steam 控制器)右模拟扳机键,扣动到底(数字值) |
| k_EInputActionOrigin_LeftStick_Move | 29 | (Valve Steam 控制器)左摇杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_LeftStick_Click | 30 | (Valve Steam 控制器)左摇杆,点击(数字值) |
| k_EInputActionOrigin_LeftStick_DPadNorth | 31 | (Valve Steam 控制器)左摇杆,数字运动(上象限) |
| k_EInputActionOrigin_LeftStick_DPadSouth | 32 | (Valve Steam 控制器)左摇杆,数字运动(下象限) |
| k_EInputActionOrigin_LeftStick_DPadWest | 33 | (Valve Steam 控制器)左摇杆,数字运动(左象限) |
| k_EInputActionOrigin_LeftStick_DPadEast | 34 | (Valve Steam 控制器)左摇杆,数字运动(右象限) |
| k_EInputActionOrigin_Gyro_Move | 35 | (Valve Steam 控制器)陀螺仪,任何轴模拟运动 |
| k_EInputActionOrigin_Gyro_Pitch | 36 | (Valve Steam 控制器)陀螺仪,倾斜轴模拟运动(向上指向天花板,向下指向地板) |
| k_EInputActionOrigin_Gyro_Yaw | 37 | (Valve Steam 控制器)陀螺仪,偏航轴模拟运动(向左转面对一面墙,向右转面对另一面墙) |
| k_EInputActionOrigin_Gyro_Roll | 38 | (Valve Steam 控制器)陀螺仪,滚转轴模拟运动(斜向左朝向一边肩膀,斜向右朝向另一边肩膀) |
| k_EInputActionOrigin_SteamController_Reserved0 | 39 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved1 | 40 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved2 | 41 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved3 | 42 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved4 | 43 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved5 | 44 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved6 | 45 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved7 | 46 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved8 | 47 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved9 | 48 | 保留供将来使用 |
| k_EInputActionOrigin_SteamController_Reserved10 | 49 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_X | 50 | (Sony Dualshock 4)数字正面按键 X |
| k_EInputActionOrigin_PS4_Circle | 51 | (Sony Dualshock 4)数字正面按键 ○ |
| k_EInputActionOrigin_PS4_Triangle | 52 | (Sony Dualshock 4)数字正面按键 △ |
| k_EInputActionOrigin_PS4_Square | 53 | (Sony Dualshock 4)数字正面按键 □ |
| k_EInputActionOrigin_PS4_LeftBumper | 54 | (Sony Dualshock 4)数字左缓冲键(即 L1 键) |
| k_EInputActionOrigin_PS4_RightBumper | 55 | (Sony Dualshock 4)数字右缓冲键(即 R1 键) |
| k_EInputActionOrigin_PS4_Options | 56 | (Sony Dualshock 4)数字 OPTIONS 键(即开始键) |
| k_EInputActionOrigin_PS4_Share | 57 | (Sony Dualshock 4)数字 SHARE 键(即返回键) |
| k_EInputActionOrigin_PS4_LeftPad_Touch | 58 | (Sony Dualshock 4)左半部触摸板,单指简单触碰 |
| k_EInputActionOrigin_PS4_LeftPad_Swipe | 59 | (Sony Dualshock 4)左半部触摸板,任何轴触碰输入 |
| k_EInputActionOrigin_PS4_LeftPad_Click | 60 | (Sony Dualshock 4)左半部触摸板,数字点击(整体) |
| k_EInputActionOrigin_PS4_LeftPad_DPadNorth | 61 | (Sony Dualshock 4)左半部触摸板,数字点击(上象限) |
| k_EInputActionOrigin_PS4_LeftPad_DPadSouth | 62 | (Sony Dualshock 4)左半部触摸板,数字点击(下象限) |
| k_EInputActionOrigin_PS4_LeftPad_DPadWest | 63 | (Sony Dualshock 4)左半部触摸板,数字点击(左象限) |
| k_EInputActionOrigin_PS4_LeftPad_DPadEast | 64 | (Sony Dualshock 4)左半部触摸板,数字点击(右象限) |
| k_EInputActionOrigin_PS4_RightPad_Touch | 65 | (Sony Dualshock 4)右半部触摸板,单指简单触碰 |
| k_EInputActionOrigin_PS4_RightPad_Swipe | 66 | (Sony Dualshock 4)右半部触摸板,任何轴触碰输入 |
| k_EInputActionOrigin_PS4_RightPad_Click | 67 | (Sony Dualshock 4)右半部触摸板,数字点击(整体) |
| k_EInputActionOrigin_PS4_RightPad_DPadNorth | 68 | (Sony Dualshock 4)右半部触摸板,数字点击(上象限) |
| k_EInputActionOrigin_PS4_RightPad_DPadSouth | 69 | (Sony Dualshock 4)右半部触摸板,数字点击(下象限) |
| k_EInputActionOrigin_PS4_RightPad_DPadWest | 70 | (Sony Dualshock 4)右半部触摸板,数字点击(左象限) |
| k_EInputActionOrigin_PS4_RightPad_DPadEast | 71 | (Sony Dualshock 4)右半部触摸板,数字点击(右象限) |
| k_EInputActionOrigin_PS4_CenterPad_Touch | 72 | (Sony Dualshock 4)统一触摸板,单指简单触碰 |
| k_EInputActionOrigin_PS4_CenterPad_Swipe | 73 | (Sony Dualshock 4)统一触摸板,任何轴触碰输入 |
| k_EInputActionOrigin_PS4_CenterPad_Click | 74 | (Sony Dualshock 4)统一触摸板,数字点击(整体) |
| k_EInputActionOrigin_PS4_CenterPad_DPadNorth | 75 | (Sony Dualshock 4)统一触摸板,数字点击(上象限) |
| k_EInputActionOrigin_PS4_CenterPad_DPadSouth | 76 | (Sony Dualshock 4)统一触摸板,数字点击(下象限) |
| k_EInputActionOrigin_PS4_CenterPad_DPadWest | 77 | (Sony Dualshock 4)统一触摸板,数字点击(左象限) |
| k_EInputActionOrigin_PS4_CenterPad_DPadEast | 78 | (Sony Dualshock 4)统一触摸板,数字点击(右象限) |
| k_EInputActionOrigin_PS4_LeftTrigger_Pull | 79 | (Sony Dualshock 4)左模拟扳机键(L2 键),任何力度扣动(模拟值) |
| k_EInputActionOrigin_PS4_LeftTrigger_Click | 80 | (Sony Dualshock 4)左模拟扳机键(L2 键),扣动到底(数字值) |
| k_EInputActionOrigin_PS4_RightTrigger_Pull | 81 | (Sony Dualshock 4)右模拟扳机键(R2 键),任何力度扣动(模拟值) |
| k_EInputActionOrigin_PS4_RightTrigger_Click | 82 | (Sony Dualshock 4)右模拟扳机键(R2 键),扣动到底(数字值) |
| k_EInputActionOrigin_PS4_LeftStick_Move | 83 | (Sony Dualshock 4)左操作杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_PS4_LeftStick_Click | 84 | (Sony Dualshock 4)左操作杆,点击(数字值) |
| k_EInputActionOrigin_PS4_LeftStick_DPadNorth | 85 | (Sony Dualshock 4)左操作杆,数字运动(上象限) |
| k_EInputActionOrigin_PS4_LeftStick_DPadSouth | 86 | (Sony Dualshock 4)左操作杆,数字运动(下象限) |
| k_EInputActionOrigin_PS4_LeftStick_DPadWest | 87 | (Sony Dualshock 4)左操作杆,数字运动(左象限) |
| k_EInputActionOrigin_PS4_LeftStick_DPadEast | 88 | (Sony Dualshock 4)左操作杆,数字运动(右象限) |
| k_EInputActionOrigin_PS4_RightStick_Move | 89 | (Sony Dualshock 4)右操作杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_PS4_RightStick_Click | 90 | (Sony Dualshock 4)右操作杆,点击(数字值) |
| k_EInputActionOrigin_PS4_RightStick_DPadNorth | 91 | (Sony Dualshock 4)右操作杆,数字运动(上象限) |
| k_EInputActionOrigin_PS4_RightStick_DPadSouth | 92 | (Sony Dualshock 4)右操作杆,数字运动(下象限) |
| k_EInputActionOrigin_PS4_RightStick_DPadWest | 93 | (Sony Dualshock 4)右操作杆,数字运动(左象限) |
| k_EInputActionOrigin_PS4_RightStick_DPadEast | 94 | (Sony Dualshock 4)右操作杆,数字运动(右象限) |
| k_EInputActionOrigin_PS4_DPad_North | 95 | (Sony Dualshock 4)方向键,按下(上象限) |
| k_EInputActionOrigin_PS4_DPad_South | 96 | (Sony Dualshock 4)方向键,按下(下象限) |
| k_EInputActionOrigin_PS4_DPad_West | 97 | (Sony Dualshock 4)方向键,按下(左象限) |
| k_EInputActionOrigin_PS4_DPad_East | 98 | (Sony Dualshock 4)方向键,按下(右象限) |
| k_EInputActionOrigin_PS4_Gyro_Move | 99 | (Sony Dualshock 4)陀螺仪,任何轴模拟运动 |
| k_EInputActionOrigin_PS4_Gyro_Pitch | 100 | (Sony Dualshock 4)陀螺仪,倾斜轴模拟运动(向上指向天花板,向下指向地板) |
| k_EInputActionOrigin_PS4_Gyro_Yaw | 101 | (Sony Dualshock 4)陀螺仪,偏航轴模拟运动(向左转面对一面墙,向右转面对另一面墙) |
| k_EInputActionOrigin_PS4_Gyro_Roll | 102 | (Sony Dualshock 4)陀螺仪,滚转轴模拟运动(斜向左朝向一边肩膀,斜向右朝向另一边肩膀) |
| k_EInputActionOrigin_PS4_Reserved0 | 103 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved1 | 104 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved2 | 105 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved3 | 106 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved4 | 107 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved5 | 108 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved6 | 109 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved7 | 110 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved8 | 111 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved9 | 112 | 保留供将来使用 |
| k_EInputActionOrigin_PS4_Reserved10 | 113 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_A | 114 | (XB1)数字正面按键 A |
| k_EInputActionOrigin_XBoxOne_B | 115 | (XB1)数字正面按键 B |
| k_EInputActionOrigin_XBoxOne_X | 116 | (XB1)数字正面按键 X |
| k_EInputActionOrigin_XBoxOne_Y | 117 | (XB1)数字正面按键 Y |
| k_EInputActionOrigin_XBoxOne_LeftBumper | 118 | (XB1)数字左缓冲键(即 LB 键) |
| k_EInputActionOrigin_XBoxOne_RightBumper | 119 | (XB1)数字右缓冲键(即 RB 键) |
| k_EInputActionOrigin_XBoxOne_View | 121 | (XB1)数字“视图”按钮(即返回键) |
| k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull | 122 | (XB1)左模拟扳机键,任何力度扣动(模拟值) |
| k_EInputActionOrigin_XBoxOne_LeftTrigger_Click | 123 | (XB1)左模拟扳机键,扣动到底(数字值) |
| k_EInputActionOrigin_XBoxOne_RightTrigger_Pull | 124 | (XB1)右模拟扳机键,任何力度扣动(模拟值) |
| k_EInputActionOrigin_XBoxOne_RightTrigger_Click | 125 | (XB1)右模拟扳机键,扣动到底(数字值) |
| k_EInputActionOrigin_XBoxOne_LeftStick_Move | 126 | (XB1)左摇杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_XBoxOne_LeftStick_Click | 127 | (XB1)左摇杆,点击(数字值) |
| k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth | 128 | (XB1)左摇杆,数字运动(上象限) |
| k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth | 129 | (XB1)左摇杆,数字运动(下象限) |
| k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest | 130 | (XB1)左摇杆,数字运动(左象限) |
| k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast | 131 | (XB1)左摇杆,数字运动(右象限) |
| k_EInputActionOrigin_XBoxOne_RightStick_Move | 132 | (XB1)右摇杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_XBoxOne_RightStick_Click | 133 | (XB1)右摇杆,点击(数字值) |
| k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth | 134 | (XB1)右摇杆,数字运动(上象限) |
| k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth | 135 | (XB1)右摇杆,数字运动(下象限) |
| k_EInputActionOrigin_XBoxOne_RightStick_DPadWest | 136 | (XB1)右摇杆,数字运动(左象限) |
| k_EInputActionOrigin_XBoxOne_RightStick_DPadEast | 137 | (XB1)右摇杆,数字运动(右象限) |
| k_EInputActionOrigin_XBoxOne_DPad_North | 138 | (XB1)方向键,按下(上象限) |
| k_EInputActionOrigin_XBoxOne_DPad_South | 139 | (XB1)方向键,按下(下象限) |
| k_EInputActionOrigin_XBoxOne_DPad_West | 140 | (XB1)方向键,按下(左象限) |
| k_EInputActionOrigin_XBoxOne_DPad_East | 141 | (XB1)方向键,按下(右象限) |
| k_EInputActionOrigin_XBoxOne_Reserved0 | 142 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved1 | 143 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved2 | 144 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved3 | 145 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved4 | 146 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved5 | 147 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved6 | 148 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved7 | 149 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved8 | 150 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved9 | 151 | 保留供将来使用 |
| k_EInputActionOrigin_XBoxOne_Reserved10 | 152 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_A | 153 | (X360)数字正面按键 A |
| k_EInputActionOrigin_XBox360_B | 154 | (X360)数字正面按键 B |
| k_EInputActionOrigin_XBox360_X | 155 | (X360)数字正面按键 X |
| k_EInputActionOrigin_XBox360_Y | 156 | (X360)数字正面按键 Y |
| k_EInputActionOrigin_XBox360_LeftBumper | 157 | (X360)数字左缓冲键(即 LB 键) |
| k_EInputActionOrigin_XBox360_RightBumper | 158 | (X360)数字右缓冲键(即 RB 键) |
| k_EInputActionOrigin_XBox360_Start | 159 | (X360)数字开始键 |
| k_EInputActionOrigin_XBox360_Back | 160 | (X360)数字返回键 |
| k_EInputActionOrigin_XBox360_LeftTrigger_Pull | 161 | (X360)左模拟扳机键,任何力度扣动(模拟值) |
| k_EInputActionOrigin_XBox360_LeftTrigger_Click | 162 | (X360)左模拟扳机键,扣动到底(数字值) |
| k_EInputActionOrigin_XBox360_RightTrigger_Pull | 163 | (X360)右模拟扳机键,任何力度扣动(模拟值) |
| k_EInputActionOrigin_XBox360_RightTrigger_Click | 164 | (X360)右模拟扳机键,任何方式扣动(数字值) |
| k_EInputActionOrigin_XBox360_LeftStick_Move | 165 | (X360)左摇杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_XBox360_LeftStick_Click | 166 | (X360)左摇杆,点击(数字值) |
| k_EInputActionOrigin_XBox360_LeftStick_DPadNorth | 167 | (X360)左摇杆,数字运动(上象限) |
| k_EInputActionOrigin_XBox360_LeftStick_DPadSouth | 168 | (X360)左摇杆,数字运动(下象限) |
| k_EInputActionOrigin_XBox360_LeftStick_DPadWest | 169 | (X360)左摇杆,数字运动(左象限) |
| k_EInputActionOrigin_XBox360_LeftStick_DPadEast | 170 | (X360)左摇杆,数字运动(右象限) |
| k_EInputActionOrigin_XBox360_RightStick_Move | 171 | (X360)右摇杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_XBox360_RightStick_Click | 172 | (X360)右摇杆,点击(数字值) |
| k_EInputActionOrigin_XBox360_RightStick_DPadNorth | 173 | (X360)右摇杆,数字运动(上象限) |
| k_EInputActionOrigin_XBox360_RightStick_DPadSouth | 174 | (X360)右摇杆,数字运动(下象限) |
| k_EInputActionOrigin_XBox360_RightStick_DPadWest | 175 | (X360)右摇杆,数字运动(左象限) |
| k_EInputActionOrigin_XBox360_RightStick_DPadEast | 176 | (X360)右摇杆,数字运动(右象限) |
| k_EInputActionOrigin_XBox360_DPad_North | 177 | (X360)方向键,按下(上象限) |
| k_EInputActionOrigin_XBox360_DPad_South | 178 | (X360)方向键,按下(下象限) |
| k_EInputActionOrigin_XBox360_DPad_West | 179 | (X360)方向键,按下(左象限) |
| k_EInputActionOrigin_XBox360_DPad_East | 180 | (X360)方向键,按下(右象限) |
| k_EInputActionOrigin_XBox360_Reserved0 | 181 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved1 | 182 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved2 | 183 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved3 | 184 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved4 | 185 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved5 | 186 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved6 | 187 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved7 | 188 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved8 | 189 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved9 | 190 | 保留供将来使用 |
| k_EInputActionOrigin_XBox360_Reserved10 | 191 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_A | 192 | (Nintendo Switch Pro)数字正面按键 A |
| k_EInputActionOrigin_Switch_B | 193 | (Nintendo Switch Pro)数字正面按键 B |
| k_EInputActionOrigin_Switch_X | 194 | (Nintendo Switch Pro)数字正面按键 X |
| k_EInputActionOrigin_Switch_Y | 195 | (Nintendo Switch Pro)数字正面按键 Y |
| k_EInputActionOrigin_Switch_LeftBumper | 196 | (Nintendo Switch Pro)数字左缓冲键( L 键) |
| k_EInputActionOrigin_Switch_RightBumper | 197 | (Nintendo Switch Pro)数字右缓冲键(R 键) |
| k_EInputActionOrigin_Switch_Plus | 198 | (Nintendo Switch Pro)“+”键 |
| k_EInputActionOrigin_Switch_Minus | 199 | (Nintendo Switch Pro)“-”键 |
| k_EInputActionOrigin_Switch_Capture | 200 | (Nintendo Switch Pro)数字截图键 |
| k_EInputActionOrigin_Switch_LeftTrigger_Pull | 201 | (Nintendo Switch Pro) ZL 键,点击 |
| k_EInputActionOrigin_Switch_LeftTrigger_Click | 202 | (Nintendo Switch Pro) ZL 键,点击(与先前值相同) |
| k_EInputActionOrigin_Switch_RightTrigger_Pull | 203 | (Nintendo Switch Pro) ZR 键,点击 |
| k_EInputActionOrigin_Switch_RightTrigger_Click | 204 | (Nintendo Switch Pro) ZR 键,点击(与先前值相同) |
| k_EInputActionOrigin_Switch_LeftStick_Move | 205 | (Nintendo Switch Pro)L 摇杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_Switch_LeftStick_Click | 206 | (Nintendo Switch Pro)L 摇杆,点击(模拟值) |
| k_EInputActionOrigin_Switch_LeftStick_DPadNorth | 207 | (Nintendo Switch Pro)L 摇杆,数字运动(上象限) |
| k_EInputActionOrigin_Switch_LeftStick_DPadSouth | 208 | (Nintendo Switch Pro)左摇杆,数字运动(下象限) |
| k_EInputActionOrigin_Switch_LeftStick_DPadWest | 209 | (Nintendo Switch Pro)左摇杆,数字运动(左象限) |
| k_EInputActionOrigin_Switch_LeftStick_DPadEast | 210 | (Nintendo Switch Pro)左摇杆,数字运动(右象限) |
| k_EInputActionOrigin_Switch_RightStick_Move | 211 | (Nintendo Switch Pro)右摇杆,任何轴运动(模拟值) |
| k_EInputActionOrigin_Switch_RightStick_Click | 212 | (Nintendo Switch Pro)R 摇杆,点击(模拟值) |
| k_EInputActionOrigin_Switch_RightStick_DPadNorth | 213 | (Nintendo Switch Pro)右摇杆,数字运动(上象限) |
| k_EInputActionOrigin_Switch_RightStick_DPadSouth | 214 | (Nintendo Switch Pro)右摇杆,数字运动(下象限) |
| k_EInputActionOrigin_Switch_RightStick_DPadWest | 215 | (Nintendo Switch Pro)右摇杆,数字运动(左象限) |
| k_EInputActionOrigin_Switch_RightStick_DPadEast | 216 | (Nintendo Switch Pro)右摇杆,数字运动(右象限) |
| k_EInputActionOrigin_Switch_DPad_North | 217 | (Nintendo Switch Pro)十字键,按下(上象限) |
| k_EInputActionOrigin_Switch_DPad_South | 218 | (Nintendo Switch Pro)十字键,按下(下象限) |
| k_EInputActionOrigin_Switch_DPad_West | 219 | (Nintendo Switch Pro)十字键,按下(左象限) |
| k_EInputActionOrigin_Switch_DPad_East | 220 | (Nintendo Switch Pro)十字键,按下(右象限) |
| k_EInputActionOrigin_SwitchProGyro_Move | 221 | (Nintendo Switch Pro)陀螺仪,任何轴模拟运动 |
| k_EInputActionOrigin_SwitchProGyro_Pitch | 222 | (Nintendo Switch Pro)陀螺仪,倾斜轴模拟运动(向上指向天花板,向下指向地板) |
| k_EInputActionOrigin_SwitchProGyro_Yaw | 223 | (Nintendo Switch Pro)陀螺仪,偏航轴模拟运动(向左转面对一面墙,向右转面对另一面墙) |
| k_EInputActionOrigin_SwitchProGyro_Roll | 224 | (Nintendo Switch Pro)陀螺仪,滚转轴模拟运动(斜向左朝向一边肩膀,斜向右朝向另一边肩膀) |
| k_EInputActionOrigin_Switch_Reserved0 | 225 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved1 | 226 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved2 | 227 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved3 | 228 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved4 | 229 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved5 | 230 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved6 | 231 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved7 | 232 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved8 | 233 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved9 | 234 | 保留供将来使用 |
| k_EInputActionOrigin_Switch_Reserved10 | 235 | 保留供将来使用 |
| k_EInputActionOrigin_Count | 258 | 此枚举中的值的数量,有助于循环访问。 |
| k_EInputActionOrigin_MaximumPossibleValue | 32767 | 此枚举中的值的数量,有助于循环访问。 |
EControllerSource
控制器的一个区域,可以视为一个更大的抽象模块单元,可对其应用各种模式并输出有用数据。 例如,摇杆可以被当作单个模拟输入,或者被分成四个离散的数字,组成一个虚拟十字键。 同样地,ABXY 正面按键自成一组,可作为四个独立按键,或者一个虚拟十字键的组件,等等。
| 名称 | 值 | 描述 |
| k_EInputSource_None | 0 | 无控制器源。 |
| k_EInputSource_LeftTrackpad | 1 | 左触控板,或者是中央触控板的左半部分。 |
| k_EInputSource_RightTrackpad | 2 | 右触控板,或者是中央触控板的右半部分。 |
| k_EInputSource_Joystick | 3 | 摇杆,如存在多个摇杆,则为左摇杆。 |
| k_EInputSource_ABXY | 4 | 四个主要正面按键。 |
| k_EInputSource_Switch | 5 | 控制器上不属于任何其他指定源的开关/按键。 这包括缓冲键、开始/选择键及握持键。 此特殊失配情况不适合更大的范式,因此有其自己的数字按键来源,也有处理其的相应模式。 |
| k_EInputSource_LeftTrigger | 6 | 左模拟扳机键。 |
| k_EInputSource_RightTrigger | 7 | 右模拟扳机键。 |
| k_EInputSource_Gyro | 8 | 内部陀螺仪。 |
| k_EInputSource_CenterTrackpad | 9 | 中央触控板 (仅限 DS4)。 |
| k_EInputSource_RightJoystick | 10 | 右摇杆。 如果只有一个摇杆,则不使用此源。 |
| k_EInputSource_DPad | 11 | 十字键。 |
| k_EInputSource_Key | 12 | 键盘键(用于带扫描码的键盘)。 |
| k_EInputSource_Mouse | 13 | 传统鼠标 |
| k_EInputSource_Count | 14 | 枚举的数量,有助于循环访问。 |
EControllerSourceMode
配置器在控制器源上施加的虚拟输入模式。 例如,配置器可以让模拟摇杆像带有四个数字输入的十字键那样使用;EControllerSource 将为 k_EInputSource_Joystick,而 EControllerSourceMode 为 k_EInputSourceMode_Dpad。 此模式还会更改任何关联操作所接收的输入数据。
| 名称 | 值 | 描述 |
| k_EInputSourceMode_None | 0 | 无输入模式。 |
| k_EInputSourceMode_Dpad | 1 | 十字键:四个数字方向键以十字形组合在一起,在任何时候,每个轴上只能按下一个键。 |
| k_EInputSourceMode_Buttons | 2 | |
| k_EInputSourceMode_FourButtons | 3 | 四个数字正面按键,可同时按下其中的任意按键。 |
| k_EInputSourceMode_AbsoluteMouse | 4 | |
| k_EInputSourceMode_RelativeMouse | 5 | |
| k_EInputSourceMode_JoystickMove | 6 | |
| k_EInputSourceMode_JoystickMouse | 7 | |
| k_EInputSourceMode_JoystickCamera | 8 | |
| k_EInputSourceMode_ScrollWheel | 9 | |
| k_EInputSourceMode_Trigger | 10 | |
| k_EInputSourceMode_MouseJoystick | 12 | |
| k_EInputSourceMode_MouseRegion | 13 | |
| k_EInputSourceMode_SingleButton | 15 | |
| k_EInputSourceMode_Switches | 16 | |
ESteamControllerLEDFlag
控制 Steam 控制器设备的 LED 颜色(如果设备有 LED 的话)。
注意:Valve Steam 控制器有一个 LED 灯,但只有亮度会受到影响(颜色始终为白色)。
DUALSHOCK 4 控制器的 LED 就是它的灯条,其颜色和亮度均可配置。
| 名称 | 值 | 描述 |
| k_ESteamInputType_Unknown | 0 | 用于所有未识别的设备 |
| k_ESteamInputType_SteamController | 1 | 将颜色恢复为默认(游戏外)设置。 |
ESteamInputType
表示给定硬件的设备型号。
| 名称 | 基类型 | 描述 |
| k_ESteamInputType_Unknown | 0 | 用于所有未识别的设备 |
| k_ESteamInputType_SteamController | 1 | Valve Steam 控制器 |
| k_ESteamInputType_XBox360Controller | 2 | Microsoft XBox 360 控制器 |
| k_ESteamInputType_XBoxOneController | 3 | Microsoft Xbox One 控制器 |
| k_ESteamInputType_GenericXInput | 4 | 任何通用的第三方 XInput 设备 |
| k_ESteamInputType_PS4Controller | 5 | 索尼 PlayStation 4 控制器 |
| k_ESteamInputType_AppleMFiController | 6 | 未使用 |
| k_ESteamInputType_AndroidController | 7 | 未使用 |
| k_ESteamInputType_SwitchJoyConPair | 8 | 未使用 |
| k_ESteamInputType_SwitchJoyConSingle | 9 | 未使用 |
| k_ESteamInputType_SwitchProController | 10 | Nintendo Switch Pro 控制器 |
| k_ESteamInputType_MobileTouch | 11 | Steam 流式应用移动触控控制器 |
| k_ESteamInputType_PS3Controller | 12 | 索尼 Playstation 3 控制器或兼容 PS3/PS4 的格斗摇杆 |
| k_ESteamInputType_Count | 13 | 当前返回的值的数量 |
| k_ESteamInputType_MaximumPossibleValue | 255 | 可能返回的最大值 |
ESteamControllerPad
Steam 控制器触控板的一个区域
注意:在 Valve Steam 控制器上,这些值对应于左和右触控板。
在 DUALSHOCK 4 控制器上,这些值对应于中央单触控板的左半部和右半部。
| 名称 | 值 | 描述 |
| k_ESteamControllerPad_Left | 0 | Steam 控制器设备上的左触控板区域。 兼容型号:VSC、DS4 |
| k_ESteamControllerPad_Right | 1 | Steam 控制器设备上的右触控板区域。 兼容型号:VSC、DS4 |
Typedefs
以下为经过定义来与 ISteamInput 一起使用的 typedef。
常量
以下是经过定义来与 ISteamInput 一起使用的常量。
| 名称 | 类型 | 值 | 描述 |
| STEAMINPUT_INTERFACE_VERSION | const char * | "SteamInput001" | |
| STEAM_INPUT_HANDLE_ALL_CONTROLLERS | int | UINT64_MAX | 在向特定控制器句柄发送选项时,您可以使用此特殊值替代句柄来将选项发送到所有控制器。 |
| STEAM_INPUT_MAX_ANALOG_ACTIONS | int | 16 | 各控制器上可执行的模拟操作的最大数量。 |
| STEAM_INPUT_MAX_ANALOG_ACTION_DATA | float | 1.0f | 任何给定轴上的模拟操作能够报告的最大值。 |
| STEAM_INPUT_MAX_COUNT | int | 16 | 能与 Steam 输入配置器同时使用的控制器的最大数量。 |
| STEAM_INPUT_MAX_DIGITAL_ACTIONS | int | 128 | 各控制器上可执行的数字操作的最大数量。 |
| STEAM_INPUT_MAX_ORIGINS | int | 8 | 能附加于单个操作的输入源的最大数量。 |
| STEAM_INPUT_MIN_ANALOG_ACTION_DATA | float | -1.0f | 任何给定轴上的模拟操作能够报告的最小值。 |