Документация Steamworks
Интерфейс ISteamInput
API ввода Steam — это гибкий, основанный на действиях API, который поддерживает основные типы контроллеров: Xbox, PlayStation, Nintendo Switch Pro и Steam Controller.

Дополнительная информация доступна здесь: Система ввода Steam

Функции-члены

Функции-члены ISteamInput вызываются с помощью глобальной функции доступа 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*Должно указывать на массив InputHandle_t размером STEAM_CONTROLLER_MAX_COUNT.

Заполните массив всеми активными в текущий момент слоями набора действий для дескриптора определённого контроллера.

Пример:
InputHandle_t *handlesOut = new InputHandle_t []; SteamInput()->GetActiveActionSetLayers( inputHandle1, &handlesOut );

GetActionSetHandle

InputActionSetHandle_t GetActionSetHandle( const char *pszActionSetName );
НазваниеТипОписание
pszActionSetNameconst char *Строковой идентификатор набора действий, заданный в .vdf-файле игры.

Поиск дескриптора набора действий. Лучше всего выполнять его при запуске и хранить дескрипторы для всех будущих вызовов.

Возвращает: 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-файле должен быть присвоен уникальный строковый идентификатор. Другими словами, если вы используете действие с названием «up» в двух различных наборах действий, эта функция вернёт только один из них, а другое будет проигнорировано.

Возвращает: 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.

Получает источники аналогового действия в наборе действий, заполняя originsOut дескрипторами EControllerActionOrigin. Используйте, чтобы отобразить соответствующую экранную подсказку для действия.

Возвращает: int
Число источников, предоставленных в originsOut.

Пример:
EInputActionOrigin *origins = new EInputActionOrigin[]; SteamInput()->GetAnalogActionOrigins( controller1Handle, walkingSetHandle, moveHandle, origins );

GetConnectedControllers

int GetConnectedControllers( InputHandle_t *handlesOut );
НазваниеТипОписание
handlesOutInputHandle_t *Должно указывать на массив InputHandle_t размером STEAM_CONTROLLER_MAX_COUNT.

Перечисляет подключенные в данный момент контроллеры, заполняя handlesOut дескрипторами контроллеров.

Возвращает: int
Число дескрипторов, записываемых в handlesOut.

Пример:
InputHandle_t *inputHandles = new InputHandle_t[]; 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 ) { // Допустимые дескрипторы ввода (Input handles) являются ненулевыми, это стандартный контроллер 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-файле должен быть присвоен уникальный строковый идентификатор. Другими словами, если вы используете действие с названием «up» в двух различных наборах действий, эта функция вернёт только один из них, а другое будет проигнорировано.

Возвращает: 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.

Получает источник(и) цифрового действия в наборе действий, заполняя originsOut дескрипторами EControllerActionOrigin. Используйте, чтобы отобразить соответствующую экранную подсказку для действия.

Возвращает: int
Число источников, предоставленных в originsOut.

Пример:
EInputActionOrigin *origins = new EInputActionOrigin[]; 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

Получает локальный путь к изображению экранной подсказки для определённого источника (origin).

Возвращает: const char *
Путь к png-файлу иконки.
Например: "C:\Program Files (x86)\Steam\tenfoot\resource\images\library\controller\api\ps4_button_x.png"

Пример:
// Получает источники для punch EInputActionOrigin *origins = new EInputActionOrigin[]; SteamInput()->GetDigitalActionOrigins( controller1Handle, fightingSetHandle, punchHandle, origins ); EInputActionOrigin firstOrigin = origins[0]; //i.e, k_EInputActionOrigin_PS4_X // Это функция из самой игры, пытающаяся получить пользовательское изображение иконки int glyphTextureID = getHardCodedButtonGlyphTexture( firstOrigin ); // В игре нет изображений для этого источника ввода! Вероятно, 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 Controller, контроллер 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[]; 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 с последними доступными элементами ввода контроллера. Это автоматически выполняется 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 intФлаги в виде битовых масок, полученные из значений, определённых в ESteamControllerLEDFlag.

Устанавливает цвет индикатора на поддерживаемых контроллерах.

Примечания:
VSC поддерживает только белый цвет и интерпретирует значения цветов RGB как оттенки серого, влияя на яркость светодиодного индикатора кнопки Steam.
DS4 реагирует на всю информацию о цвете и использует полученные значения для настройки цвета и яркости световой панели.

Пример:
// Восстанавливает стандартный пользовательский цвет для контроллера 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, если оверлей отключён или недоступен. Если пользователь играет в режиме Big Picture, экран настройки откроется в оверлее. В режиме рабочего стола будет создано всплывающее окно режима Big Picture, в котором откроется экран настройки.

Пример:
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Продолжительность импульса в микросекундах (миллионных долях секунды).

Запускает тактильную отдачу (на низком уровне) на поддерживающих эту функцию контроллерах.

Примечание:
Сейчас только VSC поддерживает тактильную отдачу.
Для остальных моделей контроллеров вызов этого API будет проигнорирован.
Обычно максимальное значение unsigned short — 65 535. Это означает, что самая долгая тактильная отдача при помощи этого способа может равняться 0,065535 секундам (менее 1/10 секунды). Эту функцию следует рассматривать как низкоуровневый примитив, предназначенный для многократного использования на более высоких уровнях, чтобы сгенерировать более сложное поведение.

Пример:
//Единоразовый импульс продолжительностью 1/20 секунды SteamController()->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Продолжительность импульса в микросекундах (одна миллионная доля секунды).
usOffMicroSecunsigned shortПродолжительность паузы между импульсами в микросекундах.
unRepeatunsigned shortЧисло повторов цикла usDurationMicroSec/usOffMicroSec.
nFlagsunsigned intСейчас не используется, параметр сохранён на будущее.

Запускает повторяющиеся импульсы тактильной отдачи на поддерживаемых контроллерах.

Примечание:
Сейчас импульсы тактильной отдачи поддерживаются только на Steam Controller, Steam Deck и Nintendo Switch Pro.
Для остальных моделей контроллеров вызов этого API будет проигнорирован.
Эта функция удобнее, чем TriggerHapticPulse, так как создаёт достаточно длинные и более заметные для пользователя последовательности импульсов.
Изменение параметров usDurationMicroSec и usOffMicroSec задаёт «фактуру» импульсов тактической отдачи.

Пример:
//Пульсация в течение одной секунды, каждый цикл включения/выключения пульсов имеет продолжительность 1/20 секунды SteamController()->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 будет проигнорирован.
Создаёт стандартный эффект вибрации.
VSC эмулирует традиционную вибрацию с помощью тактильной отдачи.

Пример:
SteamInput()->TriggerVibration( controller1Handle, 10000, 10000 );

TriggerVibrationExtended

void TriggerVibrationExtended( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed );
НазваниеТипОписание
inputHandleInputHandle_tДескриптор контроллера, на который вы хотите воздействовать.
usLeftSpeedunsigned shortЗначение интенсивности для левого моторчика вибрации.
usRightSpeedunsigned shortЗначение интенсивности для правого моторчика вибрации.
usLeftTriggerSpeedunsigned shortЗначение интенсивности для левого импульсного триггера Xbox.
usRightTriggerSpeedunsigned shortЗначение интенсивности для правого импульсного триггера Xbox.

Активирует вибрацию на поддерживаемых контроллерах, в том числе импульсные триггеры Xbox.

Примечание:
Для поддержки настройки вибрации импульсных триггеров Xbox на Windows необходимо установить драйвер Xbox Extended Feature support.
Steam Controller и 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 ); // "path = 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Тип контроллера, для которого вы адаптируете действие. Steam выберет наиболее подходящий тип из вашей версии SDK, если используется k_ESteamInputType_Unknown.
eSourceOriginEInputActionOriginКнопка, которую вы настраиваете.

Возвращает: EInputActionOrigin

Получает эквивалент источника для данного или максимально похожего типа контроллера из SDK в вашей игре, если значение параметра eDestinationInputType равно k_ESteamInputType_Unknown. Этот источник действия можно использовать для поиска по таблице иконок или передать функциям 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 = SteamController()->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, если раскладка ещё не загрузилась.

Получает основную и второстепенную версии раскладок устройств для API ввода Steam. Основные версии раскладок предназначены для случаев, когда меняется число наборов действий или раскладки обновляются таким образом, что предыдущие версии больше нельзя использовать. 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 Remote Play

Получает идентификатор сессии Steam Remote Play, связанной с устройством. Если такой сессии нет, возвращает 0. Больше информации о сессиях Remote Play можно найти в описании isteamremoteplay.h.

Структуры

Приведённые ниже структуры могут быть возвращены функциями ISteamInput, а также эти функции могут с ними взаимодействовать.

InputAnalogActionData_t

Содержит текущее состояние аналогового действия.

Примечания:
  • Точные значения, диапазоны и проч. зависят от настроек, но (в широком смысле) традиционные аналоговые действия должны отдавать нормированные float-значения в интервале от -1,0 до 1,0, а действия, подобные действиям мыши, должны отдавать дельты изменений, которые показывают число пикселей движения по отношению к предыдущему кадру. Подобные мыши действия отдают x и y с большими абсолютными значениями и относительны к последней записанной позиции, в то время как традиционные аналоговые действия обладают меньшими значениями и относительны к центральному якорю.
  • Хотя дельты, отдаваемые подобными мыши действиями, подобны пиксельным дельтам, предоставляемым ОС, дельты контроллеров являются числами в формате float, a не int. Соответственно, при привязывании этих данных к вращению камеры меньше теряется точность и происходит меньшая дискретизация.
  • В случае с одноосными элементами ввода (к примеру, аналоговыми триггерами), данные будет содержать только ось x, а значение по y всегда будет равно нулю.

НазваниеТипОписание
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 м/с2).

Угловая скорость передаётся в виде интерполированного значения в диапазоне между 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.

Список перечислений (enum)

Далее приведён список перечислений, которые определены для использования с ISteamInput.

EInputActionOrigin

Данные ввода, которые игрок привязывает к действиям в интерфейсе настройки ввода Steam. Основная цель этих значений — указать, какие экранные иконки кнопок должны отображаться для определённого действия, например «Для прыжка нажмите [A]».

НазваниеЗначениеОписание
k_EInputActionOrigin_None0
k_EInputActionOrigin_A1Valve Steam Controller: цифровая лицевая кнопка A.
k_EInputActionOrigin_B2Valve Steam Controller: цифровая лицевая кнопка B.
k_EInputActionOrigin_X3Valve Steam Controller: цифровая лицевая кнопка X.
k_EInputActionOrigin_Y4Valve Steam Controller: цифровая лицевая кнопка Y.
k_EInputActionOrigin_LeftBumper5Valve Steam Controller: цифровой левый бампер.
k_EInputActionOrigin_RightBumper6Valve Steam Controller: цифровой правый бампер.
k_EInputActionOrigin_LeftGrip7Valve Steam Controller: цифровой левый хват.
k_EInputActionOrigin_RightGrip8Valve Steam Controller: цифровой правый хват.
k_EInputActionOrigin_Start9Valve Steam Controller: цифровая кнопка «Старт».
k_EInputActionOrigin_Back10Valve Steam Controller: цифровая кнопка «Назад».
k_EInputActionOrigin_LeftPad_Touch11Valve Steam Controller: левый тачпад с тактильной отдачей, касание.
k_EInputActionOrigin_LeftPad_Swipe12Valve Steam Controller: левый тачпад с тактильной отдачей, сенсорный ввод по любой оси.
k_EInputActionOrigin_LeftPad_Click13Valve Steam Controller: левый тачпад с тактильной отдачей, цифровое нажатие (на весь тачпад).
k_EInputActionOrigin_LeftPad_DPadNorth14Valve Steam Controller: левый тачпад с тактильной отдачей, цифровое нажатие (на область вверху).
k_EInputActionOrigin_LeftPad_DPadSouth15Valve Steam Controller: левый тачпад с тактильной отдачей, цифровое нажатие (на область внизу).
k_EInputActionOrigin_LeftPad_DPadWest16Valve Steam Controller: левый тачпад с тактильной отдачей, цифровое нажатие (на область слева).
k_EInputActionOrigin_LeftPad_DPadEast17Valve Steam Controller: левый тачпад с тактильной отдачей, цифровое нажатие (на область справа).
k_EInputActionOrigin_RightPad_Touch18Valve Steam Controller: правый тачпад с тактильной отдачей, касание.
k_EInputActionOrigin_RightPad_Swipe19Valve Steam Controller: правый тачпад с тактильной отдачей, сенсорный ввод по любой оси.
k_EInputActionOrigin_RightPad_Click20Valve Steam Controller: правый тачпад с тактильной отдачей, цифровое нажатие (на весь тачпад).
k_EInputActionOrigin_RightPad_DPadNorth21Valve Steam Controller: правый тачпад с тактильной отдачей, цифровое нажатие (на область вверху).
k_EInputActionOrigin_RightPad_DPadSouth22Valve Steam Controller: правый тачпад с тактильной отдачей, цифровое нажатие (на область внизу).
k_EInputActionOrigin_RightPad_DPadWest23Valve Steam Controller: правый тачпад с тактильной отдачей, цифровое нажатие (на область слева).
k_EInputActionOrigin_RightPad_DPadEast24Valve Steam Controller: правый тачпад с тактильной отдачей, цифровое нажатие (на область справа).
k_EInputActionOrigin_LeftTrigger_Pull25Valve Steam Controller: левый аналоговый триггер, нажатие любой интенсивности (аналоговое значение).
k_EInputActionOrigin_LeftTrigger_Click26Valve Steam Controller: левый аналоговый триггер, нажатие максимальной интенсивности (цифровое значение).
k_EInputActionOrigin_RightTrigger_Pull27Valve Steam Controller: правый аналоговый триггер, нажатие любой интенсивности (аналоговое значение).
k_EInputActionOrigin_RightTrigger_Click28Valve Steam Controller: правый аналоговый триггер, нажатие максимальной интенсивности (цифровое значение).
k_EInputActionOrigin_LeftStick_Move29Valve Steam Controller: левый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_LeftStick_Click30Valve Steam Controller: левый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_LeftStick_DPadNorth31Valve Steam Controller: левый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_LeftStick_DPadSouth32Valve Steam Controller: левый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_LeftStick_DPadWest33Valve Steam Controller: левый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_LeftStick_DPadEast34Valve Steam Controller: левый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_Gyro_Move35Valve Steam Controller: гироскоп, аналоговое движение по любой оси.
k_EInputActionOrigin_Gyro_Pitch36Valve Steam Controller: гироскоп, аналоговое движение по оси тангажа (отклонение вверх к потолку, вниз — к полу).
k_EInputActionOrigin_Gyro_Yaw37Valve Steam Controller: гироскоп, аналоговое движение по оси рысканья (поворот налево к одной стене, направо — к противоположной).
k_EInputActionOrigin_Gyro_Roll38Valve Steam Controller: гироскоп, аналоговое движение по оси крена (наклоны влево и вправо).
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_X50Sony Dualshock 4: цифровая лицевая кнопка X.
k_EInputActionOrigin_PS4_Circle51Sony Dualshock 4: цифровая лицевая кнопка ◯.
k_EInputActionOrigin_PS4_Triangle52Sony Dualshock 4: цифровая лицевая кнопка △.
k_EInputActionOrigin_PS4_Square53Sony Dualshock 4: цифровая лицевая кнопка ⬜.
k_EInputActionOrigin_PS4_LeftBumper54Sony Dualshock 4: левый цифровой бампер.
k_EInputActionOrigin_PS4_RightBumper55Sony Dualshock 4: правый цифровой бампер.
k_EInputActionOrigin_PS4_Options56Sony Dualshock 4: цифровая кнопка OPTIONS (или «Старт»).
k_EInputActionOrigin_PS4_Share57Sony Dualshock 4: цифровая кнопка SHARE (или «Назад»).
k_EInputActionOrigin_PS4_LeftPad_Touch58Sony Dualshock 4: левая половина тачпада, касание.
k_EInputActionOrigin_PS4_LeftPad_Swipe59Sony Dualshock 4: левая половина тачпада, сенсорный ввод по любой оси.
k_EInputActionOrigin_PS4_LeftPad_Click60Sony Dualshock 4: левая половина тачпада, цифровое нажатие (на весь тачпад).
k_EInputActionOrigin_PS4_LeftPad_DPadNorth61Sony Dualshock 4: левая половина тачпада, цифровое нажатие (на область вверху).
k_EInputActionOrigin_PS4_LeftPad_DPadSouth62Sony Dualshock 4: левая половина тачпада, цифровое нажатие (на область внизу).
k_EInputActionOrigin_PS4_LeftPad_DPadWest63Sony Dualshock 4: левая половина тачпада, цифровое нажатие (на область слева).
k_EInputActionOrigin_PS4_LeftPad_DPadEast64Sony Dualshock 4: левая половина тачпада, цифровое нажатие (на область справа).
k_EInputActionOrigin_PS4_RightPad_Touch65Sony Dualshock 4: правая половина тачпада, касание.
k_EInputActionOrigin_PS4_RightPad_Swipe66Sony Dualshock 4: правая половина тачпада, сенсорный ввод по любой оси.
k_EInputActionOrigin_PS4_RightPad_Click67Sony Dualshock 4: правая половина тачпада, цифровое нажатие (на весь тачпад).
k_EInputActionOrigin_PS4_RightPad_DPadNorth68Sony Dualshock 4: правая половина тачпада, цифровое нажатие (на область вверху).
k_EInputActionOrigin_PS4_RightPad_DPadSouth69Sony Dualshock 4: правая половина тачпада, цифровое нажатие (на область внизу).
k_EInputActionOrigin_PS4_RightPad_DPadWest70Sony Dualshock 4: правая половина тачпада, цифровое нажатие (на область слева).
k_EInputActionOrigin_PS4_RightPad_DPadEast71Sony Dualshock 4: правая половина тачпада, цифровое нажатие (на область справа).
k_EInputActionOrigin_PS4_CenterPad_Touch72Sony Dualshock 4: объединённый тачпад, касание.
k_EInputActionOrigin_PS4_CenterPad_Swipe73Sony Dualshock 4: объединённый тачпад, сенсорный ввод по любой оси.
k_EInputActionOrigin_PS4_CenterPad_Click74Sony Dualshock 4: объединённый тачпад, цифровое нажатие (на весь тачпад).
k_EInputActionOrigin_PS4_CenterPad_DPadNorth75Sony Dualshock 4: объединённый тачпад, цифровое нажатие (на область вверху).
k_EInputActionOrigin_PS4_CenterPad_DPadSouth76Sony Dualshock 4: объединённый тачпад, цифровое нажатие (на область внизу).
k_EInputActionOrigin_PS4_CenterPad_DPadWest77Sony Dualshock 4: объединённый тачпад, цифровое нажатие (на область слева).
k_EInputActionOrigin_PS4_CenterPad_DPadEast78Sony Dualshock 4: объединённый тачпад, цифровое нажатие (на область справа).
k_EInputActionOrigin_PS4_LeftTrigger_Pull79Sony Dualshock 4: левый аналоговый триггер, нажатие любой интенсивности (аналоговое значение).
k_EInputActionOrigin_PS4_LeftTrigger_Click80Sony Dualshock 4: левый аналоговый триггер, нажатие максимальной интенсивности (цифровое значение).
k_EInputActionOrigin_PS4_RightTrigger_Pull81Sony Dualshock 4: правый аналоговый триггер, нажатие любой интенсивности (аналоговое значение).
k_EInputActionOrigin_PS4_RightTrigger_Click82Sony Dualshock 4: правый аналоговый триггер, нажатие максимальной интенсивности (цифровое значение).
k_EInputActionOrigin_PS4_LeftStick_Move83Sony Dualshock 4: левый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_PS4_LeftStick_Click84Sony Dualshock 4: левый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_PS4_LeftStick_DPadNorth85Sony Dualshock 4: левый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_PS4_LeftStick_DPadSouth86Sony Dualshock 4: левый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_PS4_LeftStick_DPadWest87Sony Dualshock 4: левый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_PS4_LeftStick_DPadEast88Sony Dualshock 4: левый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_PS4_RightStick_Move89Sony Dualshock 4: правый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_PS4_RightStick_Click90Sony Dualshock 4: правый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_PS4_RightStick_DPadNorth91Sony Dualshock 4: правый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_PS4_RightStick_DPadSouth92Sony Dualshock 4: правый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_PS4_RightStick_DPadWest93Sony Dualshock 4: правый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_PS4_RightStick_DPadEast94Sony Dualshock 4: правый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_PS4_DPad_North95Sony Dualshock 4: крестовина, нажатие (на область вверху).
k_EInputActionOrigin_PS4_DPad_South96Sony Dualshock 4: крестовина, нажатие (на область внизу).
k_EInputActionOrigin_PS4_DPad_West97Sony Dualshock 4: крестовина, нажатие (на область слева).
k_EInputActionOrigin_PS4_DPad_East98Sony Dualshock 4: крестовина, нажатие (на область справа).
k_EInputActionOrigin_PS4_Gyro_Move99Sony Dualshock 4: гироскоп, аналоговое движение по любой оси.
k_EInputActionOrigin_PS4_Gyro_Pitch100Sony Dualshock 4: гироскоп, аналоговое движение по оси тангажа (отклонение вверх к потолку, вниз — к полу).
k_EInputActionOrigin_PS4_Gyro_Yaw101Sony Dualshock 4: гироскоп, аналоговое движение по оси рысканья (поворот налево к одной стене, направо — к противоположной).
k_EInputActionOrigin_PS4_Gyro_Roll102Sony 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_A114XB1: цифровая лицевая кнопка A.
k_EInputActionOrigin_XBoxOne_B115XB1: цифровая лицевая кнопка B.
k_EInputActionOrigin_XBoxOne_X116XB1: цифровая лицевая кнопка X.
k_EInputActionOrigin_XBoxOne_Y117XB1: цифровая лицевая кнопка Y.
k_EInputActionOrigin_XBoxOne_LeftBumper118XB1: цифровой левый бампер.
k_EInputActionOrigin_XBoxOne_RightBumper119XB1: цифровой правый бампер.
k_EInputActionOrigin_XBoxOne_Menu120XB1: цифровая кнопка Menu (или «Старт»).
k_EInputActionOrigin_XBoxOne_View121XB1: цифровая кнопка View (или «Назад»).
k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull122XB1: левый аналоговый триггер, нажатие любой интенсивности (аналоговое значение).
k_EInputActionOrigin_XBoxOne_LeftTrigger_Click123XB1: левый аналоговый триггер, нажатие максимальной интенсивности (цифровое значение).
k_EInputActionOrigin_XBoxOne_RightTrigger_Pull124XB1: правый аналоговый триггер, нажатие любой интенсивности (аналоговое значение).
k_EInputActionOrigin_XBoxOne_RightTrigger_Click125XB1: правый аналоговый триггер, нажатие максимальной интенсивности (цифровое значение).
k_EInputActionOrigin_XBoxOne_LeftStick_Move126XB1: левый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_XBoxOne_LeftStick_Click127XB1: левый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth128XB1: левый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth129XB1: левый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest130XB1: левый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast131XB1: левый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_XBoxOne_RightStick_Move132XB1: правый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_XBoxOne_RightStick_Click133XB1: правый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth134XB1: правый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth135XB1: правый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_XBoxOne_RightStick_DPadWest136XB1: правый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_XBoxOne_RightStick_DPadEast137XB1: правый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_XBoxOne_DPad_North138XB1: крестовина, нажатие (на область вверху).
k_EInputActionOrigin_XBoxOne_DPad_South139XB1: крестовина, нажатие (на область внизу).
k_EInputActionOrigin_XBoxOne_DPad_West140XB1: крестовина, нажатие (на область слева).
k_EInputActionOrigin_XBoxOne_DPad_East141XB1: крестовина, нажатие (на область справа).
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_A153X360: цифровая лицевая кнопка A.
k_EInputActionOrigin_XBox360_B154X360: цифровая лицевая кнопка B.
k_EInputActionOrigin_XBox360_X155X360: цифровая лицевая кнопка X.
k_EInputActionOrigin_XBox360_Y156X360: цифровая лицевая кнопка Y.
k_EInputActionOrigin_XBox360_LeftBumper157X360: цифровой левый бампер.
k_EInputActionOrigin_XBox360_RightBumper158X360: цифровой правый бампер.
k_EInputActionOrigin_XBox360_Start159X360: цифровая кнопка Start.
k_EInputActionOrigin_XBox360_Back160X360: цифровая кнопка Back.
k_EInputActionOrigin_XBox360_LeftTrigger_Pull161X360: левый аналоговый триггер, нажатие любой интенсивности (аналоговое значение).
k_EInputActionOrigin_XBox360_LeftTrigger_Click162X360: левый аналоговый триггер, нажатие максимальной интенсивности (цифровое значение).
k_EInputActionOrigin_XBox360_RightTrigger_Pull163X360: правый аналоговый триггер, нажатие любой интенсивности (аналоговое значение).
k_EInputActionOrigin_XBox360_RightTrigger_Click164X360: правый аналоговый триггер, нажатие максимальной интенсивности (цифровое значение).
k_EInputActionOrigin_XBox360_LeftStick_Move165X360: левый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_XBox360_LeftStick_Click166X360: левый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_XBox360_LeftStick_DPadNorth167X360: левый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_XBox360_LeftStick_DPadSouth168X360: левый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_XBox360_LeftStick_DPadWest169X360: левый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_XBox360_LeftStick_DPadEast170X360: левый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_XBox360_RightStick_Move171X360: правый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_XBox360_RightStick_Click172X360: правый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_XBox360_RightStick_DPadNorth173X360: правый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_XBox360_RightStick_DPadSouth174X360: правый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_XBox360_RightStick_DPadWest175X360: правый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_XBox360_RightStick_DPadEast176X360: правый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_XBox360_DPad_North177X360: крестовина, нажатие (на область вверху).
k_EInputActionOrigin_XBox360_DPad_South178X360: крестовина, нажатие (на область внизу).
k_EInputActionOrigin_XBox360_DPad_West179X360: крестовина, нажатие (на область слева).
k_EInputActionOrigin_XBox360_DPad_East180X360: крестовина, нажатие (на область справа).
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_A192Nintendo Switch Pro: цифровая лицевая кнопка A.
k_EInputActionOrigin_Switch_B193Nintendo Switch Pro: цифровая лицевая кнопка B.
k_EInputActionOrigin_Switch_X194Nintendo Switch Pro: цифровая лицевая кнопка X.
k_EInputActionOrigin_Switch_Y195Nintendo Switch Pro: цифровая лицевая кнопка Y.
k_EInputActionOrigin_Switch_LeftBumper196Nintendo Switch Pro: цифровой левый бампер.
k_EInputActionOrigin_Switch_RightBumper197Nintendo Switch Pro: цифровой правый бампер.
k_EInputActionOrigin_Switch_Plus198Nintendo Switch Pro: кнопка «Плюс».
k_EInputActionOrigin_Switch_Minus199Nintendo Switch Pro: кнопка «Минус».
k_EInputActionOrigin_Switch_Capture200Nintendo Switch Pro: цифровая кнопка захвата кадра.
k_EInputActionOrigin_Switch_LeftTrigger_Pull201Nintendo Switch Pro: левый триггер, нажатие.
k_EInputActionOrigin_Switch_LeftTrigger_Click202Nintendo Switch Pro: левый триггер, нажатие (совпадает с предыдущим значением).
k_EInputActionOrigin_Switch_RightTrigger_Pull203Nintendo Switch Pro: правый триггер, нажатие.
k_EInputActionOrigin_Switch_RightTrigger_Click204Nintendo Switch Pro: правый триггер, нажатие (совпадает с предыдущим значением).
k_EInputActionOrigin_Switch_LeftStick_Move205Nintendo Switch Pro: левый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_Switch_LeftStick_Click206Nintendo Switch Pro: левый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_Switch_LeftStick_DPadNorth207Nintendo Switch Pro: левый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_Switch_LeftStick_DPadSouth208Nintendo Switch Pro: левый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_Switch_LeftStick_DPadWest209Nintendo Switch Pro: левый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_Switch_LeftStick_DPadEast210Nintendo Switch Pro: левый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_Switch_RightStick_Move211Nintendo Switch Pro: правый джойстик, движение по любой оси (аналоговое значение).
k_EInputActionOrigin_Switch_RightStick_Click212Nintendo Switch Pro: правый джойстик, нажатие (цифровое значение).
k_EInputActionOrigin_Switch_RightStick_DPadNorth213Nintendo Switch Pro: правый джойстик, цифровое движение (в области вверху).
k_EInputActionOrigin_Switch_RightStick_DPadSouth214Nintendo Switch Pro: правый джойстик, цифровое движение (в области внизу).
k_EInputActionOrigin_Switch_RightStick_DPadWest215Nintendo Switch Pro: правый джойстик, цифровое движение (в области слева).
k_EInputActionOrigin_Switch_RightStick_DPadEast216Nintendo Switch Pro: правый джойстик, цифровое движение (в области справа).
k_EInputActionOrigin_Switch_DPad_North217Nintendo Switch Pro: крестовина, нажатие (на область вверху).
k_EInputActionOrigin_Switch_DPad_South218Nintendo Switch Pro: крестовина, нажатие (на область внизу).
k_EInputActionOrigin_Switch_DPad_West219Nintendo Switch Pro: крестовина, нажатие (на область слева).
k_EInputActionOrigin_Switch_DPad_East220Nintendo Switch Pro: крестовина, нажатие (на область справа).
k_EInputActionOrigin_SwitchProGyro_Move221Nintendo Switch Pro: гироскоп, аналоговое движение по любой оси.
k_EInputActionOrigin_SwitchProGyro_Pitch222Nintendo Switch Pro: гироскоп, аналоговое движение по оси тангажа (отклонение вверх к потолку, вниз — к полу).
k_EInputActionOrigin_SwitchProGyro_Yaw223Nintendo Switch Pro: гироскоп, аналоговое движение по оси рысканья (поворот налево к одной стене, направо — к противоположной).
k_EInputActionOrigin_SwitchProGyro_Roll224Nintendo 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

Область контроллера, рассматриваемая как более крупный абстрактный модульный блок, к которому можно применять один из режимов, и при этом будут получены данные вывода. Например, джойстик может восприниматься как один аналоговый элемент ввода, а может быть разделён на четыре цифровых элемента, составляющих виртуальную крестовину. Также и лицевые кнопки формируют группу, которая может восприниматься либо как четыре отдельные кнопки, либо как составляющие виртуальной крестовины.

НазваниеЗначениеОписание
k_EInputSource_None0Нет ввода с контроллера.
k_EInputSource_LeftTrackpad1Левый тачпад или левая часть центрального тачпада.
k_EInputSource_RightTrackpad2Правый тачпад или правая часть центрального тачпада.
k_EInputSource_Joystick3Джойстик. Если джойстиков несколько — левый джойстик.
k_EInputSource_ABXY4Четыре основные лицевые кнопки.
k_EInputSource_Switch5Переключатели/кнопки на контроллере, которые не относятся к какому-либо другому конкретному источнику, в том числе бамперы, кнопки Start и Select, а также хваты. Это особый случай, при котором переключатели и кнопки не вписываются в более широкую парадигму и поэтому у них есть собственный источник цифровых кнопок и соответствующий режим их обработки.
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 Controller (если он есть у устройства).

Примечание:
У VSC есть светодиод, однако будет меняться только его яркость (цвет всегда остаётся белым).
Светодиод DS4 представляет собой световую панель, для которой можно настроить как цвет, так и яркость.

НазваниеЗначениеОписание
k_ESteamControllerLEDFlag_SetColor0Устанавливает указанные значения цвета.
k_ESteamControllerLEDFlag_RestoreUserDefault1Восстанавливает стандартные (внеигровые) настройки цвета.

ESteamInputType

Обозначает модель для данного устройства.

НазваниеЗначениеОписание
k_ESteamInputType_Unknown0Единое значение для нераспознанных устройств.
k_ESteamInputType_SteamController1Steam Controller от Valve.
k_ESteamInputType_XBox360Controller2Контроллер Xbox 360 от Microsoft.
k_ESteamInputType_XBoxOneController3Контроллер Xbox One от Microsoft.
k_ESteamInputType_GenericXInput4Любое стороннее устройство с поддержкой XInput.
k_ESteamInputType_PS4Controller5Контроллер PlayStation 4 от Sony.
k_ESteamInputType_AppleMFiController6Не используется.
k_ESteamInputType_AndroidController7Не используется.
k_ESteamInputType_SwitchJoyConPair8Не используется.
k_ESteamInputType_SwitchJoyConSingle9Не используется.
k_ESteamInputType_SwitchProController10Контроллер Nintendo Switch Pro.
k_ESteamInputType_MobileTouch11Сенсорный контроллер в приложении Steam Link.
k_ESteamInputType_PS3Controller12Контроллер PlayStation 3 от Sony или совместимый с PS3/PS4 файтстик.
k_ESteamInputType_Count13Текущее число возвращаемых значений.
k_ESteamInputType_MaximumPossibleValue255Максимальное число возвращаемых значений.

ESteamControllerPad

Область тачпада на устройстве Steam Controller.

Примечание:
Для VSC значения соответствуют левому и правому тачпаду с тактильной отдачей.
Для DS4 значения соответствуют левой и правой половине единого центрального тачпада.

НазваниеЗначениеОписание
k_ESteamControllerPad_Left0Область левого тачпада на Steam Controller. Совместимые модели: VSC, DS4.
k_ESteamControllerPad_Right1Область правого тачпада на Steam Controller. Совместимые модели: VSC, DS4.

Typedefs

Далее приведён список объявлений typedef, которые определены для использования с ISteamInput.

НазваниеБазовый типОписание
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Минимальное значение, которое может быть передано аналоговым действием по одной оси.