Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/lib/linux/include/steam/isteamcontroller.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/linux/include/steam/isteamcontroller.h')
-rw-r--r--lib/linux/include/steam/isteamcontroller.h251
1 files changed, 251 insertions, 0 deletions
diff --git a/lib/linux/include/steam/isteamcontroller.h b/lib/linux/include/steam/isteamcontroller.h
new file mode 100644
index 0000000..68f7af6
--- /dev/null
+++ b/lib/linux/include/steam/isteamcontroller.h
@@ -0,0 +1,251 @@
+//====== Copyright 1996-2013, Valve Corporation, All rights reserved. =======
+//
+// Purpose: interface to valve controller
+//
+//=============================================================================
+
+#ifndef ISTEAMCONTROLLER_H
+#define ISTEAMCONTROLLER_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "isteamclient.h"
+
+#define STEAM_CONTROLLER_MAX_COUNT 16
+
+#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 16
+
+#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 128
+
+#define STEAM_CONTROLLER_MAX_ORIGINS 8
+
+// When sending an option to a specific controller handle, you can send to all controllers via this command
+#define STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS UINT64_MAX
+
+#define STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA -1.0f
+#define STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA 1.0f
+
+enum ESteamControllerPad
+{
+ k_ESteamControllerPad_Left,
+ k_ESteamControllerPad_Right
+};
+
+enum EControllerSource
+{
+ k_EControllerSource_None,
+ k_EControllerSource_LeftTrackpad,
+ k_EControllerSource_RightTrackpad,
+ k_EControllerSource_Joystick,
+ k_EControllerSource_ABXY,
+ k_EControllerSource_Switch,
+ k_EControllerSource_LeftTrigger,
+ k_EControllerSource_RightTrigger,
+ k_EControllerSource_Gyro,
+ k_EControllerSource_Count
+};
+
+enum EControllerSourceMode
+{
+ k_EControllerSourceMode_None,
+ k_EControllerSourceMode_Dpad,
+ k_EControllerSourceMode_Buttons,
+ k_EControllerSourceMode_FourButtons,
+ k_EControllerSourceMode_AbsoluteMouse,
+ k_EControllerSourceMode_RelativeMouse,
+ k_EControllerSourceMode_JoystickMove,
+ k_EControllerSourceMode_JoystickCamera,
+ k_EControllerSourceMode_ScrollWheel,
+ k_EControllerSourceMode_Trigger,
+ k_EControllerSourceMode_TouchMenu,
+ k_EControllerSourceMode_MouseJoystick,
+ k_EControllerSourceMode_MouseRegion,
+ k_EControllerSourceMode_RadialMenu,
+ k_EControllerSourceMode_Switches
+};
+
+enum EControllerActionOrigin
+{
+ k_EControllerActionOrigin_None,
+ k_EControllerActionOrigin_A,
+ k_EControllerActionOrigin_B,
+ k_EControllerActionOrigin_X,
+ k_EControllerActionOrigin_Y,
+ k_EControllerActionOrigin_LeftBumper,
+ k_EControllerActionOrigin_RightBumper,
+ k_EControllerActionOrigin_LeftGrip,
+ k_EControllerActionOrigin_RightGrip,
+ k_EControllerActionOrigin_Start,
+ k_EControllerActionOrigin_Back,
+ k_EControllerActionOrigin_LeftPad_Touch,
+ k_EControllerActionOrigin_LeftPad_Swipe,
+ k_EControllerActionOrigin_LeftPad_Click,
+ k_EControllerActionOrigin_LeftPad_DPadNorth,
+ k_EControllerActionOrigin_LeftPad_DPadSouth,
+ k_EControllerActionOrigin_LeftPad_DPadWest,
+ k_EControllerActionOrigin_LeftPad_DPadEast,
+ k_EControllerActionOrigin_RightPad_Touch,
+ k_EControllerActionOrigin_RightPad_Swipe,
+ k_EControllerActionOrigin_RightPad_Click,
+ k_EControllerActionOrigin_RightPad_DPadNorth,
+ k_EControllerActionOrigin_RightPad_DPadSouth,
+ k_EControllerActionOrigin_RightPad_DPadWest,
+ k_EControllerActionOrigin_RightPad_DPadEast,
+ k_EControllerActionOrigin_LeftTrigger_Pull,
+ k_EControllerActionOrigin_LeftTrigger_Click,
+ k_EControllerActionOrigin_RightTrigger_Pull,
+ k_EControllerActionOrigin_RightTrigger_Click,
+ k_EControllerActionOrigin_LeftStick_Move,
+ k_EControllerActionOrigin_LeftStick_Click,
+ k_EControllerActionOrigin_LeftStick_DPadNorth,
+ k_EControllerActionOrigin_LeftStick_DPadSouth,
+ k_EControllerActionOrigin_LeftStick_DPadWest,
+ k_EControllerActionOrigin_LeftStick_DPadEast,
+ k_EControllerActionOrigin_Gyro_Move,
+ k_EControllerActionOrigin_Gyro_Pitch,
+ k_EControllerActionOrigin_Gyro_Yaw,
+ k_EControllerActionOrigin_Gyro_Roll,
+
+ k_EControllerActionOrigin_Count
+};
+
+// ControllerHandle_t is used to refer to a specific controller.
+// This handle will consistently identify a controller, even if it is disconnected and re-connected
+typedef uint64 ControllerHandle_t;
+
+
+// These handles are used to refer to a specific in-game action or action set
+// All action handles should be queried during initialization for performance reasons
+typedef uint64 ControllerActionSetHandle_t;
+typedef uint64 ControllerDigitalActionHandle_t;
+typedef uint64 ControllerAnalogActionHandle_t;
+
+#pragma pack( push, 1 )
+
+struct ControllerAnalogActionData_t
+{
+ // Type of data coming from this action, this will match what got specified in the action set
+ EControllerSourceMode eMode;
+
+ // The current state of this action; will be delta updates for mouse actions
+ float x, y;
+
+ // Whether or not this action is currently available to be bound in the active action set
+ bool bActive;
+};
+
+struct ControllerDigitalActionData_t
+{
+ // The current state of this action; will be true if currently pressed
+ bool bState;
+
+ // Whether or not this action is currently available to be bound in the active action set
+ bool bActive;
+};
+
+struct ControllerMotionData_t
+{
+ // Sensor-fused absolute rotation; will drift in heading
+ float rotQuatX;
+ float rotQuatY;
+ float rotQuatZ;
+ float rotQuatW;
+
+ // Positional acceleration
+ float posAccelX;
+ float posAccelY;
+ float posAccelZ;
+
+ // Angular velocity
+ float rotVelX;
+ float rotVelY;
+ float rotVelZ;
+};
+
+#pragma pack( pop )
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Native Steam controller support API
+//-----------------------------------------------------------------------------
+class ISteamController
+{
+public:
+
+ // Init and Shutdown must be called when starting/ending use of this interface
+ virtual bool Init() = 0;
+ virtual bool Shutdown() = 0;
+
+ // Synchronize API state with the latest Steam Controller inputs available. This
+ // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest
+ // possible latency, you call this directly before reading controller state.
+ virtual void RunFrame() = 0;
+
+ // Enumerate currently connected controllers
+ // handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles
+ // Returns the number of handles written to handlesOut
+ virtual int GetConnectedControllers( ControllerHandle_t *handlesOut ) = 0;
+
+ // Invokes the Steam overlay and brings up the binding screen
+ // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode
+ virtual bool ShowBindingPanel( ControllerHandle_t controllerHandle ) = 0;
+
+ // ACTION SETS
+ // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls.
+ virtual ControllerActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0;
+
+ // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive')
+ // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in
+ // your state loops, instead of trying to place it in all of your state transitions.
+ virtual void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) = 0;
+ virtual ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) = 0;
+
+ // ACTIONS
+ // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls.
+ virtual ControllerDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0;
+
+ // Returns the current state of the supplied digital game action
+ virtual ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) = 0;
+
+ // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action.
+ // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles
+ virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin *originsOut ) = 0;
+
+ // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls.
+ virtual ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0;
+
+ // Returns the current state of these supplied analog game action
+ virtual ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) = 0;
+
+ // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action.
+ // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles
+ virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin *originsOut ) = 0;
+
+ virtual void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) = 0;
+
+ // Trigger a haptic pulse on a controller
+ virtual void TriggerHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0;
+
+ // Trigger a pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times.
+ // nFlags is currently unused and reserved for future use.
+ virtual void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0;
+
+ // Returns the associated gamepad index for the specified controller, if emulating a gamepad
+ virtual int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) = 0;
+
+ // Returns the associated controller handle for the specified emulated gamepad
+ virtual ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) = 0;
+
+ // Returns raw motion data from the specified controller
+ virtual ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle ) = 0;
+
+ // Attempt to display origins of given action in the controller HUD, for the currently active action set
+ // Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode
+ virtual bool ShowDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition ) = 0;
+ virtual bool ShowAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition ) = 0;
+};
+
+#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController004"
+
+#endif // ISTEAMCONTROLLER_H