Steamworks 文献库
ISteamController 接口(已弃用)
Steam 控制器的支持 API。

此 API 已弃用,改用 ISteamInput。请参见 ISteamInput 接口,了解该 API 的相关信息。

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

成员函数

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

ActivateActionSet

void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle );
名称类型描述
controllerHandleControllerHandle_t您要为其激活一个操作集的控制器句柄。
actionSetHandleControllerActionSetHandle_t您要激活的操作集的句柄。

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

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

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

激活所有控制器

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

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

ActivateActionSetLayer

void ActivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle );
名称类型描述
controllerHandleControllerHandle_t您要为其激活一个操作集层的控制器句柄。
actionSetHandleControllerActionSetHandle_t您要激活的操作集层的句柄。

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

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

示例:
SteamController()->ActivateActionSetLayer( controllerHandle1, myActionSetLayer );

DeactivateActionSetLayer

void DeactivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle );
名称类型描述
controllerHandleControllerHandle_t您要为其停用一个操作集层的控制器句柄。
actionSetHandleControllerActionSetHandle_t您要停用的操作集层的句柄。

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

示例:
SteamController()->DeactivateActionSetLayer( controllerHandle1, myActionSetLayer );

DeactivateAllActionSetLayers

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

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

示例:
SteamController()->DeactivateAllActionSetLayers( controllerHandle1 );

GetActiveActionSetLayers

int GetActiveActionSetLayers( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t *handlesOut );
名称类型描述
controllerHandleControllerHandle_t您要为其获得操作集层的控制器句柄。
handlesOutControllerActionSetHandle_t*必须指向一个 STEAM_CONTROLLER_MAX_COUNT 大小的 ControllerHandle_t 数组。

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

示例:
ControllerHandle_t *handlesOut = new ControllerHandle_t []; SteamController()->GetActiveActionSetLayers( controllerHandle1, &handlesOut );

GetActionSetHandle

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

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

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

示例:
ControllerActionSetHandle_t fightingSetHandle = SteamController()->GetActionSetHandle( "fighting" );

GetAnalogActionData

ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle );
名称类型描述
controllerHandleControllerHandle_t您要查询的控制器句柄。
analogActionHandleControllerAnalogActionHandle_t您要查询的模拟操作的句柄。

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

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

示例:
ControllerAnalogActionData_t data = SteamController()->GetAnalogActionData( controller1Handle, moveHandle );

GetAnalogActionHandle

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

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

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

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

示例:
ControllerAnalogActionHandle_t moveHandle = SteamController()->GetAnalogActionHandle( "move" );

GetAnalogActionOrigins

int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin *originsOut );
名称类型描述
controllerHandleControllerHandle_t您要查询的控制器句柄。
actionSetHandleControllerActionSetHandle_t您要查询的操作集句柄。
analogActionHandleControllerAnalogActionHandle_t您要查询的模拟操作的句柄。
originsOutEControllerActionOrigin *EControllerActionOrigin 句柄的一个 STEAM_CONTROLLER_MAX_ORIGINS 大小的数组。

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

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

示例:
EControllerActionOrigin *origins = new EControllerActionOrigin[]; SteamController()->GetAnalogActionOrigins( controller1Handle, walkingSetHandle, moveHandle, origins );

GetConnectedControllers

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

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

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

示例:
ControllerHandle_t *controllerHandles = new ControllerHandle_t[]; SteamController()->GetConnectedControllers( controllerHandles );

GetControllerForGamepadIndex

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

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

返回: ControllerHandle_t


示例:
// 用您正在询问的 XInput 槽位代替。 这一数值在 0 至 3 之间 int nXinputSlotIndex = 0; ControllerHandle_t controllerHandle = SteamController()->GetControllerForGamepadIndex( nXinputSlotIndex ); if ( controllerHandle == 0 ) { // 有效句柄不是 0,这是一个普通的 Xobx 控制器 } else { ESteamInputType inputType = SteamController()->GetInputTypeForHandle(controllerHandle); 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

ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle );
名称类型描述
controllerHandleControllerHandle_t您要查询的控制器句柄。

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

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

示例:
ControllerActionSetHandle_t controller1Set = SteamController()->GetCurrentActionSet(controller1Handle);

GetDigitalActionData

ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle );
名称类型描述
controllerHandleControllerHandle_t您要查询的控制器句柄。
digitalActionHandleControllerDigitalActionHandle_t您要查询的数字操作的句柄。

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

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

GetDigitalActionHandle

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

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

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

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

示例:
ControllerDigitalActionHandle_t punchHandle = SteamController()->GetDigitalActionHandle( "punch" );

GetDigitalActionOrigins

int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin *originsOut );
名称类型描述
controllerHandleControllerHandle_t您要查询的控制器句柄。
actionSetHandleControllerActionSetHandle_t您要查询的操作集句柄。
digitalActionHandleControllerDigitalActionHandle_t您要查询的数字操作的句柄。
originsOutEControllerActionOrigin *EControllerActionOrigin 句柄的一个 STEAM_CONTROLLER_MAX_ORIGINS 大小的数组。

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

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

示例:
EControllerActionOrigin *origins = new EControllerActionOrigin[]; SteamController()->GetDigitalActionOrigins( controller1Handle, fightingSetHandle, punchHandle, origins );

GetGamepadIndexForController

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

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

返回: int


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

GetGlyphForActionOrigin

const char * GetGlyphForActionOrigin( EControllerActionOrigin eOrigin );
名称类型描述
eOriginEControllerActionOrigin

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

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

示例:
//获取“punch”的源 EControllerActionOrigin *origins = new EControllerActionOrigin[]; SteamController()->GetDigitalActionOrigins( controller1Handle, fightingSetHandle, punchHandle, origins ); EControllerActionOrigin firstOrigin = origins[0]; //即 k_EControllerActionOrigin_PS4_X //这是游戏自带函数,用来尝试获取自定义字形艺术 int glyphTextureID = getHardCodedButtonGlyphTexture( firstOrigin ); //我们未在我们的游戏中对此源提供任何字形! 我猜测 Steam 已经添加了对一个新控制器的支持 //或者我们只是忘记添加了此艺术作品! //(如:我们只有 Steam 控制器字形,但是这是一个 PlasyStation 4 控制器) if( glyphTextureID == -1 ) { //改为从 Steam 客户端获取图像。 const char *localGlyphPath = SteamController()->GetGlyphForActionOrigin( firstOrigin ); printf( "path = %s\n", localGlyphPath ); // "路径 = C:\Program Files (x86)\Steam\tenfoot\resource\images\library\controller\api\ps4_button_x.png" //将文件路径转为可用游戏纹理的游戏函数 glyphTextureID = loadButtonGlyphTextureFromLocalPath( localGlyphPath ); }

GetInputTypeForHandle

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

返回指定控制器的输入样式(设备型号)。 这能告诉您是否给定控制器为 Steam 控制器、XBox 360 控制器、PS4 控制器等。 参见 Steam 的支持的控制器数据库,了解详情。

返回: ESteamInputType


示例:
ESteamInputType inputType = SteamController()->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

ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle );
名称类型描述
controllerHandleControllerHandle_t您要获得运动数据的控制器句柄。

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

返回: ControllerMotionData_t


示例:
ControllerMotionData_t motionData = SteamController()->GetControllerMotionData( controllerHandle );

GetStringForActionOrigin

const char * GetStringForActionOrigin( EControllerActionOrigin eOrigin );
名称类型描述
eOriginEControllerActionOrigin

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

返回: const char *


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

Init

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

返回: bool
始终返回 true

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

RunFrame

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

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

SetLEDColor

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

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

注意:
VSC 只支持白色,不支持任何其他颜色,并将 RGB 值解释为影响 Steam 按键 LED 的亮度的灰度值。
DS4 对全色信息作出响应,并利用值来设置光条的颜色及亮度。

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

ShowAnalogActionOrigins

bool ShowAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition );
名称类型描述
controllerHandleControllerHandle_t
analogActionHandleControllerAnalogActionHandle_t
flScalefloat
flXPositionfloat
flYPositionfloat

已弃用。

返回: bool
始终返回 true

ShowBindingPanel

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

调用 Steam 界面并打开绑定屏幕。

返回: bool
true 表示成功;如果界面被禁用或不可用,或者用户不在大屏幕模式下,则返回 false。

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

ShowDigitalActionOrigins

bool ShowDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition );
名称类型描述
controllerHandleControllerHandle_t
digitalActionHandleControllerDigitalActionHandle_t
flScalefloat
flXPositionfloat
flYPositionfloat

已弃用。

返回: bool
始终返回 true

Shutdown

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

返回: bool
始终返回 true

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

StopAnalogActionMomentum

void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction );
名称类型描述
controllerHandleControllerHandle_t要影响的控制器的句柄。
eActionControllerAnalogActionHandle_t要停止动量的模拟操作。

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

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

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

TriggerHapticPulse

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

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

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

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

TriggerRepeatedHapticPulse

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

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

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

示例:
//以每次 1/20 秒的开/关脉冲类型,发送 1 秒脉冲 SteamController()->TriggerRepeatedHapticPulse( controller1Handle, k_ESteamControllerPad_Left, 50000, 50000, 10 );

TriggerVibration

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

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

注意:
对于不兼容的控制器型号,此 API 调用将被忽略。
此调用将生成传统的“轰鸣”振动效果。
VSC 将使用其触感模拟传统的轰鸣声。

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

GetActionOriginFromXboxOrigin

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

返回: EControllerActionOrigin

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


示例:
int nXinputSlot = 1; // 为玩家替代正确的 Xinput 槽位 ControllerHandle_t controller1Handle = GetControllerForGamepadIndex( nXinputSlot ); EControllerActionOrigin buttonOrigin = SteamController()->GetActionOriginFromXboxOrigin( controller1Handle, k_EXboxOrigin_A ); // 从 Steam 客户端获取图像。 const char *localGlyphPath = SteamController()->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

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

返回: EControllerActionOrigin

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


示例:
int nXinputSlot = 1; // 为玩家替代正确的 Xinput 槽位 ControllerHandle_t controller1Handle = GetControllerForGamepadIndex( nXinputSlot ); EControllerActionOrigin buttonOrigin = SteamController()->GetActionOriginFromXboxOrigin( controller1Handle, k_EXboxOrigin_A ); //如,k_EControllerActionOrigin_PS4_X if ( buttonOrigin >= k_EControllerActionOrigin_Count ) { // 我们未在我们的游戏中为此源发布任何艺术作品! 我想 Steam 已添加了 // 对一个新控制器的支持。 让我们获取我们使用的 SDK 所支持的最接近值。 buttonOrigin = SteamController()->TranslateActionOrigin( k_ESteamInputType_Unknown, buttonOrigin ) } // 这是游戏自带函数,用来尝试获取自定义字形艺术 int glyphTextureID = getHardCodedButtonGlyphTexture( actionOrigin );

GetControllerBindingRevision

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

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

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

代码示例:
int nMinor = -1; int nMinor = -1; const int nCurrentMajorRevision = 1; const int nCurrentMinorRevision = 1; if ( GetControllerBindingRevision( controllerHandle, &nMajor, &nMinor ) ) { if ( nMinorRevision != nCurrentMinorRevision ) { // 小型更改过期,但仍可用 // 下次编辑配置时将进行修复 } if ( nMajorRevision != nCurrentMajorRevision ) { // 应只在 Steam 检测到时短暂出现 // 然后强制用户更新至最新的官方配置 } } else { // 尚为对此控制器载入该配置 }

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

结构

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

ControllerAnalogActionData_t

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

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

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

ControllerDigitalActionData_t

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

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

ControllerMotionData_t

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

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

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

枚举

以下为定义来与 ISteamController 一起使用的枚举。

EControllerActionOrigin

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

名称描述
k_EControllerActionOrigin_None0
k_EControllerActionOrigin_A1(Valve Steam 控制器)数字正面按键 A
k_EControllerActionOrigin_B2(Valve Steam 控制器)数字正面按键 B
k_EControllerActionOrigin_X3(Valve Steam 控制器)数字正面按键 X
k_EControllerActionOrigin_Y4(Valve Steam 控制器)数字正面按键 Y
k_EControllerActionOrigin_LeftBumper5(Valve Steam 控制器)数字左缓冲键(即 LB 键)
k_EControllerActionOrigin_RightBumper6(Valve Steam 控制器)数字右缓冲键(即 RB 键)
k_EControllerActionOrigin_LeftGrip7(Valve Steam 控制器)数字左握持键
k_EControllerActionOrigin_RightGrip8(Valve Steam 控制器)数字右握持键
k_EControllerActionOrigin_Start9(Valve Steam 控制器)数字开始键
k_EControllerActionOrigin_Back10(Valve Steam 控制器)数字返回键
k_EControllerActionOrigin_LeftPad_Touch11(Valve Steam 控制器)左触控板,单指简单触碰
k_EControllerActionOrigin_LeftPad_Swipe12(Valve Steam 控制器)左触控板,任何轴触碰输入
k_EControllerActionOrigin_LeftPad_Click13(Valve Steam 控制器)左触控板,数字点击(整体)
k_EControllerActionOrigin_LeftPad_DPadNorth14(Valve Steam 控制器)左触控板,数字点击(上象限)
k_EControllerActionOrigin_LeftPad_DPadSouth15(Valve Steam 控制器)左触控板,数字点击(下象限)
k_EControllerActionOrigin_LeftPad_DPadWest16(Valve Steam 控制器)左触控板,数字点击(左象限)
k_EControllerActionOrigin_LeftPad_DPadEast17(Valve Steam 控制器)左触控板,数字点击(右象限)
k_EControllerActionOrigin_RightPad_Touch18(Valve Steam 控制器)右触控板,单指简单触碰
k_EControllerActionOrigin_RightPad_Swipe19(Valve Steam 控制器)右触控板,任何轴触碰输入
k_EControllerActionOrigin_RightPad_Click20(Valve Steam 控制器)右触控板,数字点击(整体)
k_EControllerActionOrigin_RightPad_DPadNorth21(Valve Steam 控制器)右触控板,数字点击(上象限)
k_EControllerActionOrigin_RightPad_DPadSouth22(Valve Steam 控制器)右触控板,数字点击(下象限)
k_EControllerActionOrigin_RightPad_DPadWest23(Valve Steam 控制器)右触控板,数字点击(左象限)
k_EControllerActionOrigin_RightPad_DPadEast24(Valve Steam 控制器)右触控板,数字点击(右象限)
k_EControllerActionOrigin_LeftTrigger_Pull25(Valve Steam 控制器)左模拟扳机键,任何力度扣动(模拟值)
k_EControllerActionOrigin_LeftTrigger_Click26(Valve Steam 控制器)左模拟扳机键,扣动到底(数字值)
k_EControllerActionOrigin_RightTrigger_Pull27(Valve Steam 控制器)右模拟扳机键,任何力度扣动(模拟值)
k_EControllerActionOrigin_RightTrigger_Click28(Valve Steam 控制器)右模拟扳机键,扣动到底(数字值)
k_EControllerActionOrigin_LeftStick_Move29(Valve Steam 控制器)左摇杆,任何轴运动(模拟值)
k_EControllerActionOrigin_LeftStick_Click30(Valve Steam 控制器)左摇杆,点击(数字值)
k_EControllerActionOrigin_LeftStick_DPadNorth31(Valve Steam 控制器)左摇杆,数字运动(上象限)
k_EControllerActionOrigin_LeftStick_DPadSouth32(Valve Steam 控制器)左摇杆,数字运动(下象限)
k_EControllerActionOrigin_LeftStick_DPadWest33(Valve Steam 控制器)左摇杆,数字运动(左象限)
k_EControllerActionOrigin_LeftStick_DPadEast34(Valve Steam 控制器)左摇杆,数字运动(右象限)
k_EControllerActionOrigin_Gyro_Move35(Valve Steam 控制器)陀螺仪,任何轴模拟运动
k_EControllerActionOrigin_Gyro_Pitch36(Valve Steam 控制器)陀螺仪,倾斜轴模拟运动(向上指向天花板,向下指向地板)
k_EControllerActionOrigin_Gyro_Yaw37(Valve Steam 控制器)陀螺仪,偏航轴模拟运动(向左转面对一面墙,向右转面对另一面墙)
k_EControllerActionOrigin_Gyro_Roll38(Valve Steam 控制器)陀螺仪,滚转轴模拟运动(斜向左朝向一边肩膀,斜向右朝向另一边肩膀)
k_EControllerActionOrigin_PS4_X39(Sony Dualshock 4)数字正面 X 键
k_EControllerActionOrigin_PS4_Circle40(Sony Dualshock 4)数字正面圆圈键
k_EControllerActionOrigin_PS4_Triangle41(Sony Dualshock 4)数字正面三角形键
k_EControllerActionOrigin_PS4_Square42(Sony Dualshock 4)数字正面方形键
k_EControllerActionOrigin_PS4_LeftBumper43(Sony Dualshock 4)数字左缓冲键(即 L1 键)
k_EControllerActionOrigin_PS4_RightBumper44(Sony Dualshock 4)数字右缓冲键(即 R1 键)
k_EControllerActionOrigin_PS4_Options45(Sony Dualshock 4)数字 Options 键(即 Start 键)
k_EControllerActionOrigin_PS4_Share46(Sony Dualshock 4)数字 SHARE 键(即返回键)
k_EControllerActionOrigin_PS4_LeftPad_Touch47(Sony Dualshock 4)左半部触摸板,单指简单触碰
k_EControllerActionOrigin_PS4_LeftPad_Swipe48(Sony Dualshock 4)左半部触摸板,任何轴触碰输入
k_EControllerActionOrigin_PS4_LeftPad_Click49(Sony Dualshock 4)左半部触摸板,数字点击(整体)
k_EControllerActionOrigin_PS4_LeftPad_DPadNorth50(Sony Dualshock 4)左半部触摸板,数字点击(上象限)
k_EControllerActionOrigin_PS4_LeftPad_DPadSouth51(Sony Dualshock 4)左半部触摸板,数字点击(下象限)
k_EControllerActionOrigin_PS4_LeftPad_DPadWest52(Sony Dualshock 4)左半部触摸板,数字点击(左象限)
k_EControllerActionOrigin_PS4_LeftPad_DPadEast53(Sony Dualshock 4)左半部触摸板,数字点击(右象限)
k_EControllerActionOrigin_PS4_RightPad_Touch54(Sony Dualshock 4)右半部触摸板,单指简单触碰
k_EControllerActionOrigin_PS4_RightPad_Swipe55(Sony Dualshock 4)左半部触摸板,任何轴触碰输入
k_EControllerActionOrigin_PS4_RightPad_Click56(Sony Dualshock 4)右半部触摸板,数字点击(整体)
k_EControllerActionOrigin_PS4_RightPad_DPadNorth57(Sony Dualshock 4)右半部触摸板,数字点击(上象限)
k_EControllerActionOrigin_PS4_RightPad_DPadSouth58(Sony Dualshock 4)右半部触摸板,数字点击(下象限)
k_EControllerActionOrigin_PS4_RightPad_DPadWest59(Sony Dualshock 4)右半部触摸板,数字点击(左象限)
k_EControllerActionOrigin_PS4_RightPad_DPadEast60(Sony Dualshock 4)右半部触摸板,数字点击(右象限)
k_EControllerActionOrigin_PS4_CenterPad_Touch61(Sony Dualshock 4)统一触摸板,单指简单触碰
k_EControllerActionOrigin_PS4_CenterPad_Swipe62(Sony Dualshock 4)统一触摸板,任何轴触碰输入
k_EControllerActionOrigin_PS4_CenterPad_Click63(Sony Dualshock 4)统一触摸板,数字点击(整体)
k_EControllerActionOrigin_PS4_CenterPad_DPadNorth64(Sony Dualshock 4)统一触摸板,数字点击(上象限)
k_EControllerActionOrigin_PS4_CenterPad_DPadSouth65(Sony Dualshock 4)统一触摸板,数字点击(下象限)
k_EControllerActionOrigin_PS4_CenterPad_DPadWest66(Sony Dualshock 4)统一触摸板,数字点击(左象限)
k_EControllerActionOrigin_PS4_CenterPad_DPadEast67(Sony Dualshock 4)统一触摸板,数字点击(右象限)
k_EControllerActionOrigin_PS4_LeftTrigger_Pull68(Sony Dualshock 4)左模拟扳机键(L2 键),任何力度扣动(模拟值)
k_EControllerActionOrigin_PS4_LeftTrigger_Click69(Sony Dualshock 4)左模拟扳机键(L2 键),扣动到底(数字值)
k_EControllerActionOrigin_PS4_RightTrigger_Pull70(Sony Dualshock 4)右模拟扳机键(R2 键),任何力度扣动(模拟值)
k_EControllerActionOrigin_PS4_RightTrigger_Click71(Sony Dualshock 4)右模拟扳机键(R2 键),扣动到底(数字值)
k_EControllerActionOrigin_PS4_LeftStick_Move72(Sony Dualshock 4)左操作杆,任何轴运动(模拟值)
k_EControllerActionOrigin_PS4_LeftStick_Click73(Sony Dualshock 4)左操作杆,点击(数字值)
k_EControllerActionOrigin_PS4_LeftStick_DPadNorth74(Sony Dualshock 4)左操作杆,数字运动(上象限)
k_EControllerActionOrigin_PS4_LeftStick_DPadSouth75(Sony Dualshock 4)左操作杆,数字运动(下象限)
k_EControllerActionOrigin_PS4_LeftStick_DPadWest76(Sony Dualshock 4)左操作杆,数字运动(左象限)
k_EControllerActionOrigin_PS4_LeftStick_DPadEast77(Sony Dualshock 4)左操作杆,数字运动(右象限)
k_EControllerActionOrigin_PS4_RightStick_Move78(Sony Dualshock 4)右操作杆,任何轴运动(模拟值)
k_EControllerActionOrigin_PS4_RightStick_Click79(Sony Dualshock 4)右操作杆,点击(数字值)
k_EControllerActionOrigin_PS4_RightStick_DPadNorth80(Sony Dualshock 4)右操作杆,数字运动(上象限)
k_EControllerActionOrigin_PS4_RightStick_DPadSouth81(Sony Dualshock 4)右操作杆,数字运动(下象限)
k_EControllerActionOrigin_PS4_RightStick_DPadWest82(Sony Dualshock 4)右操作杆,数字运动(左象限)
k_EControllerActionOrigin_PS4_RightStick_DPadEast83(Sony Dualshock 4)右操作杆,数字运动(右象限)
k_EControllerActionOrigin_PS4_DPad_North84(Sony Dualshock 4)方向键,按下(上象限)
k_EControllerActionOrigin_PS4_DPad_South85(Sony Dualshock 4)方向键,按下(下象限)
k_EControllerActionOrigin_PS4_DPad_West86(Sony Dualshock 4)方向键,按下(左象限)
k_EControllerActionOrigin_PS4_DPad_East87(Sony Dualshock 4)方向键,按下(右象限)
k_EControllerActionOrigin_PS4_Gyro_Move88(Sony Dualshock 4)陀螺仪,任何轴模拟运动
k_EControllerActionOrigin_PS4_Gyro_Pitch89(Sony Dualshock 4)陀螺仪,倾斜轴模拟运动(向上指向天花板,向下指向地板)
k_EControllerActionOrigin_PS4_Gyro_Yaw90(Sony Dualshock 4)陀螺仪,偏航轴模拟运动(向左转面对一面墙,向右转面对另一面墙)
k_EControllerActionOrigin_PS4_Gyro_Roll91(Sony Dualshock 4)陀螺仪,滚转轴模拟运动(斜向左朝向一边肩膀,斜向右朝向另一边肩膀)
k_EControllerActionOrigin_XBoxOne_A92(XB1)数字正面键 A
k_EControllerActionOrigin_XBoxOne_B93(XB1)数字正面键 B
k_EControllerActionOrigin_XBoxOne_X94(XB1)数字正面键 X
k_EControllerActionOrigin_XBoxOne_Y95(XB1)数字正面键 Y
k_EControllerActionOrigin_XBoxOne_LeftBumper96(XB1)数字左缓冲键(即 LB 键)
k_EControllerActionOrigin_XBoxOne_RightBumper97(XB1)数字右缓冲键(即 RB 键)
k_EControllerActionOrigin_XBoxOne_Menu98(XB1)数字菜单键(即 Start 键)
k_EControllerActionOrigin_XBoxOne_View99(XB1)数字视图键(即 Back 键)
k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull100(XB1)左模拟扳机键,任何力度扣动(模拟值)
k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click101(XB1)左模拟扳机键,扣动到底(数字值)
k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull102(XB1)右模拟扳机键,任何力度扣动(模拟值)
k_EControllerActionOrigin_XBoxOne_RightTrigger_Click103(XB1)右模拟扳机键,扣动到底(数字值)
k_EControllerActionOrigin_XBoxOne_LeftStick_Move104(XB1)左摇杆,任何轴运动(模拟值)
k_EControllerActionOrigin_XBoxOne_LeftStick_Click105(XB1)左摇杆,点击(数字值)
k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth106(XB1)左摇杆,数字运动(上象限)
k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth107(XB1)左摇杆,数字运动(下象限)
k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest108(XB1)左摇杆,数字运动(左象限)
k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast109(XB1)左摇杆,数字运动(右象限)
k_EControllerActionOrigin_XBoxOne_RightStick_Move110(XB1)右摇杆,任何轴运动(模拟值)
k_EControllerActionOrigin_XBoxOne_RightStick_Click111(XB1)右摇杆,点击(数字值)
k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth112(XB1)右摇杆,数字运动(上象限)
k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth113(XB1)右摇杆,数字运动(下象限)
k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest114(XB1)右摇杆,数字运动(左象限)
k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast115(XB1)右摇杆,数字运动(右象限)
k_EControllerActionOrigin_XBoxOne_DPad_North116(XB1)方向键,按下(上象限)
k_EControllerActionOrigin_XBoxOne_DPad_South117(XB1)方向键,按下(下象限)
k_EControllerActionOrigin_XBoxOne_DPad_West118(XB1)方向键,按下(左象限)
k_EControllerActionOrigin_XBoxOne_DPad_East119(XB1)方向键,按下(右象限)
k_EControllerActionOrigin_XBox360_A120(X360)数字正面键 A
k_EControllerActionOrigin_XBox360_B121(X360)数字正面键 B
k_EControllerActionOrigin_XBox360_X122(X360)数字正面键 X
k_EControllerActionOrigin_XBox360_Y123(X360)数字正面键 Y
k_EControllerActionOrigin_XBox360_LeftBumper124(X360)数字左缓冲键(即 LB 键)
k_EControllerActionOrigin_XBox360_RightBumper125(X360)数字右缓冲键(即 RB 键)
k_EControllerActionOrigin_XBox360_Start126(X360)数字开始键
k_EControllerActionOrigin_XBox360_Back127(X360)数字返回键
k_EControllerActionOrigin_XBox360_LeftTrigger_Pull128(X360)左模拟扳机键,任何力度扣动(模拟值)
k_EControllerActionOrigin_XBox360_LeftTrigger_Click129(X360)左模拟扳机键,扣动到底(数字值)
k_EControllerActionOrigin_XBox360_RightTrigger_Pull130(X360)右模拟扳机键,任何力度扣动(模拟值)
k_EControllerActionOrigin_XBox360_RightTrigger_Click131(X360)右模拟扳机键,扣动到底(数字值)
k_EControllerActionOrigin_XBox360_LeftStick_Move132(X360)左摇杆,任何轴运动(模拟值)
k_EControllerActionOrigin_XBox360_LeftStick_Click133(X360)左摇杆,点击(数字值)
k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth134(X360)左摇杆,数字运动(上象限)
k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth135(X360)左摇杆,数字运动(下象限)
k_EControllerActionOrigin_XBox360_LeftStick_DPadWest136(X360)左摇杆,数字运动(左象限)
k_EControllerActionOrigin_XBox360_LeftStick_DPadEast137(X360)左摇杆,数字运动(右象限)
k_EControllerActionOrigin_XBox360_RightStick_Move138(X360)右摇杆,任何轴运动(模拟值)
k_EControllerActionOrigin_XBox360_RightStick_Click139(X360)右摇杆,点击(数字值)
k_EControllerActionOrigin_XBox360_RightStick_DPadNorth140(X360)右摇杆,数字运动(上象限)
k_EControllerActionOrigin_XBox360_RightStick_DPadSouth141(X360)右摇杆,数字运动(下象限)
k_EControllerActionOrigin_XBox360_RightStick_DPadWest142(X360)右摇杆,数字运动(左象限)
k_EControllerActionOrigin_XBox360_RightStick_DPadEast143(X360)右摇杆,数字运动(右象限)
k_EControllerActionOrigin_XBox360_DPad_North144(X360)方向键,按下(上象限)
k_EControllerActionOrigin_XBox360_DPad_South145(X360)方向键,按下(下象限)
k_EControllerActionOrigin_XBox360_DPad_West146(X360)方向键,按下(左象限)
k_EControllerActionOrigin_XBox360_DPad_East147(X360)方向键,按下(右象限)
k_EControllerActionOrigin_Count196此枚举中的值的数量,有助于循环访问。

EControllerSource

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

名称描述
k_EControllerSource_None0无控制器源。
k_EControllerSource_LeftTrackpad1左触控板,或者是中央触控板的左半部分。
k_EControllerSource_RightTrackpad2右触控板,或者是中央触控板的右半部分。
k_EControllerSource_Joystick3摇杆,或如存在多个摇杆,则为左摇杆。
k_EControllerSource_ABXY4四个主要正面按键。
k_EControllerSource_Switch5控制器上不属于任何其他指定源的开关/按键 这包括缓冲键、开始/选择键及握持键。 此特殊失配情况不适合更大的范式,因此有其自己的数字按键,也有处理其的相应模式。
k_EControllerSource_LeftTrigger6左模拟扳机键。
k_EControllerSource_RightTrigger7右模拟扳机键。
k_EControllerSource_Gyro8内部陀螺仪。
k_EControllerSource_CenterTrackpad9中央触控板 (仅限 DS4)。
k_EControllerSource_RightJoystick10右摇杆。 如果只有一个摇杆,则不使用此源。
k_EControllerSource_DPad11数字触板。
k_EControllerSource_Key12键盘键(用于带扫描码的键盘)。
k_EControllerSource_Mouse13传统鼠标
k_EControllerSource_Count14枚举的数量,有助于循环访问。

EControllerSourceMode

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

名称描述
k_EControllerSourceMode_None0无输入模式。
k_EControllerSourceMode_Dpad1十字键:四个数字方向键以十字形组合在一起,在任何时候,每个轴上只能按下一个键。
k_EControllerSourceMode_Buttons2
k_EControllerSourceMode_FourButtons3四个数字正面按键,任何一个皆可同时按下。
k_EControllerSourceMode_AbsoluteMouse4
k_EControllerSourceMode_RelativeMouse5
k_EControllerSourceMode_JoystickMove6
k_EControllerSourceMode_JoystickMouse7
k_EControllerSourceMode_JoystickCamera8
k_EControllerSourceMode_ScrollWheel9
k_EControllerSourceMode_Trigger10
k_EControllerSourceMode_TouchMenu11
k_EControllerSourceMode_MouseJoystick12
k_EControllerSourceMode_MouseRegion13
k_EControllerSourceMode_RadialMenu14
k_EControllerSourceMode_SingleButton15
k_EControllerSourceMode_Switches16

ESteamControllerLEDFlag

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

注意:
VSC 有一个 LED,但只有亮度会受到影响(颜色始终为白色)。
DS4 的 LED 为灯条,其颜色和亮度均可配置。

名称描述
k_ESteamControllerLEDFlag_SetColor0将颜色设为指定的值。
k_ESteamControllerLEDFlag_RestoreUserDefault1将颜色恢复为(游戏外)默认设置。

ESteamInputType

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

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

ESteamControllerPad

Steam 控制器设备上的触摸板区域。

注意:
注意:在 VSC 上,这些值对应于左和右触控板。
在 DS4 上,这些值对应于中央单触控板的左半部和右半部。

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

Typedef

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

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

常量

以下为定义来与 ISteamController 一起使用的常量。

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