1 module derelict.steamworks.steamcontroller; 2 3 import derelict.steamworks.types; 4 5 enum STEAM_CONTROLLER_MAX_COUNT = 16; 6 7 enum STEAM_CONTROLLER_MAX_ANALOG_ACTIONS = 16; 8 9 enum STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS = 128; 10 11 enum STEAM_CONTROLLER_MAX_ORIGINS = 8; 12 13 // When sending an option to a specific controller handle, you can send to all controllers via this command 14 enum STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS = uint64.max; 15 16 enum STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA = -1.0f; 17 enum STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA = 1.0f; 18 19 enum ESteamControllerPad 20 { 21 k_ESteamControllerPad_Left, 22 k_ESteamControllerPad_Right 23 } 24 25 enum EControllerSource 26 { 27 k_EControllerSource_None, 28 k_EControllerSource_LeftTrackpad, 29 k_EControllerSource_RightTrackpad, 30 k_EControllerSource_Joystick, 31 k_EControllerSource_ABXY, 32 k_EControllerSource_Switch, 33 k_EControllerSource_LeftTrigger, 34 k_EControllerSource_RightTrigger, 35 k_EControllerSource_Gyro, 36 k_EControllerSource_CenterTrackpad, // PS4 37 k_EControllerSource_RightJoystick, // Traditional Controllers 38 k_EControllerSource_DPad, 39 k_EControllerSource_Count 40 } 41 42 enum EControllerSourceMode 43 { 44 k_EControllerSourceMode_None, 45 k_EControllerSourceMode_Dpad, 46 k_EControllerSourceMode_Buttons, 47 k_EControllerSourceMode_FourButtons, 48 k_EControllerSourceMode_AbsoluteMouse, 49 k_EControllerSourceMode_RelativeMouse, 50 k_EControllerSourceMode_JoystickMove, 51 k_EControllerSourceMode_JoystickMouse, 52 k_EControllerSourceMode_JoystickCamera, 53 k_EControllerSourceMode_ScrollWheel, 54 k_EControllerSourceMode_Trigger, 55 k_EControllerSourceMode_TouchMenu, 56 k_EControllerSourceMode_MouseJoystick, 57 k_EControllerSourceMode_MouseRegion, 58 k_EControllerSourceMode_RadialMenu, 59 k_EControllerSourceMode_SingleButton, 60 k_EControllerSourceMode_Switches 61 } 62 63 enum EControllerActionOrigin 64 { 65 k_EControllerActionOrigin_None, 66 k_EControllerActionOrigin_A, 67 k_EControllerActionOrigin_B, 68 k_EControllerActionOrigin_X, 69 k_EControllerActionOrigin_Y, 70 k_EControllerActionOrigin_LeftBumper, 71 k_EControllerActionOrigin_RightBumper, 72 k_EControllerActionOrigin_LeftGrip, 73 k_EControllerActionOrigin_RightGrip, 74 k_EControllerActionOrigin_Start, 75 k_EControllerActionOrigin_Back, 76 k_EControllerActionOrigin_LeftPad_Touch, 77 k_EControllerActionOrigin_LeftPad_Swipe, 78 k_EControllerActionOrigin_LeftPad_Click, 79 k_EControllerActionOrigin_LeftPad_DPadNorth, 80 k_EControllerActionOrigin_LeftPad_DPadSouth, 81 k_EControllerActionOrigin_LeftPad_DPadWest, 82 k_EControllerActionOrigin_LeftPad_DPadEast, 83 k_EControllerActionOrigin_RightPad_Touch, 84 k_EControllerActionOrigin_RightPad_Swipe, 85 k_EControllerActionOrigin_RightPad_Click, 86 k_EControllerActionOrigin_RightPad_DPadNorth, 87 k_EControllerActionOrigin_RightPad_DPadSouth, 88 k_EControllerActionOrigin_RightPad_DPadWest, 89 k_EControllerActionOrigin_RightPad_DPadEast, 90 k_EControllerActionOrigin_LeftTrigger_Pull, 91 k_EControllerActionOrigin_LeftTrigger_Click, 92 k_EControllerActionOrigin_RightTrigger_Pull, 93 k_EControllerActionOrigin_RightTrigger_Click, 94 k_EControllerActionOrigin_LeftStick_Move, 95 k_EControllerActionOrigin_LeftStick_Click, 96 k_EControllerActionOrigin_LeftStick_DPadNorth, 97 k_EControllerActionOrigin_LeftStick_DPadSouth, 98 k_EControllerActionOrigin_LeftStick_DPadWest, 99 k_EControllerActionOrigin_LeftStick_DPadEast, 100 k_EControllerActionOrigin_Gyro_Move, 101 k_EControllerActionOrigin_Gyro_Pitch, 102 k_EControllerActionOrigin_Gyro_Yaw, 103 k_EControllerActionOrigin_Gyro_Roll, 104 105 // PS4 Dual Shock 106 k_EControllerActionOrigin_PS4_X, 107 k_EControllerActionOrigin_PS4_Circle, 108 k_EControllerActionOrigin_PS4_Triangle, 109 k_EControllerActionOrigin_PS4_Square, 110 k_EControllerActionOrigin_PS4_LeftBumper, 111 k_EControllerActionOrigin_PS4_RightBumper, 112 k_EControllerActionOrigin_PS4_Options, //Start 113 k_EControllerActionOrigin_PS4_Share, //Back 114 k_EControllerActionOrigin_PS4_LeftPad_Touch, 115 k_EControllerActionOrigin_PS4_LeftPad_Swipe, 116 k_EControllerActionOrigin_PS4_LeftPad_Click, 117 k_EControllerActionOrigin_PS4_LeftPad_DPadNorth, 118 k_EControllerActionOrigin_PS4_LeftPad_DPadSouth, 119 k_EControllerActionOrigin_PS4_LeftPad_DPadWest, 120 k_EControllerActionOrigin_PS4_LeftPad_DPadEast, 121 k_EControllerActionOrigin_PS4_RightPad_Touch, 122 k_EControllerActionOrigin_PS4_RightPad_Swipe, 123 k_EControllerActionOrigin_PS4_RightPad_Click, 124 k_EControllerActionOrigin_PS4_RightPad_DPadNorth, 125 k_EControllerActionOrigin_PS4_RightPad_DPadSouth, 126 k_EControllerActionOrigin_PS4_RightPad_DPadWest, 127 k_EControllerActionOrigin_PS4_RightPad_DPadEast, 128 k_EControllerActionOrigin_PS4_CenterPad_Touch, 129 k_EControllerActionOrigin_PS4_CenterPad_Swipe, 130 k_EControllerActionOrigin_PS4_CenterPad_Click, 131 k_EControllerActionOrigin_PS4_CenterPad_DPadNorth, 132 k_EControllerActionOrigin_PS4_CenterPad_DPadSouth, 133 k_EControllerActionOrigin_PS4_CenterPad_DPadWest, 134 k_EControllerActionOrigin_PS4_CenterPad_DPadEast, 135 k_EControllerActionOrigin_PS4_LeftTrigger_Pull, 136 k_EControllerActionOrigin_PS4_LeftTrigger_Click, 137 k_EControllerActionOrigin_PS4_RightTrigger_Pull, 138 k_EControllerActionOrigin_PS4_RightTrigger_Click, 139 k_EControllerActionOrigin_PS4_LeftStick_Move, 140 k_EControllerActionOrigin_PS4_LeftStick_Click, 141 k_EControllerActionOrigin_PS4_LeftStick_DPadNorth, 142 k_EControllerActionOrigin_PS4_LeftStick_DPadSouth, 143 k_EControllerActionOrigin_PS4_LeftStick_DPadWest, 144 k_EControllerActionOrigin_PS4_LeftStick_DPadEast, 145 k_EControllerActionOrigin_PS4_RightStick_Move, 146 k_EControllerActionOrigin_PS4_RightStick_Click, 147 k_EControllerActionOrigin_PS4_RightStick_DPadNorth, 148 k_EControllerActionOrigin_PS4_RightStick_DPadSouth, 149 k_EControllerActionOrigin_PS4_RightStick_DPadWest, 150 k_EControllerActionOrigin_PS4_RightStick_DPadEast, 151 k_EControllerActionOrigin_PS4_DPad_North, 152 k_EControllerActionOrigin_PS4_DPad_South, 153 k_EControllerActionOrigin_PS4_DPad_West, 154 k_EControllerActionOrigin_PS4_DPad_East, 155 k_EControllerActionOrigin_PS4_Gyro_Move, 156 k_EControllerActionOrigin_PS4_Gyro_Pitch, 157 k_EControllerActionOrigin_PS4_Gyro_Yaw, 158 k_EControllerActionOrigin_PS4_Gyro_Roll, 159 160 // XBox One 161 k_EControllerActionOrigin_XBoxOne_A, 162 k_EControllerActionOrigin_XBoxOne_B, 163 k_EControllerActionOrigin_XBoxOne_X, 164 k_EControllerActionOrigin_XBoxOne_Y, 165 k_EControllerActionOrigin_XBoxOne_LeftBumper, 166 k_EControllerActionOrigin_XBoxOne_RightBumper, 167 k_EControllerActionOrigin_XBoxOne_Menu, //Start 168 k_EControllerActionOrigin_XBoxOne_View, //Back 169 k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull, 170 k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click, 171 k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull, 172 k_EControllerActionOrigin_XBoxOne_RightTrigger_Click, 173 k_EControllerActionOrigin_XBoxOne_LeftStick_Move, 174 k_EControllerActionOrigin_XBoxOne_LeftStick_Click, 175 k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth, 176 k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth, 177 k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest, 178 k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast, 179 k_EControllerActionOrigin_XBoxOne_RightStick_Move, 180 k_EControllerActionOrigin_XBoxOne_RightStick_Click, 181 k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth, 182 k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth, 183 k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest, 184 k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast, 185 k_EControllerActionOrigin_XBoxOne_DPad_North, 186 k_EControllerActionOrigin_XBoxOne_DPad_South, 187 k_EControllerActionOrigin_XBoxOne_DPad_West, 188 k_EControllerActionOrigin_XBoxOne_DPad_East, 189 190 // XBox 360 191 k_EControllerActionOrigin_XBox360_A, 192 k_EControllerActionOrigin_XBox360_B, 193 k_EControllerActionOrigin_XBox360_X, 194 k_EControllerActionOrigin_XBox360_Y, 195 k_EControllerActionOrigin_XBox360_LeftBumper, 196 k_EControllerActionOrigin_XBox360_RightBumper, 197 k_EControllerActionOrigin_XBox360_Start, //Start 198 k_EControllerActionOrigin_XBox360_Back, //Back 199 k_EControllerActionOrigin_XBox360_LeftTrigger_Pull, 200 k_EControllerActionOrigin_XBox360_LeftTrigger_Click, 201 k_EControllerActionOrigin_XBox360_RightTrigger_Pull, 202 k_EControllerActionOrigin_XBox360_RightTrigger_Click, 203 k_EControllerActionOrigin_XBox360_LeftStick_Move, 204 k_EControllerActionOrigin_XBox360_LeftStick_Click, 205 k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth, 206 k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth, 207 k_EControllerActionOrigin_XBox360_LeftStick_DPadWest, 208 k_EControllerActionOrigin_XBox360_LeftStick_DPadEast, 209 k_EControllerActionOrigin_XBox360_RightStick_Move, 210 k_EControllerActionOrigin_XBox360_RightStick_Click, 211 k_EControllerActionOrigin_XBox360_RightStick_DPadNorth, 212 k_EControllerActionOrigin_XBox360_RightStick_DPadSouth, 213 k_EControllerActionOrigin_XBox360_RightStick_DPadWest, 214 k_EControllerActionOrigin_XBox360_RightStick_DPadEast, 215 k_EControllerActionOrigin_XBox360_DPad_North, 216 k_EControllerActionOrigin_XBox360_DPad_South, 217 k_EControllerActionOrigin_XBox360_DPad_West, 218 k_EControllerActionOrigin_XBox360_DPad_East, 219 220 // SteamController V2 221 k_EControllerActionOrigin_SteamV2_A, 222 k_EControllerActionOrigin_SteamV2_B, 223 k_EControllerActionOrigin_SteamV2_X, 224 k_EControllerActionOrigin_SteamV2_Y, 225 k_EControllerActionOrigin_SteamV2_LeftBumper, 226 k_EControllerActionOrigin_SteamV2_RightBumper, 227 k_EControllerActionOrigin_SteamV2_LeftGrip, 228 k_EControllerActionOrigin_SteamV2_RightGrip, 229 k_EControllerActionOrigin_SteamV2_LeftGrip_Upper, 230 k_EControllerActionOrigin_SteamV2_RightGrip_Upper, 231 k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure, 232 k_EControllerActionOrigin_SteamV2_RightBumper_Pressure, 233 k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure, 234 k_EControllerActionOrigin_SteamV2_RightGrip_Pressure, 235 k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure, 236 k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure, 237 k_EControllerActionOrigin_SteamV2_Start, 238 k_EControllerActionOrigin_SteamV2_Back, 239 k_EControllerActionOrigin_SteamV2_LeftPad_Touch, 240 k_EControllerActionOrigin_SteamV2_LeftPad_Swipe, 241 k_EControllerActionOrigin_SteamV2_LeftPad_Click, 242 k_EControllerActionOrigin_SteamV2_LeftPad_Pressure, 243 k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth, 244 k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth, 245 k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest, 246 k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast, 247 k_EControllerActionOrigin_SteamV2_RightPad_Touch, 248 k_EControllerActionOrigin_SteamV2_RightPad_Swipe, 249 k_EControllerActionOrigin_SteamV2_RightPad_Click, 250 k_EControllerActionOrigin_SteamV2_RightPad_Pressure, 251 k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth, 252 k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth, 253 k_EControllerActionOrigin_SteamV2_RightPad_DPadWest, 254 k_EControllerActionOrigin_SteamV2_RightPad_DPadEast, 255 k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull, 256 k_EControllerActionOrigin_SteamV2_LeftTrigger_Click, 257 k_EControllerActionOrigin_SteamV2_RightTrigger_Pull, 258 k_EControllerActionOrigin_SteamV2_RightTrigger_Click, 259 k_EControllerActionOrigin_SteamV2_LeftStick_Move, 260 k_EControllerActionOrigin_SteamV2_LeftStick_Click, 261 k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth, 262 k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth, 263 k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest, 264 k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast, 265 k_EControllerActionOrigin_SteamV2_Gyro_Move, 266 k_EControllerActionOrigin_SteamV2_Gyro_Pitch, 267 k_EControllerActionOrigin_SteamV2_Gyro_Yaw, 268 k_EControllerActionOrigin_SteamV2_Gyro_Roll, 269 270 k_EControllerActionOrigin_Count 271 } 272 273 enum ESteamControllerLEDFlag 274 { 275 k_ESteamControllerLEDFlag_SetColor, 276 k_ESteamControllerLEDFlag_RestoreUserDefault 277 } 278 279 struct ControllerMotionData_t 280 { 281 // Sensor-fused absolute rotation; will drift in heading 282 float rotQuatX; 283 float rotQuatY; 284 float rotQuatZ; 285 float rotQuatW; 286 287 // Positional acceleration 288 float posAccelX; 289 float posAccelY; 290 float posAccelZ; 291 292 // Angular velocity 293 float rotVelX; 294 float rotVelY; 295 float rotVelZ; 296 } 297 298 // ControllerHandle_t is used to refer to a specific controller. 299 // This handle will consistently identify a controller, even if it is disconnected and re-connected 300 alias ControllerHandle_t = uint64; 301 302 // These handles are used to refer to a specific in-game action or action set 303 // All action handles should be queried during initialization for performance reasons 304 alias ControllerActionSetHandle_t = uint64; 305 alias ControllerDigitalActionHandle_t = uint64; 306 alias ControllerAnalogActionHandle_t = uint64; 307 308 align(1): 309 310 struct ControllerAnalogActionData_t 311 { 312 // Type of data coming from this action, this will match what got specified in the action set 313 EControllerSourceMode eMode; 314 315 // The current state of this action; will be delta updates for mouse actions 316 float x, y; 317 318 // Whether or not this action is currently available to be bound in the active action set 319 bool bActive; 320 } 321 322 struct ControllerDigitalActionData_t 323 { 324 // The current state of this action; will be true if currently pressed 325 bool bState; 326 327 // Whether or not this action is currently available to be bound in the active action set 328 bool bActive; 329 } 330 331 static immutable const(char)* STEAMCONTROLLER_INTERFACE_VERSION = "SteamController005";