1 //
2 // THIS FILE IS AUTO GENERATED
3 //    DO NOT MANUALLY EDIT!
4 //
5 /// Automatically generated C++ API bindings
6 module openvr.api;
7 
8 import openvr.vk_stub;
9 import openvr.dx_stub;
10 
11 extern(C++, vr):
12 
13 /// A handle for a spatial anchor.  This handle is only valid during the session it was created in.
14 /// Anchors that live beyond one session should be saved by their string descriptors.
15 alias SpatialAnchorHandle_t = uint;
16 alias glSharedTextureHandle_t = void*; /// Handle to a shared texture (HANDLE on Windows obtained using OpenSharedResource).
17 alias glInt_t = int; ///
18 alias glUInt_t = uint; ///
19 alias SharedTextureHandle_t = ulong; ///
20 alias DriverId_t = uint; ///
21 alias TrackedDeviceIndex_t = uint; /// Used to pass device IDs to API calls
22 alias WebConsoleHandle_t = ulong; ///
23 alias PropertyContainerHandle_t = ulong; /// Refers to a single container of properties
24 alias PropertyTypeTag_t = uint; ///
25 alias DriverHandle_t = PropertyContainerHandle_t; ///
26 alias VRActionHandle_t = ulong; ///
27 alias VRActionSetHandle_t = ulong; ///
28 alias VRInputValueHandle_t = ulong; ///
29 alias VRComponentProperties = uint; ///
30 alias VRControllerState_t = VRControllerState001_t; ///
31 alias VROverlayHandle_t = ulong; /// used to refer to a single VR overlay
32 alias BoneIndex_t = int; /// Type used for referring to bones by their index
33 alias TrackedCameraHandle_t = ulong; ///
34 alias ScreenshotHandle_t = uint; ///
35 /// Session unique texture identifier. Rendermodels which share the same texture will have the same id.
36 /// IDs <0 denote the texture is not present
37 alias TextureID_t = int;
38 alias VRNotificationId = uint; ///
39 alias IOBufferHandle_t = ulong; ///
40 alias VrProfilerEventHandle_t = ulong; /// Handle for vr profiler events
41 alias HmdError = EVRInitError; ///
42 alias Hmd_Eye = EVREye; ///
43 alias ColorSpace = EColorSpace; ///
44 alias HmdTrackingResult = ETrackingResult; ///
45 alias TrackedDeviceClass = ETrackedDeviceClass; ///
46 alias TrackingUniverseOrigin = ETrackingUniverseOrigin; ///
47 alias TrackedDeviceProperty = ETrackedDeviceProperty; ///
48 alias TrackedPropertyError = ETrackedPropertyError; ///
49 alias VRSubmitFlags_t = EVRSubmitFlags; ///
50 alias VRState_t = EVRState; ///
51 alias CollisionBoundsStyle_t = ECollisionBoundsStyle; ///
52 alias VROverlayError = EVROverlayError; ///
53 alias VRFirmwareError = EVRFirmwareError; ///
54 alias VRCompositorError = EVRCompositorError; ///
55 alias VRScreenshotsError = EVRScreenshotError; ///
56 
57 ///
58 enum EVREye
59 {
60 	Eye_Left = 0, ///
61 	Eye_Right = 1, ///
62 }
63 
64 ///
65 enum ETextureType
66 {
67 	Invalid = -1, ///
68 	DirectX = 0, ///
69 	OpenGL = 1, ///
70 	Vulkan = 2, ///
71 	IOSurface = 3, ///
72 	DirectX12 = 4, ///
73 	DXGISharedHandle = 5, ///
74 	Metal = 6, ///
75 }
76 
77 ///
78 enum EColorSpace
79 {
80 	Auto = 0, ///
81 	Gamma = 1, ///
82 	Linear = 2, ///
83 }
84 
85 ///
86 enum ETrackingResult
87 {
88 	Uninitialized = 1, ///
89 	Calibrating_InProgress = 100, ///
90 	Calibrating_OutOfRange = 101, ///
91 	Running_OK = 200, ///
92 	Running_OutOfRange = 201, ///
93 	Fallback_RotationOnly = 300, ///
94 }
95 
96 /// Describes what kind of object is being tracked at a given ID
97 enum ETrackedDeviceClass
98 {
99 	Invalid = 0, /// Describes what kind of object is being tracked at a given ID
100 	HMD = 1, /// Describes what kind of object is being tracked at a given ID
101 	Controller = 2, /// Describes what kind of object is being tracked at a given ID
102 	GenericTracker = 3, /// Describes what kind of object is being tracked at a given ID
103 	TrackingReference = 4, /// Describes what kind of object is being tracked at a given ID
104 	DisplayRedirect = 5, /// Describes what kind of object is being tracked at a given ID
105 	Max = 6, /// Describes what kind of object is being tracked at a given ID
106 }
107 
108 /// Describes what specific role associated with a tracked device
109 enum ETrackedControllerRole
110 {
111 	Invalid = 0, /// Describes what specific role associated with a tracked device
112 	LeftHand = 1, /// Describes what specific role associated with a tracked device
113 	RightHand = 2, /// Describes what specific role associated with a tracked device
114 	OptOut = 3, /// Describes what specific role associated with a tracked device
115 	Treadmill = 4, /// Describes what specific role associated with a tracked device
116 	Stylus = 5, /// Describes what specific role associated with a tracked device
117 	Max = 5, /// Describes what specific role associated with a tracked device
118 }
119 
120 /// Identifies which style of tracking origin the application wants to use for the poses it is requesting
121 enum ETrackingUniverseOrigin
122 {
123 	TrackingUniverseSeated = 0, /// Identifies which style of tracking origin the application wants to use for the poses it is requesting
124 	TrackingUniverseStanding = 1, /// Identifies which style of tracking origin the application wants to use for the poses it is requesting
125 	TrackingUniverseRawAndUncalibrated = 2, /// Identifies which style of tracking origin the application wants to use for the poses it is requesting
126 }
127 
128 ///
129 enum EAdditionalRadioFeatures
130 {
131 	None = 0, ///
132 	HTCLinkBox = 1, ///
133 	InternalDongle = 2, ///
134 	ExternalDongle = 4, ///
135 }
136 
137 /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
138 enum ETrackedDeviceProperty
139 {
140 	Prop_Invalid = 0, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
141 	Prop_TrackingSystemName_String = 1000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
142 	Prop_ModelNumber_String = 1001, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
143 	Prop_SerialNumber_String = 1002, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
144 	Prop_RenderModelName_String = 1003, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
145 	Prop_WillDriftInYaw_Bool = 1004, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
146 	Prop_ManufacturerName_String = 1005, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
147 	Prop_TrackingFirmwareVersion_String = 1006, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
148 	Prop_HardwareRevision_String = 1007, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
149 	Prop_AllWirelessDongleDescriptions_String = 1008, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
150 	Prop_ConnectedWirelessDongle_String = 1009, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
151 	Prop_DeviceIsWireless_Bool = 1010, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
152 	Prop_DeviceIsCharging_Bool = 1011, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
153 	Prop_DeviceBatteryPercentage_Float = 1012, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
154 	Prop_StatusDisplayTransform_Matrix34 = 1013, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
155 	Prop_Firmware_UpdateAvailable_Bool = 1014, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
156 	Prop_Firmware_ManualUpdate_Bool = 1015, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
157 	Prop_Firmware_ManualUpdateURL_String = 1016, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
158 	Prop_HardwareRevision_Uint64 = 1017, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
159 	Prop_FirmwareVersion_Uint64 = 1018, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
160 	Prop_FPGAVersion_Uint64 = 1019, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
161 	Prop_VRCVersion_Uint64 = 1020, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
162 	Prop_RadioVersion_Uint64 = 1021, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
163 	Prop_DongleVersion_Uint64 = 1022, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
164 	Prop_BlockServerShutdown_Bool = 1023, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
165 	Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
166 	Prop_ContainsProximitySensor_Bool = 1025, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
167 	Prop_DeviceProvidesBatteryStatus_Bool = 1026, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
168 	Prop_DeviceCanPowerOff_Bool = 1027, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
169 	Prop_Firmware_ProgrammingTarget_String = 1028, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
170 	Prop_DeviceClass_Int32 = 1029, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
171 	Prop_HasCamera_Bool = 1030, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
172 	Prop_DriverVersion_String = 1031, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
173 	Prop_Firmware_ForceUpdateRequired_Bool = 1032, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
174 	Prop_ViveSystemButtonFixRequired_Bool = 1033, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
175 	Prop_ParentDriver_Uint64 = 1034, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
176 	Prop_ResourceRoot_String = 1035, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
177 	Prop_RegisteredDeviceType_String = 1036, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
178 	Prop_InputProfilePath_String = 1037, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
179 	Prop_NeverTracked_Bool = 1038, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
180 	Prop_NumCameras_Int32 = 1039, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
181 	Prop_CameraFrameLayout_Int32 = 1040, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
182 	Prop_CameraStreamFormat_Int32 = 1041, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
183 	Prop_AdditionalDeviceSettingsPath_String = 1042, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
184 	Prop_Identifiable_Bool = 1043, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
185 	Prop_BootloaderVersion_Uint64 = 1044, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
186 	Prop_AdditionalSystemReportData_String = 1045, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
187 	Prop_CompositeFirmwareVersion_String = 1046, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
188 	Prop_Firmware_RemindUpdate_Bool = 1047, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
189 	Prop_PeripheralApplicationVersion_Uint64 = 1048, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
190 	Prop_ManufacturerSerialNumber_String = 1049, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
191 	Prop_ComputedSerialNumber_String = 1050, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
192 	Prop_EstimatedDeviceFirstUseTime_Int32 = 1051, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
193 	Prop_ReportsTimeSinceVSync_Bool = 2000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
194 	Prop_SecondsFromVsyncToPhotons_Float = 2001, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
195 	Prop_DisplayFrequency_Float = 2002, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
196 	Prop_UserIpdMeters_Float = 2003, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
197 	Prop_CurrentUniverseId_Uint64 = 2004, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
198 	Prop_PreviousUniverseId_Uint64 = 2005, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
199 	Prop_DisplayFirmwareVersion_Uint64 = 2006, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
200 	Prop_IsOnDesktop_Bool = 2007, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
201 	Prop_DisplayMCType_Int32 = 2008, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
202 	Prop_DisplayMCOffset_Float = 2009, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
203 	Prop_DisplayMCScale_Float = 2010, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
204 	Prop_EdidVendorID_Int32 = 2011, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
205 	Prop_DisplayMCImageLeft_String = 2012, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
206 	Prop_DisplayMCImageRight_String = 2013, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
207 	Prop_DisplayGCBlackClamp_Float = 2014, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
208 	Prop_EdidProductID_Int32 = 2015, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
209 	Prop_CameraToHeadTransform_Matrix34 = 2016, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
210 	Prop_DisplayGCType_Int32 = 2017, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
211 	Prop_DisplayGCOffset_Float = 2018, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
212 	Prop_DisplayGCScale_Float = 2019, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
213 	Prop_DisplayGCPrescale_Float = 2020, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
214 	Prop_DisplayGCImage_String = 2021, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
215 	Prop_LensCenterLeftU_Float = 2022, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
216 	Prop_LensCenterLeftV_Float = 2023, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
217 	Prop_LensCenterRightU_Float = 2024, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
218 	Prop_LensCenterRightV_Float = 2025, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
219 	Prop_UserHeadToEyeDepthMeters_Float = 2026, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
220 	Prop_CameraFirmwareVersion_Uint64 = 2027, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
221 	Prop_CameraFirmwareDescription_String = 2028, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
222 	Prop_DisplayFPGAVersion_Uint64 = 2029, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
223 	Prop_DisplayBootloaderVersion_Uint64 = 2030, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
224 	Prop_DisplayHardwareVersion_Uint64 = 2031, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
225 	Prop_AudioFirmwareVersion_Uint64 = 2032, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
226 	Prop_CameraCompatibilityMode_Int32 = 2033, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
227 	Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
228 	Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
229 	Prop_DisplaySuppressed_Bool = 2036, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
230 	Prop_DisplayAllowNightMode_Bool = 2037, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
231 	Prop_DisplayMCImageWidth_Int32 = 2038, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
232 	Prop_DisplayMCImageHeight_Int32 = 2039, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
233 	Prop_DisplayMCImageNumChannels_Int32 = 2040, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
234 	Prop_DisplayMCImageData_Binary = 2041, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
235 	Prop_SecondsFromPhotonsToVblank_Float = 2042, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
236 	Prop_DriverDirectModeSendsVsyncEvents_Bool = 2043, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
237 	Prop_DisplayDebugMode_Bool = 2044, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
238 	Prop_GraphicsAdapterLuid_Uint64 = 2045, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
239 	Prop_DriverProvidedChaperonePath_String = 2048, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
240 	Prop_ExpectedTrackingReferenceCount_Int32 = 2049, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
241 	Prop_ExpectedControllerCount_Int32 = 2050, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
242 	Prop_NamedIconPathControllerLeftDeviceOff_String = 2051, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
243 	Prop_NamedIconPathControllerRightDeviceOff_String = 2052, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
244 	Prop_NamedIconPathTrackingReferenceDeviceOff_String = 2053, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
245 	Prop_DoNotApplyPrediction_Bool = 2054, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
246 	Prop_CameraToHeadTransforms_Matrix34_Array = 2055, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
247 	Prop_DistortionMeshResolution_Int32 = 2056, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
248 	Prop_DriverIsDrawingControllers_Bool = 2057, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
249 	Prop_DriverRequestsApplicationPause_Bool = 2058, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
250 	Prop_DriverRequestsReducedRendering_Bool = 2059, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
251 	Prop_MinimumIpdStepMeters_Float = 2060, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
252 	Prop_AudioBridgeFirmwareVersion_Uint64 = 2061, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
253 	Prop_ImageBridgeFirmwareVersion_Uint64 = 2062, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
254 	Prop_ImuToHeadTransform_Matrix34 = 2063, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
255 	Prop_ImuFactoryGyroBias_Vector3 = 2064, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
256 	Prop_ImuFactoryGyroScale_Vector3 = 2065, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
257 	Prop_ImuFactoryAccelerometerBias_Vector3 = 2066, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
258 	Prop_ImuFactoryAccelerometerScale_Vector3 = 2067, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
259 	Prop_ConfigurationIncludesLighthouse20Features_Bool = 2069, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
260 	Prop_AdditionalRadioFeatures_Uint64 = 2070, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
261 	Prop_CameraWhiteBalance_Vector4_Array = 2071, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
262 	Prop_CameraDistortionFunction_Int32_Array = 2072, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
263 	Prop_CameraDistortionCoefficients_Float_Array = 2073, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
264 	Prop_ExpectedControllerType_String = 2074, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
265 	Prop_HmdTrackingStyle_Int32 = 2075, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
266 	Prop_DriverProvidedChaperoneVisibility_Bool = 2076, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
267 	Prop_HmdColumnCorrectionSettingPrefix_String = 2077, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
268 	Prop_CameraSupportsCompatibilityModes_Bool = 2078, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
269 	Prop_DisplayAvailableFrameRates_Float_Array = 2080, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
270 	Prop_DisplaySupportsMultipleFramerates_Bool = 2081, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
271 	Prop_DisplayColorMultLeft_Vector3 = 2082, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
272 	Prop_DisplayColorMultRight_Vector3 = 2083, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
273 	Prop_DisplaySupportsRuntimeFramerateChange_Bool = 2084, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
274 	Prop_DisplaySupportsAnalogGain_Bool = 2085, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
275 	Prop_DisplayMinAnalogGain_Float = 2086, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
276 	Prop_DisplayMaxAnalogGain_Float = 2087, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
277 	Prop_DashboardScale_Float = 2091, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
278 	Prop_IpdUIRangeMinMeters_Float = 2100, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
279 	Prop_IpdUIRangeMaxMeters_Float = 2101, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
280 	Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
281 	Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
282 	Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
283 	Prop_DriverRequestedMuraFeather_InnerTop_Int32 = 2203, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
284 	Prop_DriverRequestedMuraFeather_InnerBottom_Int32 = 2204, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
285 	Prop_DriverRequestedMuraFeather_OuterLeft_Int32 = 2205, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
286 	Prop_DriverRequestedMuraFeather_OuterRight_Int32 = 2206, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
287 	Prop_DriverRequestedMuraFeather_OuterTop_Int32 = 2207, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
288 	Prop_DriverRequestedMuraFeather_OuterBottom_Int32 = 2208, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
289 	Prop_Audio_DefaultPlaybackDeviceId_String = 2300, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
290 	Prop_Audio_DefaultRecordingDeviceId_String = 2301, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
291 	Prop_Audio_DefaultPlaybackDeviceVolume_Float = 2302, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
292 	Prop_AttachedDeviceId_String = 3000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
293 	Prop_SupportedButtons_Uint64 = 3001, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
294 	Prop_Axis0Type_Int32 = 3002, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
295 	Prop_Axis1Type_Int32 = 3003, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
296 	Prop_Axis2Type_Int32 = 3004, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
297 	Prop_Axis3Type_Int32 = 3005, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
298 	Prop_Axis4Type_Int32 = 3006, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
299 	Prop_ControllerRoleHint_Int32 = 3007, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
300 	Prop_FieldOfViewLeftDegrees_Float = 4000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
301 	Prop_FieldOfViewRightDegrees_Float = 4001, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
302 	Prop_FieldOfViewTopDegrees_Float = 4002, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
303 	Prop_FieldOfViewBottomDegrees_Float = 4003, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
304 	Prop_TrackingRangeMinimumMeters_Float = 4004, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
305 	Prop_TrackingRangeMaximumMeters_Float = 4005, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
306 	Prop_ModeLabel_String = 4006, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
307 	Prop_CanWirelessIdentify_Bool = 4007, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
308 	Prop_Nonce_Int32 = 4008, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
309 	Prop_IconPathName_String = 5000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
310 	Prop_NamedIconPathDeviceOff_String = 5001, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
311 	Prop_NamedIconPathDeviceSearching_String = 5002, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
312 	Prop_NamedIconPathDeviceSearchingAlert_String = 5003, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
313 	Prop_NamedIconPathDeviceReady_String = 5004, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
314 	Prop_NamedIconPathDeviceReadyAlert_String = 5005, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
315 	Prop_NamedIconPathDeviceNotReady_String = 5006, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
316 	Prop_NamedIconPathDeviceStandby_String = 5007, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
317 	Prop_NamedIconPathDeviceAlertLow_String = 5008, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
318 	Prop_NamedIconPathDeviceStandbyAlert_String = 5009, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
319 	Prop_DisplayHiddenArea_Binary_Start = 5100, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
320 	Prop_DisplayHiddenArea_Binary_End = 5150, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
321 	Prop_ParentContainer = 5151, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
322 	Prop_OverrideContainer_Uint64 = 5152, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
323 	Prop_UserConfigPath_String = 6000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
324 	Prop_InstallPath_String = 6001, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
325 	Prop_HasDisplayComponent_Bool = 6002, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
326 	Prop_HasControllerComponent_Bool = 6003, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
327 	Prop_HasCameraComponent_Bool = 6004, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
328 	Prop_HasDriverDirectModeComponent_Bool = 6005, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
329 	Prop_HasVirtualDisplayComponent_Bool = 6006, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
330 	Prop_HasSpatialAnchorsSupport_Bool = 6007, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
331 	Prop_ControllerType_String = 7000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
332 	Prop_ControllerHandSelectionPriority_Int32 = 7002, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
333 	Prop_VendorSpecific_Reserved_Start = 10000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
334 	Prop_VendorSpecific_Reserved_End = 10999, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
335 	Prop_TrackedDeviceProperty_Max = 1000000, /// Each entry in this enum represents a property that can be retrieved about a tracked device. Many fields are only valid for one ETrackedDeviceClass.
336 }
337 
338 /// Used to return errors that occur when reading properties.
339 enum ETrackedPropertyError
340 {
341 	TrackedProp_Success = 0, /// Used to return errors that occur when reading properties.
342 	TrackedProp_WrongDataType = 1, /// Used to return errors that occur when reading properties.
343 	TrackedProp_WrongDeviceClass = 2, /// Used to return errors that occur when reading properties.
344 	TrackedProp_BufferTooSmall = 3, /// Used to return errors that occur when reading properties.
345 	TrackedProp_UnknownProperty = 4, /// Used to return errors that occur when reading properties.
346 	TrackedProp_InvalidDevice = 5, /// Used to return errors that occur when reading properties.
347 	TrackedProp_CouldNotContactServer = 6, /// Used to return errors that occur when reading properties.
348 	TrackedProp_ValueNotProvidedByDevice = 7, /// Used to return errors that occur when reading properties.
349 	TrackedProp_StringExceedsMaximumLength = 8, /// Used to return errors that occur when reading properties.
350 	TrackedProp_NotYetAvailable = 9, /// Used to return errors that occur when reading properties.
351 	TrackedProp_PermissionDenied = 10, /// Used to return errors that occur when reading properties.
352 	TrackedProp_InvalidOperation = 11, /// Used to return errors that occur when reading properties.
353 	TrackedProp_CannotWriteToWildcards = 12, /// Used to return errors that occur when reading properties.
354 	TrackedProp_IPCReadFailure = 13, /// Used to return errors that occur when reading properties.
355 	TrackedProp_OutOfMemory = 14, /// Used to return errors that occur when reading properties.
356 	TrackedProp_InvalidContainer = 15, /// Used to return errors that occur when reading properties.
357 }
358 
359 /// Used to drive certain text in the UI when talking about the tracking system for the HMD
360 enum EHmdTrackingStyle
361 {
362 	Unknown = 0, /// Used to drive certain text in the UI when talking about the tracking system for the HMD
363 	Lighthouse = 1, /// Used to drive certain text in the UI when talking about the tracking system for the HMD
364 	OutsideInCameras = 2, /// Used to drive certain text in the UI when talking about the tracking system for the HMD
365 	InsideOutCameras = 3, /// Used to drive certain text in the UI when talking about the tracking system for the HMD
366 }
367 
368 /// Allows the application to control how scene textures are used by the compositor when calling Submit.
369 enum EVRSubmitFlags
370 {
371 	Submit_Default = 0, /// Allows the application to control how scene textures are used by the compositor when calling Submit.
372 	Submit_LensDistortionAlreadyApplied = 1, /// Allows the application to control how scene textures are used by the compositor when calling Submit.
373 	Submit_GlRenderBuffer = 2, /// Allows the application to control how scene textures are used by the compositor when calling Submit.
374 	Submit_Reserved = 4, /// Allows the application to control how scene textures are used by the compositor when calling Submit.
375 	Submit_TextureWithPose = 8, /// Allows the application to control how scene textures are used by the compositor when calling Submit.
376 	Submit_TextureWithDepth = 16, /// Allows the application to control how scene textures are used by the compositor when calling Submit.
377 	Submit_FrameDiscontinuty = 32, /// Allows the application to control how scene textures are used by the compositor when calling Submit.
378 }
379 
380 /// Status of the overall system or tracked objects
381 enum EVRState
382 {
383 	Undefined = -1, /// Status of the overall system or tracked objects
384 	Off = 0, /// Status of the overall system or tracked objects
385 	Searching = 1, /// Status of the overall system or tracked objects
386 	Searching_Alert = 2, /// Status of the overall system or tracked objects
387 	Ready = 3, /// Status of the overall system or tracked objects
388 	Ready_Alert = 4, /// Status of the overall system or tracked objects
389 	NotReady = 5, /// Status of the overall system or tracked objects
390 	Standby = 6, /// Status of the overall system or tracked objects
391 	Ready_Alert_Low = 7, /// Status of the overall system or tracked objects
392 }
393 
394 /// The types of events that could be posted (and what the parameters mean for each event type)
395 enum EVREventType
396 {
397 	VREvent_None = 0, /// The types of events that could be posted (and what the parameters mean for each event type)
398 	VREvent_TrackedDeviceActivated = 100, /// The types of events that could be posted (and what the parameters mean for each event type)
399 	VREvent_TrackedDeviceDeactivated = 101, /// The types of events that could be posted (and what the parameters mean for each event type)
400 	VREvent_TrackedDeviceUpdated = 102, /// The types of events that could be posted (and what the parameters mean for each event type)
401 	VREvent_TrackedDeviceUserInteractionStarted = 103, /// The types of events that could be posted (and what the parameters mean for each event type)
402 	VREvent_TrackedDeviceUserInteractionEnded = 104, /// The types of events that could be posted (and what the parameters mean for each event type)
403 	VREvent_IpdChanged = 105, /// The types of events that could be posted (and what the parameters mean for each event type)
404 	VREvent_EnterStandbyMode = 106, /// The types of events that could be posted (and what the parameters mean for each event type)
405 	VREvent_LeaveStandbyMode = 107, /// The types of events that could be posted (and what the parameters mean for each event type)
406 	VREvent_TrackedDeviceRoleChanged = 108, /// The types of events that could be posted (and what the parameters mean for each event type)
407 	VREvent_WatchdogWakeUpRequested = 109, /// The types of events that could be posted (and what the parameters mean for each event type)
408 	VREvent_LensDistortionChanged = 110, /// The types of events that could be posted (and what the parameters mean for each event type)
409 	VREvent_PropertyChanged = 111, /// The types of events that could be posted (and what the parameters mean for each event type)
410 	VREvent_WirelessDisconnect = 112, /// The types of events that could be posted (and what the parameters mean for each event type)
411 	VREvent_WirelessReconnect = 113, /// The types of events that could be posted (and what the parameters mean for each event type)
412 	VREvent_ButtonPress = 200, /// The types of events that could be posted (and what the parameters mean for each event type)
413 	VREvent_ButtonUnpress = 201, /// The types of events that could be posted (and what the parameters mean for each event type)
414 	VREvent_ButtonTouch = 202, /// The types of events that could be posted (and what the parameters mean for each event type)
415 	VREvent_ButtonUntouch = 203, /// The types of events that could be posted (and what the parameters mean for each event type)
416 	VREvent_Modal_Cancel = 257, /// The types of events that could be posted (and what the parameters mean for each event type)
417 	VREvent_MouseMove = 300, /// The types of events that could be posted (and what the parameters mean for each event type)
418 	VREvent_MouseButtonDown = 301, /// The types of events that could be posted (and what the parameters mean for each event type)
419 	VREvent_MouseButtonUp = 302, /// The types of events that could be posted (and what the parameters mean for each event type)
420 	VREvent_FocusEnter = 303, /// The types of events that could be posted (and what the parameters mean for each event type)
421 	VREvent_FocusLeave = 304, /// The types of events that could be posted (and what the parameters mean for each event type)
422 	VREvent_ScrollDiscrete = 305, /// The types of events that could be posted (and what the parameters mean for each event type)
423 	VREvent_TouchPadMove = 306, /// The types of events that could be posted (and what the parameters mean for each event type)
424 	VREvent_OverlayFocusChanged = 307, /// The types of events that could be posted (and what the parameters mean for each event type)
425 	VREvent_ReloadOverlays = 308, /// The types of events that could be posted (and what the parameters mean for each event type)
426 	VREvent_ScrollSmooth = 309, /// The types of events that could be posted (and what the parameters mean for each event type)
427 	VREvent_LockMousePosition = 310, /// The types of events that could be posted (and what the parameters mean for each event type)
428 	VREvent_UnlockMousePosition = 311, /// The types of events that could be posted (and what the parameters mean for each event type)
429 	VREvent_InputFocusCaptured = 400, /// The types of events that could be posted (and what the parameters mean for each event type)
430 	VREvent_InputFocusReleased = 401, /// The types of events that could be posted (and what the parameters mean for each event type)
431 	VREvent_SceneApplicationChanged = 404, /// The types of events that could be posted (and what the parameters mean for each event type)
432 	VREvent_SceneFocusChanged = 405, /// The types of events that could be posted (and what the parameters mean for each event type)
433 	VREvent_InputFocusChanged = 406, /// The types of events that could be posted (and what the parameters mean for each event type)
434 	VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408, /// The types of events that could be posted (and what the parameters mean for each event type)
435 	VREvent_ActionBindingReloaded = 409, /// The types of events that could be posted (and what the parameters mean for each event type)
436 	VREvent_HideRenderModels = 410, /// The types of events that could be posted (and what the parameters mean for each event type)
437 	VREvent_ShowRenderModels = 411, /// The types of events that could be posted (and what the parameters mean for each event type)
438 	VREvent_SceneApplicationStateChanged = 412, /// The types of events that could be posted (and what the parameters mean for each event type)
439 	VREvent_ConsoleOpened = 420, /// The types of events that could be posted (and what the parameters mean for each event type)
440 	VREvent_ConsoleClosed = 421, /// The types of events that could be posted (and what the parameters mean for each event type)
441 	VREvent_OverlayShown = 500, /// The types of events that could be posted (and what the parameters mean for each event type)
442 	VREvent_OverlayHidden = 501, /// The types of events that could be posted (and what the parameters mean for each event type)
443 	VREvent_DashboardActivated = 502, /// The types of events that could be posted (and what the parameters mean for each event type)
444 	VREvent_DashboardDeactivated = 503, /// The types of events that could be posted (and what the parameters mean for each event type)
445 	VREvent_DashboardRequested = 505, /// The types of events that could be posted (and what the parameters mean for each event type)
446 	VREvent_ResetDashboard = 506, /// The types of events that could be posted (and what the parameters mean for each event type)
447 	VREvent_ImageLoaded = 508, /// The types of events that could be posted (and what the parameters mean for each event type)
448 	VREvent_ShowKeyboard = 509, /// The types of events that could be posted (and what the parameters mean for each event type)
449 	VREvent_HideKeyboard = 510, /// The types of events that could be posted (and what the parameters mean for each event type)
450 	VREvent_OverlayGamepadFocusGained = 511, /// The types of events that could be posted (and what the parameters mean for each event type)
451 	VREvent_OverlayGamepadFocusLost = 512, /// The types of events that could be posted (and what the parameters mean for each event type)
452 	VREvent_OverlaySharedTextureChanged = 513, /// The types of events that could be posted (and what the parameters mean for each event type)
453 	VREvent_ScreenshotTriggered = 516, /// The types of events that could be posted (and what the parameters mean for each event type)
454 	VREvent_ImageFailed = 517, /// The types of events that could be posted (and what the parameters mean for each event type)
455 	VREvent_DashboardOverlayCreated = 518, /// The types of events that could be posted (and what the parameters mean for each event type)
456 	VREvent_SwitchGamepadFocus = 519, /// The types of events that could be posted (and what the parameters mean for each event type)
457 	VREvent_RequestScreenshot = 520, /// The types of events that could be posted (and what the parameters mean for each event type)
458 	VREvent_ScreenshotTaken = 521, /// The types of events that could be posted (and what the parameters mean for each event type)
459 	VREvent_ScreenshotFailed = 522, /// The types of events that could be posted (and what the parameters mean for each event type)
460 	VREvent_SubmitScreenshotToDashboard = 523, /// The types of events that could be posted (and what the parameters mean for each event type)
461 	VREvent_ScreenshotProgressToDashboard = 524, /// The types of events that could be posted (and what the parameters mean for each event type)
462 	VREvent_PrimaryDashboardDeviceChanged = 525, /// The types of events that could be posted (and what the parameters mean for each event type)
463 	VREvent_RoomViewShown = 526, /// The types of events that could be posted (and what the parameters mean for each event type)
464 	VREvent_RoomViewHidden = 527, /// The types of events that could be posted (and what the parameters mean for each event type)
465 	VREvent_ShowUI = 528, /// The types of events that could be posted (and what the parameters mean for each event type)
466 	VREvent_ShowDevTools = 529, /// The types of events that could be posted (and what the parameters mean for each event type)
467 	VREvent_Notification_Shown = 600, /// The types of events that could be posted (and what the parameters mean for each event type)
468 	VREvent_Notification_Hidden = 601, /// The types of events that could be posted (and what the parameters mean for each event type)
469 	VREvent_Notification_BeginInteraction = 602, /// The types of events that could be posted (and what the parameters mean for each event type)
470 	VREvent_Notification_Destroyed = 603, /// The types of events that could be posted (and what the parameters mean for each event type)
471 	VREvent_Quit = 700, /// The types of events that could be posted (and what the parameters mean for each event type)
472 	VREvent_ProcessQuit = 701, /// The types of events that could be posted (and what the parameters mean for each event type)
473 	VREvent_QuitAcknowledged = 703, /// The types of events that could be posted (and what the parameters mean for each event type)
474 	VREvent_DriverRequestedQuit = 704, /// The types of events that could be posted (and what the parameters mean for each event type)
475 	VREvent_RestartRequested = 705, /// The types of events that could be posted (and what the parameters mean for each event type)
476 	VREvent_ChaperoneDataHasChanged = 800, /// The types of events that could be posted (and what the parameters mean for each event type)
477 	VREvent_ChaperoneUniverseHasChanged = 801, /// The types of events that could be posted (and what the parameters mean for each event type)
478 	VREvent_ChaperoneTempDataHasChanged = 802, /// The types of events that could be posted (and what the parameters mean for each event type)
479 	VREvent_ChaperoneSettingsHaveChanged = 803, /// The types of events that could be posted (and what the parameters mean for each event type)
480 	VREvent_SeatedZeroPoseReset = 804, /// The types of events that could be posted (and what the parameters mean for each event type)
481 	VREvent_ChaperoneFlushCache = 805, /// The types of events that could be posted (and what the parameters mean for each event type)
482 	VREvent_ChaperoneRoomSetupStarting = 806, /// The types of events that could be posted (and what the parameters mean for each event type)
483 	VREvent_ChaperoneRoomSetupFinished = 807, /// The types of events that could be posted (and what the parameters mean for each event type)
484 	VREvent_AudioSettingsHaveChanged = 820, /// The types of events that could be posted (and what the parameters mean for each event type)
485 	VREvent_BackgroundSettingHasChanged = 850, /// The types of events that could be posted (and what the parameters mean for each event type)
486 	VREvent_CameraSettingsHaveChanged = 851, /// The types of events that could be posted (and what the parameters mean for each event type)
487 	VREvent_ReprojectionSettingHasChanged = 852, /// The types of events that could be posted (and what the parameters mean for each event type)
488 	VREvent_ModelSkinSettingsHaveChanged = 853, /// The types of events that could be posted (and what the parameters mean for each event type)
489 	VREvent_EnvironmentSettingsHaveChanged = 854, /// The types of events that could be posted (and what the parameters mean for each event type)
490 	VREvent_PowerSettingsHaveChanged = 855, /// The types of events that could be posted (and what the parameters mean for each event type)
491 	VREvent_EnableHomeAppSettingsHaveChanged = 856, /// The types of events that could be posted (and what the parameters mean for each event type)
492 	VREvent_SteamVRSectionSettingChanged = 857, /// The types of events that could be posted (and what the parameters mean for each event type)
493 	VREvent_LighthouseSectionSettingChanged = 858, /// The types of events that could be posted (and what the parameters mean for each event type)
494 	VREvent_NullSectionSettingChanged = 859, /// The types of events that could be posted (and what the parameters mean for each event type)
495 	VREvent_UserInterfaceSectionSettingChanged = 860, /// The types of events that could be posted (and what the parameters mean for each event type)
496 	VREvent_NotificationsSectionSettingChanged = 861, /// The types of events that could be posted (and what the parameters mean for each event type)
497 	VREvent_KeyboardSectionSettingChanged = 862, /// The types of events that could be posted (and what the parameters mean for each event type)
498 	VREvent_PerfSectionSettingChanged = 863, /// The types of events that could be posted (and what the parameters mean for each event type)
499 	VREvent_DashboardSectionSettingChanged = 864, /// The types of events that could be posted (and what the parameters mean for each event type)
500 	VREvent_WebInterfaceSectionSettingChanged = 865, /// The types of events that could be posted (and what the parameters mean for each event type)
501 	VREvent_TrackersSectionSettingChanged = 866, /// The types of events that could be posted (and what the parameters mean for each event type)
502 	VREvent_LastKnownSectionSettingChanged = 867, /// The types of events that could be posted (and what the parameters mean for each event type)
503 	VREvent_DismissedWarningsSectionSettingChanged = 868, /// The types of events that could be posted (and what the parameters mean for each event type)
504 	VREvent_GpuSpeedSectionSettingChanged = 869, /// The types of events that could be posted (and what the parameters mean for each event type)
505 	VREvent_WindowsMRSectionSettingChanged = 870, /// The types of events that could be posted (and what the parameters mean for each event type)
506 	VREvent_OtherSectionSettingChanged = 871, /// The types of events that could be posted (and what the parameters mean for each event type)
507 	VREvent_StatusUpdate = 900, /// The types of events that could be posted (and what the parameters mean for each event type)
508 	VREvent_WebInterface_InstallDriverCompleted = 950, /// The types of events that could be posted (and what the parameters mean for each event type)
509 	VREvent_MCImageUpdated = 1000, /// The types of events that could be posted (and what the parameters mean for each event type)
510 	VREvent_FirmwareUpdateStarted = 1100, /// The types of events that could be posted (and what the parameters mean for each event type)
511 	VREvent_FirmwareUpdateFinished = 1101, /// The types of events that could be posted (and what the parameters mean for each event type)
512 	VREvent_KeyboardClosed = 1200, /// The types of events that could be posted (and what the parameters mean for each event type)
513 	VREvent_KeyboardCharInput = 1201, /// The types of events that could be posted (and what the parameters mean for each event type)
514 	VREvent_KeyboardDone = 1202, /// The types of events that could be posted (and what the parameters mean for each event type)
515 	VREvent_ApplicationListUpdated = 1303, /// The types of events that could be posted (and what the parameters mean for each event type)
516 	VREvent_ApplicationMimeTypeLoad = 1304, /// The types of events that could be posted (and what the parameters mean for each event type)
517 	VREvent_ProcessConnected = 1306, /// The types of events that could be posted (and what the parameters mean for each event type)
518 	VREvent_ProcessDisconnected = 1307, /// The types of events that could be posted (and what the parameters mean for each event type)
519 	VREvent_Compositor_ChaperoneBoundsShown = 1410, /// The types of events that could be posted (and what the parameters mean for each event type)
520 	VREvent_Compositor_ChaperoneBoundsHidden = 1411, /// The types of events that could be posted (and what the parameters mean for each event type)
521 	VREvent_Compositor_DisplayDisconnected = 1412, /// The types of events that could be posted (and what the parameters mean for each event type)
522 	VREvent_Compositor_DisplayReconnected = 1413, /// The types of events that could be posted (and what the parameters mean for each event type)
523 	VREvent_Compositor_HDCPError = 1414, /// The types of events that could be posted (and what the parameters mean for each event type)
524 	VREvent_Compositor_ApplicationNotResponding = 1415, /// The types of events that could be posted (and what the parameters mean for each event type)
525 	VREvent_Compositor_ApplicationResumed = 1416, /// The types of events that could be posted (and what the parameters mean for each event type)
526 	VREvent_Compositor_OutOfVideoMemory = 1417, /// The types of events that could be posted (and what the parameters mean for each event type)
527 	VREvent_Compositor_DisplayModeNotSupported = 1418, /// The types of events that could be posted (and what the parameters mean for each event type)
528 	VREvent_Compositor_StageOverrideReady = 1419, /// The types of events that could be posted (and what the parameters mean for each event type)
529 	VREvent_TrackedCamera_StartVideoStream = 1500, /// The types of events that could be posted (and what the parameters mean for each event type)
530 	VREvent_TrackedCamera_StopVideoStream = 1501, /// The types of events that could be posted (and what the parameters mean for each event type)
531 	VREvent_TrackedCamera_PauseVideoStream = 1502, /// The types of events that could be posted (and what the parameters mean for each event type)
532 	VREvent_TrackedCamera_ResumeVideoStream = 1503, /// The types of events that could be posted (and what the parameters mean for each event type)
533 	VREvent_TrackedCamera_EditingSurface = 1550, /// The types of events that could be posted (and what the parameters mean for each event type)
534 	VREvent_PerformanceTest_EnableCapture = 1600, /// The types of events that could be posted (and what the parameters mean for each event type)
535 	VREvent_PerformanceTest_DisableCapture = 1601, /// The types of events that could be posted (and what the parameters mean for each event type)
536 	VREvent_PerformanceTest_FidelityLevel = 1602, /// The types of events that could be posted (and what the parameters mean for each event type)
537 	VREvent_MessageOverlay_Closed = 1650, /// The types of events that could be posted (and what the parameters mean for each event type)
538 	VREvent_MessageOverlayCloseRequested = 1651, /// The types of events that could be posted (and what the parameters mean for each event type)
539 	VREvent_Input_HapticVibration = 1700, /// The types of events that could be posted (and what the parameters mean for each event type)
540 	VREvent_Input_BindingLoadFailed = 1701, /// The types of events that could be posted (and what the parameters mean for each event type)
541 	VREvent_Input_BindingLoadSuccessful = 1702, /// The types of events that could be posted (and what the parameters mean for each event type)
542 	VREvent_Input_ActionManifestReloaded = 1703, /// The types of events that could be posted (and what the parameters mean for each event type)
543 	VREvent_Input_ActionManifestLoadFailed = 1704, /// The types of events that could be posted (and what the parameters mean for each event type)
544 	VREvent_Input_ProgressUpdate = 1705, /// The types of events that could be posted (and what the parameters mean for each event type)
545 	VREvent_Input_TrackerActivated = 1706, /// The types of events that could be posted (and what the parameters mean for each event type)
546 	VREvent_Input_BindingsUpdated = 1707, /// The types of events that could be posted (and what the parameters mean for each event type)
547 	VREvent_Input_BindingSubscriptionChanged = 1708, /// The types of events that could be posted (and what the parameters mean for each event type)
548 	VREvent_SpatialAnchors_PoseUpdated = 1800, /// The types of events that could be posted (and what the parameters mean for each event type)
549 	VREvent_SpatialAnchors_DescriptorUpdated = 1801, /// The types of events that could be posted (and what the parameters mean for each event type)
550 	VREvent_SpatialAnchors_RequestPoseUpdate = 1802, /// The types of events that could be posted (and what the parameters mean for each event type)
551 	VREvent_SpatialAnchors_RequestDescriptorUpdate = 1803, /// The types of events that could be posted (and what the parameters mean for each event type)
552 	VREvent_SystemReport_Started = 1900, /// The types of events that could be posted (and what the parameters mean for each event type)
553 	VREvent_Monitor_ShowHeadsetView = 2000, /// The types of events that could be posted (and what the parameters mean for each event type)
554 	VREvent_Monitor_HideHeadsetView = 2001, /// The types of events that could be posted (and what the parameters mean for each event type)
555 	VREvent_VendorSpecific_Reserved_Start = 10000, /// The types of events that could be posted (and what the parameters mean for each event type)
556 	VREvent_VendorSpecific_Reserved_End = 19999, /// The types of events that could be posted (and what the parameters mean for each event type)
557 }
558 
559 /// Level of Hmd activity
560 /// UserInteraction_Timeout means the device is in the process of timing out.
561 /// InUse = ( k_EDeviceActivityLevel_UserInteraction || k_EDeviceActivityLevel_UserInteraction_Timeout )
562 /// VREvent_TrackedDeviceUserInteractionStarted fires when the devices transitions from Standby -> UserInteraction or Idle -> UserInteraction.
563 /// VREvent_TrackedDeviceUserInteractionEnded fires when the devices transitions from UserInteraction_Timeout -> Idle
564 enum EDeviceActivityLevel
565 {
566 	/// Level of Hmd activity
567 	/// UserInteraction_Timeout means the device is in the process of timing out.
568 	/// InUse = ( k_EDeviceActivityLevel_UserInteraction || k_EDeviceActivityLevel_UserInteraction_Timeout )
569 	/// VREvent_TrackedDeviceUserInteractionStarted fires when the devices transitions from Standby -> UserInteraction or Idle -> UserInteraction.
570 	/// VREvent_TrackedDeviceUserInteractionEnded fires when the devices transitions from UserInteraction_Timeout -> Idle
571 	k_EDeviceActivityLevel_Unknown = -1,
572 	/// Level of Hmd activity
573 	/// UserInteraction_Timeout means the device is in the process of timing out.
574 	/// InUse = ( k_EDeviceActivityLevel_UserInteraction || k_EDeviceActivityLevel_UserInteraction_Timeout )
575 	/// VREvent_TrackedDeviceUserInteractionStarted fires when the devices transitions from Standby -> UserInteraction or Idle -> UserInteraction.
576 	/// VREvent_TrackedDeviceUserInteractionEnded fires when the devices transitions from UserInteraction_Timeout -> Idle
577 	k_EDeviceActivityLevel_Idle = 0,
578 	/// Level of Hmd activity
579 	/// UserInteraction_Timeout means the device is in the process of timing out.
580 	/// InUse = ( k_EDeviceActivityLevel_UserInteraction || k_EDeviceActivityLevel_UserInteraction_Timeout )
581 	/// VREvent_TrackedDeviceUserInteractionStarted fires when the devices transitions from Standby -> UserInteraction or Idle -> UserInteraction.
582 	/// VREvent_TrackedDeviceUserInteractionEnded fires when the devices transitions from UserInteraction_Timeout -> Idle
583 	k_EDeviceActivityLevel_UserInteraction = 1,
584 	/// Level of Hmd activity
585 	/// UserInteraction_Timeout means the device is in the process of timing out.
586 	/// InUse = ( k_EDeviceActivityLevel_UserInteraction || k_EDeviceActivityLevel_UserInteraction_Timeout )
587 	/// VREvent_TrackedDeviceUserInteractionStarted fires when the devices transitions from Standby -> UserInteraction or Idle -> UserInteraction.
588 	/// VREvent_TrackedDeviceUserInteractionEnded fires when the devices transitions from UserInteraction_Timeout -> Idle
589 	k_EDeviceActivityLevel_UserInteraction_Timeout = 2,
590 	/// Level of Hmd activity
591 	/// UserInteraction_Timeout means the device is in the process of timing out.
592 	/// InUse = ( k_EDeviceActivityLevel_UserInteraction || k_EDeviceActivityLevel_UserInteraction_Timeout )
593 	/// VREvent_TrackedDeviceUserInteractionStarted fires when the devices transitions from Standby -> UserInteraction or Idle -> UserInteraction.
594 	/// VREvent_TrackedDeviceUserInteractionEnded fires when the devices transitions from UserInteraction_Timeout -> Idle
595 	k_EDeviceActivityLevel_Standby = 3,
596 	/// Level of Hmd activity
597 	/// UserInteraction_Timeout means the device is in the process of timing out.
598 	/// InUse = ( k_EDeviceActivityLevel_UserInteraction || k_EDeviceActivityLevel_UserInteraction_Timeout )
599 	/// VREvent_TrackedDeviceUserInteractionStarted fires when the devices transitions from Standby -> UserInteraction or Idle -> UserInteraction.
600 	/// VREvent_TrackedDeviceUserInteractionEnded fires when the devices transitions from UserInteraction_Timeout -> Idle
601 	k_EDeviceActivityLevel_Idle_Timeout = 4,
602 }
603 
604 /// VR controller button and axis IDs
605 enum EVRButtonId
606 {
607 	k_EButton_System = 0, /// VR controller button and axis IDs
608 	k_EButton_ApplicationMenu = 1, /// VR controller button and axis IDs
609 	k_EButton_Grip = 2, /// VR controller button and axis IDs
610 	k_EButton_DPad_Left = 3, /// VR controller button and axis IDs
611 	k_EButton_DPad_Up = 4, /// VR controller button and axis IDs
612 	k_EButton_DPad_Right = 5, /// VR controller button and axis IDs
613 	k_EButton_DPad_Down = 6, /// VR controller button and axis IDs
614 	k_EButton_A = 7, /// VR controller button and axis IDs
615 	k_EButton_ProximitySensor = 31, /// VR controller button and axis IDs
616 	k_EButton_Axis0 = 32, /// VR controller button and axis IDs
617 	k_EButton_Axis1 = 33, /// VR controller button and axis IDs
618 	k_EButton_Axis2 = 34, /// VR controller button and axis IDs
619 	k_EButton_Axis3 = 35, /// VR controller button and axis IDs
620 	k_EButton_Axis4 = 36, /// VR controller button and axis IDs
621 	k_EButton_SteamVR_Touchpad = 32, /// VR controller button and axis IDs
622 	k_EButton_SteamVR_Trigger = 33, /// VR controller button and axis IDs
623 	k_EButton_Dashboard_Back = 2, /// VR controller button and axis IDs
624 	k_EButton_IndexController_A = 2, /// VR controller button and axis IDs
625 	k_EButton_IndexController_B = 1, /// VR controller button and axis IDs
626 	k_EButton_IndexController_JoyStick = 35, /// VR controller button and axis IDs
627 	k_EButton_Max = 64, /// VR controller button and axis IDs
628 }
629 
630 /// used for simulated mouse events in overlay space
631 enum EVRMouseButton
632 {
633 	Left = 1, /// used for simulated mouse events in overlay space
634 	Right = 2, /// used for simulated mouse events in overlay space
635 	Middle = 4, /// used for simulated mouse events in overlay space
636 }
637 
638 ///
639 enum EShowUIType
640 {
641 	ShowUI_ControllerBinding = 0, ///
642 	ShowUI_ManageTrackers = 1, ///
643 	ShowUI_Pairing = 3, ///
644 	ShowUI_Settings = 4, ///
645 	ShowUI_DebugCommands = 5, ///
646 	ShowUI_FullControllerBinding = 6, ///
647 	ShowUI_ManageDrivers = 7, ///
648 }
649 
650 ///
651 enum EHDCPError
652 {
653 	None = 0, ///
654 	LinkLost = 1, ///
655 	Tampered = 2, ///
656 	DeviceRevoked = 3, ///
657 	Unknown = 4, ///
658 }
659 
660 ///
661 enum EVRComponentProperty
662 {
663 	IsStatic = 1, ///
664 	IsVisible = 2, ///
665 	IsTouched = 4, ///
666 	IsPressed = 8, ///
667 	IsScrolled = 16, ///
668 	IsHighlighted = 32, ///
669 }
670 
671 ///
672 enum EVRInputError
673 {
674 	None = 0, ///
675 	NameNotFound = 1, ///
676 	WrongType = 2, ///
677 	InvalidHandle = 3, ///
678 	InvalidParam = 4, ///
679 	NoSteam = 5, ///
680 	MaxCapacityReached = 6, ///
681 	IPCError = 7, ///
682 	NoActiveActionSet = 8, ///
683 	InvalidDevice = 9, ///
684 	InvalidSkeleton = 10, ///
685 	InvalidBoneCount = 11, ///
686 	InvalidCompressedData = 12, ///
687 	NoData = 13, ///
688 	BufferTooSmall = 14, ///
689 	MismatchedActionManifest = 15, ///
690 	MissingSkeletonData = 16, ///
691 	InvalidBoneIndex = 17, ///
692 	InvalidPriority = 18, ///
693 	PermissionDenied = 19, ///
694 	InvalidRenderModel = 20, ///
695 }
696 
697 ///
698 enum EVRSpatialAnchorError
699 {
700 	Success = 0, ///
701 	Internal = 1, ///
702 	UnknownHandle = 2, ///
703 	ArrayTooSmall = 3, ///
704 	InvalidDescriptorChar = 4, ///
705 	NotYetAvailable = 5, ///
706 	NotAvailableInThisUniverse = 6, ///
707 	PermanentlyUnavailable = 7, ///
708 	WrongDriver = 8, ///
709 	DescriptorTooLong = 9, ///
710 	Unknown = 10, ///
711 	NoRoomCalibration = 11, ///
712 	InvalidArgument = 12, ///
713 	UnknownDriver = 13, ///
714 }
715 
716 ///
717 enum EHiddenAreaMeshType
718 {
719 	k_eHiddenAreaMesh_Standard = 0, ///
720 	k_eHiddenAreaMesh_Inverse = 1, ///
721 	k_eHiddenAreaMesh_LineLoop = 2, ///
722 	k_eHiddenAreaMesh_Max = 3, ///
723 }
724 
725 /// Identifies what kind of axis is on the controller at index n. Read this type with pVRSystem->Get( nControllerDeviceIndex, Prop_Axis0Type_Int32 + n );
726 enum EVRControllerAxisType
727 {
728 	k_eControllerAxis_None = 0, /// Identifies what kind of axis is on the controller at index n. Read this type with pVRSystem->Get( nControllerDeviceIndex, Prop_Axis0Type_Int32 + n );
729 	k_eControllerAxis_TrackPad = 1, /// Identifies what kind of axis is on the controller at index n. Read this type with pVRSystem->Get( nControllerDeviceIndex, Prop_Axis0Type_Int32 + n );
730 	k_eControllerAxis_Joystick = 2, /// Identifies what kind of axis is on the controller at index n. Read this type with pVRSystem->Get( nControllerDeviceIndex, Prop_Axis0Type_Int32 + n );
731 	k_eControllerAxis_Trigger = 3, /// Identifies what kind of axis is on the controller at index n. Read this type with pVRSystem->Get( nControllerDeviceIndex, Prop_Axis0Type_Int32 + n );
732 }
733 
734 /// determines how to provide output to the application of various event processing functions.
735 enum EVRControllerEventOutputType
736 {
737 	ControllerEventOutput_OSEvents = 0, /// determines how to provide output to the application of various event processing functions.
738 	ControllerEventOutput_VREvents = 1, /// determines how to provide output to the application of various event processing functions.
739 }
740 
741 /// Collision Bounds Style
742 enum ECollisionBoundsStyle
743 {
744 	COLLISION_BOUNDS_STYLE_BEGINNER = 0, /// Collision Bounds Style
745 	COLLISION_BOUNDS_STYLE_INTERMEDIATE = 1, /// Collision Bounds Style
746 	COLLISION_BOUNDS_STYLE_SQUARES = 2, /// Collision Bounds Style
747 	COLLISION_BOUNDS_STYLE_ADVANCED = 3, /// Collision Bounds Style
748 	COLLISION_BOUNDS_STYLE_NONE = 4, /// Collision Bounds Style
749 	COLLISION_BOUNDS_STYLE_COUNT = 5, /// Collision Bounds Style
750 }
751 
752 /// Errors that can occur around VR overlays
753 enum EVROverlayError
754 {
755 	None = 0, /// Errors that can occur around VR overlays
756 	UnknownOverlay = 10, /// Errors that can occur around VR overlays
757 	InvalidHandle = 11, /// Errors that can occur around VR overlays
758 	PermissionDenied = 12, /// Errors that can occur around VR overlays
759 	OverlayLimitExceeded = 13, /// Errors that can occur around VR overlays
760 	WrongVisibilityType = 14, /// Errors that can occur around VR overlays
761 	KeyTooLong = 15, /// Errors that can occur around VR overlays
762 	NameTooLong = 16, /// Errors that can occur around VR overlays
763 	KeyInUse = 17, /// Errors that can occur around VR overlays
764 	WrongTransformType = 18, /// Errors that can occur around VR overlays
765 	InvalidTrackedDevice = 19, /// Errors that can occur around VR overlays
766 	InvalidParameter = 20, /// Errors that can occur around VR overlays
767 	ThumbnailCantBeDestroyed = 21, /// Errors that can occur around VR overlays
768 	ArrayTooSmall = 22, /// Errors that can occur around VR overlays
769 	RequestFailed = 23, /// Errors that can occur around VR overlays
770 	InvalidTexture = 24, /// Errors that can occur around VR overlays
771 	UnableToLoadFile = 25, /// Errors that can occur around VR overlays
772 	KeyboardAlreadyInUse = 26, /// Errors that can occur around VR overlays
773 	NoNeighbor = 27, /// Errors that can occur around VR overlays
774 	TooManyMaskPrimitives = 29, /// Errors that can occur around VR overlays
775 	BadMaskPrimitive = 30, /// Errors that can occur around VR overlays
776 	TextureAlreadyLocked = 31, /// Errors that can occur around VR overlays
777 	TextureLockCapacityReached = 32, /// Errors that can occur around VR overlays
778 	TextureNotLocked = 33, /// Errors that can occur around VR overlays
779 }
780 
781 /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
782 enum EVRApplicationType
783 {
784 	VRApplication_Other = 0, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
785 	VRApplication_Scene = 1, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
786 	VRApplication_Overlay = 2, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
787 	VRApplication_Background = 3, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
788 	VRApplication_Utility = 4, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
789 	VRApplication_VRMonitor = 5, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
790 	VRApplication_SteamWatchdog = 6, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
791 	VRApplication_Bootstrapper = 7, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
792 	VRApplication_WebHelper = 8, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
793 	VRApplication_Max = 9, /// enum values to pass in to VR_Init to identify whether the application will draw a 3D scene.
794 }
795 
796 /// error codes for firmware
797 enum EVRFirmwareError
798 {
799 	None = 0, /// error codes for firmware
800 	Success = 1, /// error codes for firmware
801 	Fail = 2, /// error codes for firmware
802 }
803 
804 /// error codes for notifications
805 enum EVRNotificationError
806 {
807 	OK = 0, /// error codes for notifications
808 	InvalidNotificationId = 100, /// error codes for notifications
809 	NotificationQueueFull = 101, /// error codes for notifications
810 	InvalidOverlayHandle = 102, /// error codes for notifications
811 	SystemWithUserValueAlreadyExists = 103, /// error codes for notifications
812 }
813 
814 ///
815 enum EVRSkeletalMotionRange
816 {
817 	WithController = 0, ///
818 	WithoutController = 1, ///
819 }
820 
821 ///
822 enum EVRSkeletalTrackingLevel
823 {
824 	VRSkeletalTracking_Estimated = 0, ///
825 	VRSkeletalTracking_Partial = 1, ///
826 	VRSkeletalTracking_Full = 2, ///
827 	Count = 3, ///
828 	Max = 2, ///
829 }
830 
831 /// error codes returned by Vr_Init
832 /// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
833 enum EVRInitError
834 {
835 	/// error codes returned by Vr_Init
836 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
837 	None = 0,
838 	/// error codes returned by Vr_Init
839 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
840 	Unknown = 1,
841 	/// error codes returned by Vr_Init
842 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
843 	Init_InstallationNotFound = 100,
844 	/// error codes returned by Vr_Init
845 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
846 	Init_InstallationCorrupt = 101,
847 	/// error codes returned by Vr_Init
848 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
849 	Init_VRClientDLLNotFound = 102,
850 	/// error codes returned by Vr_Init
851 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
852 	Init_FileNotFound = 103,
853 	/// error codes returned by Vr_Init
854 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
855 	Init_FactoryNotFound = 104,
856 	/// error codes returned by Vr_Init
857 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
858 	Init_InterfaceNotFound = 105,
859 	/// error codes returned by Vr_Init
860 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
861 	Init_InvalidInterface = 106,
862 	/// error codes returned by Vr_Init
863 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
864 	Init_UserConfigDirectoryInvalid = 107,
865 	/// error codes returned by Vr_Init
866 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
867 	Init_HmdNotFound = 108,
868 	/// error codes returned by Vr_Init
869 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
870 	Init_NotInitialized = 109,
871 	/// error codes returned by Vr_Init
872 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
873 	Init_PathRegistryNotFound = 110,
874 	/// error codes returned by Vr_Init
875 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
876 	Init_NoConfigPath = 111,
877 	/// error codes returned by Vr_Init
878 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
879 	Init_NoLogPath = 112,
880 	/// error codes returned by Vr_Init
881 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
882 	Init_PathRegistryNotWritable = 113,
883 	/// error codes returned by Vr_Init
884 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
885 	Init_AppInfoInitFailed = 114,
886 	/// error codes returned by Vr_Init
887 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
888 	Init_Retry = 115,
889 	/// error codes returned by Vr_Init
890 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
891 	Init_InitCanceledByUser = 116,
892 	/// error codes returned by Vr_Init
893 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
894 	Init_AnotherAppLaunching = 117,
895 	/// error codes returned by Vr_Init
896 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
897 	Init_SettingsInitFailed = 118,
898 	/// error codes returned by Vr_Init
899 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
900 	Init_ShuttingDown = 119,
901 	/// error codes returned by Vr_Init
902 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
903 	Init_TooManyObjects = 120,
904 	/// error codes returned by Vr_Init
905 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
906 	Init_NoServerForBackgroundApp = 121,
907 	/// error codes returned by Vr_Init
908 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
909 	Init_NotSupportedWithCompositor = 122,
910 	/// error codes returned by Vr_Init
911 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
912 	Init_NotAvailableToUtilityApps = 123,
913 	/// error codes returned by Vr_Init
914 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
915 	Init_Internal = 124,
916 	/// error codes returned by Vr_Init
917 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
918 	Init_HmdDriverIdIsNone = 125,
919 	/// error codes returned by Vr_Init
920 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
921 	Init_HmdNotFoundPresenceFailed = 126,
922 	/// error codes returned by Vr_Init
923 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
924 	Init_VRMonitorNotFound = 127,
925 	/// error codes returned by Vr_Init
926 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
927 	Init_VRMonitorStartupFailed = 128,
928 	/// error codes returned by Vr_Init
929 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
930 	Init_LowPowerWatchdogNotSupported = 129,
931 	/// error codes returned by Vr_Init
932 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
933 	Init_InvalidApplicationType = 130,
934 	/// error codes returned by Vr_Init
935 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
936 	Init_NotAvailableToWatchdogApps = 131,
937 	/// error codes returned by Vr_Init
938 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
939 	Init_WatchdogDisabledInSettings = 132,
940 	/// error codes returned by Vr_Init
941 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
942 	Init_VRDashboardNotFound = 133,
943 	/// error codes returned by Vr_Init
944 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
945 	Init_VRDashboardStartupFailed = 134,
946 	/// error codes returned by Vr_Init
947 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
948 	Init_VRHomeNotFound = 135,
949 	/// error codes returned by Vr_Init
950 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
951 	Init_VRHomeStartupFailed = 136,
952 	/// error codes returned by Vr_Init
953 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
954 	Init_RebootingBusy = 137,
955 	/// error codes returned by Vr_Init
956 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
957 	Init_FirmwareUpdateBusy = 138,
958 	/// error codes returned by Vr_Init
959 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
960 	Init_FirmwareRecoveryBusy = 139,
961 	/// error codes returned by Vr_Init
962 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
963 	Init_USBServiceBusy = 140,
964 	/// error codes returned by Vr_Init
965 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
966 	Init_VRWebHelperStartupFailed = 141,
967 	/// error codes returned by Vr_Init
968 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
969 	Init_TrackerManagerInitFailed = 142,
970 	/// error codes returned by Vr_Init
971 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
972 	Init_AlreadyRunning = 143,
973 	/// error codes returned by Vr_Init
974 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
975 	Init_FailedForVrMonitor = 144,
976 	/// error codes returned by Vr_Init
977 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
978 	Init_PropertyManagerInitFailed = 145,
979 	/// error codes returned by Vr_Init
980 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
981 	Init_WebServerFailed = 146,
982 	/// error codes returned by Vr_Init
983 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
984 	Driver_Failed = 200,
985 	/// error codes returned by Vr_Init
986 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
987 	Driver_Unknown = 201,
988 	/// error codes returned by Vr_Init
989 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
990 	Driver_HmdUnknown = 202,
991 	/// error codes returned by Vr_Init
992 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
993 	Driver_NotLoaded = 203,
994 	/// error codes returned by Vr_Init
995 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
996 	Driver_RuntimeOutOfDate = 204,
997 	/// error codes returned by Vr_Init
998 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
999 	Driver_HmdInUse = 205,
1000 	/// error codes returned by Vr_Init
1001 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1002 	Driver_NotCalibrated = 206,
1003 	/// error codes returned by Vr_Init
1004 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1005 	Driver_CalibrationInvalid = 207,
1006 	/// error codes returned by Vr_Init
1007 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1008 	Driver_HmdDisplayNotFound = 208,
1009 	/// error codes returned by Vr_Init
1010 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1011 	Driver_TrackedDeviceInterfaceUnknown = 209,
1012 	/// error codes returned by Vr_Init
1013 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1014 	Driver_HmdDriverIdOutOfBounds = 211,
1015 	/// error codes returned by Vr_Init
1016 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1017 	Driver_HmdDisplayMirrored = 212,
1018 	/// error codes returned by Vr_Init
1019 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1020 	Driver_HmdDisplayNotFoundLaptop = 213,
1021 	/// error codes returned by Vr_Init
1022 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1023 	IPC_ServerInitFailed = 300,
1024 	/// error codes returned by Vr_Init
1025 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1026 	IPC_ConnectFailed = 301,
1027 	/// error codes returned by Vr_Init
1028 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1029 	IPC_SharedStateInitFailed = 302,
1030 	/// error codes returned by Vr_Init
1031 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1032 	IPC_CompositorInitFailed = 303,
1033 	/// error codes returned by Vr_Init
1034 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1035 	IPC_MutexInitFailed = 304,
1036 	/// error codes returned by Vr_Init
1037 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1038 	IPC_Failed = 305,
1039 	/// error codes returned by Vr_Init
1040 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1041 	IPC_CompositorConnectFailed = 306,
1042 	/// error codes returned by Vr_Init
1043 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1044 	IPC_CompositorInvalidConnectResponse = 307,
1045 	/// error codes returned by Vr_Init
1046 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1047 	IPC_ConnectFailedAfterMultipleAttempts = 308,
1048 	/// error codes returned by Vr_Init
1049 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1050 	IPC_ConnectFailedAfterTargetExited = 309,
1051 	/// error codes returned by Vr_Init
1052 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1053 	IPC_NamespaceUnavailable = 310,
1054 	/// error codes returned by Vr_Init
1055 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1056 	Compositor_Failed = 400,
1057 	/// error codes returned by Vr_Init
1058 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1059 	Compositor_D3D11HardwareRequired = 401,
1060 	/// error codes returned by Vr_Init
1061 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1062 	Compositor_FirmwareRequiresUpdate = 402,
1063 	/// error codes returned by Vr_Init
1064 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1065 	Compositor_OverlayInitFailed = 403,
1066 	/// error codes returned by Vr_Init
1067 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1068 	Compositor_ScreenshotsInitFailed = 404,
1069 	/// error codes returned by Vr_Init
1070 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1071 	Compositor_UnableToCreateDevice = 405,
1072 	/// error codes returned by Vr_Init
1073 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1074 	Compositor_SharedStateIsNull = 406,
1075 	/// error codes returned by Vr_Init
1076 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1077 	Compositor_NotificationManagerIsNull = 407,
1078 	/// error codes returned by Vr_Init
1079 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1080 	Compositor_ResourceManagerClientIsNull = 408,
1081 	/// error codes returned by Vr_Init
1082 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1083 	Compositor_MessageOverlaySharedStateInitFailure = 409,
1084 	/// error codes returned by Vr_Init
1085 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1086 	Compositor_PropertiesInterfaceIsNull = 410,
1087 	/// error codes returned by Vr_Init
1088 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1089 	Compositor_CreateFullscreenWindowFailed = 411,
1090 	/// error codes returned by Vr_Init
1091 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1092 	Compositor_SettingsInterfaceIsNull = 412,
1093 	/// error codes returned by Vr_Init
1094 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1095 	Compositor_FailedToShowWindow = 413,
1096 	/// error codes returned by Vr_Init
1097 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1098 	Compositor_DistortInterfaceIsNull = 414,
1099 	/// error codes returned by Vr_Init
1100 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1101 	Compositor_DisplayFrequencyFailure = 415,
1102 	/// error codes returned by Vr_Init
1103 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1104 	Compositor_RendererInitializationFailed = 416,
1105 	/// error codes returned by Vr_Init
1106 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1107 	Compositor_DXGIFactoryInterfaceIsNull = 417,
1108 	/// error codes returned by Vr_Init
1109 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1110 	Compositor_DXGIFactoryCreateFailed = 418,
1111 	/// error codes returned by Vr_Init
1112 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1113 	Compositor_DXGIFactoryQueryFailed = 419,
1114 	/// error codes returned by Vr_Init
1115 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1116 	Compositor_InvalidAdapterDesktop = 420,
1117 	/// error codes returned by Vr_Init
1118 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1119 	Compositor_InvalidHmdAttachment = 421,
1120 	/// error codes returned by Vr_Init
1121 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1122 	Compositor_InvalidOutputDesktop = 422,
1123 	/// error codes returned by Vr_Init
1124 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1125 	Compositor_InvalidDeviceProvided = 423,
1126 	/// error codes returned by Vr_Init
1127 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1128 	Compositor_D3D11RendererInitializationFailed = 424,
1129 	/// error codes returned by Vr_Init
1130 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1131 	Compositor_FailedToFindDisplayMode = 425,
1132 	/// error codes returned by Vr_Init
1133 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1134 	Compositor_FailedToCreateSwapChain = 426,
1135 	/// error codes returned by Vr_Init
1136 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1137 	Compositor_FailedToGetBackBuffer = 427,
1138 	/// error codes returned by Vr_Init
1139 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1140 	Compositor_FailedToCreateRenderTarget = 428,
1141 	/// error codes returned by Vr_Init
1142 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1143 	Compositor_FailedToCreateDXGI2SwapChain = 429,
1144 	/// error codes returned by Vr_Init
1145 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1146 	Compositor_FailedtoGetDXGI2BackBuffer = 430,
1147 	/// error codes returned by Vr_Init
1148 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1149 	Compositor_FailedToCreateDXGI2RenderTarget = 431,
1150 	/// error codes returned by Vr_Init
1151 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1152 	Compositor_FailedToGetDXGIDeviceInterface = 432,
1153 	/// error codes returned by Vr_Init
1154 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1155 	Compositor_SelectDisplayMode = 433,
1156 	/// error codes returned by Vr_Init
1157 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1158 	Compositor_FailedToCreateNvAPIRenderTargets = 434,
1159 	/// error codes returned by Vr_Init
1160 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1161 	Compositor_NvAPISetDisplayMode = 435,
1162 	/// error codes returned by Vr_Init
1163 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1164 	Compositor_FailedToCreateDirectModeDisplay = 436,
1165 	/// error codes returned by Vr_Init
1166 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1167 	Compositor_InvalidHmdPropertyContainer = 437,
1168 	/// error codes returned by Vr_Init
1169 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1170 	Compositor_UpdateDisplayFrequency = 438,
1171 	/// error codes returned by Vr_Init
1172 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1173 	Compositor_CreateRasterizerState = 439,
1174 	/// error codes returned by Vr_Init
1175 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1176 	Compositor_CreateWireframeRasterizerState = 440,
1177 	/// error codes returned by Vr_Init
1178 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1179 	Compositor_CreateSamplerState = 441,
1180 	/// error codes returned by Vr_Init
1181 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1182 	Compositor_CreateClampToBorderSamplerState = 442,
1183 	/// error codes returned by Vr_Init
1184 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1185 	Compositor_CreateAnisoSamplerState = 443,
1186 	/// error codes returned by Vr_Init
1187 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1188 	Compositor_CreateOverlaySamplerState = 444,
1189 	/// error codes returned by Vr_Init
1190 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1191 	Compositor_CreatePanoramaSamplerState = 445,
1192 	/// error codes returned by Vr_Init
1193 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1194 	Compositor_CreateFontSamplerState = 446,
1195 	/// error codes returned by Vr_Init
1196 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1197 	Compositor_CreateNoBlendState = 447,
1198 	/// error codes returned by Vr_Init
1199 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1200 	Compositor_CreateBlendState = 448,
1201 	/// error codes returned by Vr_Init
1202 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1203 	Compositor_CreateAlphaBlendState = 449,
1204 	/// error codes returned by Vr_Init
1205 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1206 	Compositor_CreateBlendStateMaskR = 450,
1207 	/// error codes returned by Vr_Init
1208 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1209 	Compositor_CreateBlendStateMaskG = 451,
1210 	/// error codes returned by Vr_Init
1211 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1212 	Compositor_CreateBlendStateMaskB = 452,
1213 	/// error codes returned by Vr_Init
1214 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1215 	Compositor_CreateDepthStencilState = 453,
1216 	/// error codes returned by Vr_Init
1217 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1218 	Compositor_CreateDepthStencilStateNoWrite = 454,
1219 	/// error codes returned by Vr_Init
1220 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1221 	Compositor_CreateDepthStencilStateNoDepth = 455,
1222 	/// error codes returned by Vr_Init
1223 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1224 	Compositor_CreateFlushTexture = 456,
1225 	/// error codes returned by Vr_Init
1226 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1227 	Compositor_CreateDistortionSurfaces = 457,
1228 	/// error codes returned by Vr_Init
1229 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1230 	Compositor_CreateConstantBuffer = 458,
1231 	/// error codes returned by Vr_Init
1232 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1233 	Compositor_CreateHmdPoseConstantBuffer = 459,
1234 	/// error codes returned by Vr_Init
1235 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1236 	Compositor_CreateHmdPoseStagingConstantBuffer = 460,
1237 	/// error codes returned by Vr_Init
1238 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1239 	Compositor_CreateSharedFrameInfoConstantBuffer = 461,
1240 	/// error codes returned by Vr_Init
1241 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1242 	Compositor_CreateOverlayConstantBuffer = 462,
1243 	/// error codes returned by Vr_Init
1244 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1245 	Compositor_CreateSceneTextureIndexConstantBuffer = 463,
1246 	/// error codes returned by Vr_Init
1247 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1248 	Compositor_CreateReadableSceneTextureIndexConstantBuffer = 464,
1249 	/// error codes returned by Vr_Init
1250 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1251 	Compositor_CreateLayerGraphicsTextureIndexConstantBuffer = 465,
1252 	/// error codes returned by Vr_Init
1253 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1254 	Compositor_CreateLayerComputeTextureIndexConstantBuffer = 466,
1255 	/// error codes returned by Vr_Init
1256 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1257 	Compositor_CreateLayerComputeSceneTextureIndexConstantBuffer = 467,
1258 	/// error codes returned by Vr_Init
1259 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1260 	Compositor_CreateComputeHmdPoseConstantBuffer = 468,
1261 	/// error codes returned by Vr_Init
1262 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1263 	Compositor_CreateGeomConstantBuffer = 469,
1264 	/// error codes returned by Vr_Init
1265 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1266 	Compositor_CreatePanelMaskConstantBuffer = 470,
1267 	/// error codes returned by Vr_Init
1268 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1269 	Compositor_CreatePixelSimUBO = 471,
1270 	/// error codes returned by Vr_Init
1271 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1272 	Compositor_CreateMSAARenderTextures = 472,
1273 	/// error codes returned by Vr_Init
1274 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1275 	Compositor_CreateResolveRenderTextures = 473,
1276 	/// error codes returned by Vr_Init
1277 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1278 	Compositor_CreateComputeResolveRenderTextures = 474,
1279 	/// error codes returned by Vr_Init
1280 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1281 	Compositor_CreateDriverDirectModeResolveTextures = 475,
1282 	/// error codes returned by Vr_Init
1283 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1284 	Compositor_OpenDriverDirectModeResolveTextures = 476,
1285 	/// error codes returned by Vr_Init
1286 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1287 	Compositor_CreateFallbackSyncTexture = 477,
1288 	/// error codes returned by Vr_Init
1289 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1290 	Compositor_ShareFallbackSyncTexture = 478,
1291 	/// error codes returned by Vr_Init
1292 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1293 	Compositor_CreateOverlayIndexBuffer = 479,
1294 	/// error codes returned by Vr_Init
1295 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1296 	Compositor_CreateOverlayVertexBuffer = 480,
1297 	/// error codes returned by Vr_Init
1298 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1299 	Compositor_CreateTextVertexBuffer = 481,
1300 	/// error codes returned by Vr_Init
1301 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1302 	Compositor_CreateTextIndexBuffer = 482,
1303 	/// error codes returned by Vr_Init
1304 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1305 	Compositor_CreateMirrorTextures = 483,
1306 	/// error codes returned by Vr_Init
1307 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1308 	Compositor_CreateLastFrameRenderTexture = 484,
1309 	/// error codes returned by Vr_Init
1310 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1311 	Compositor_CreateMirrorOverlay = 485,
1312 	/// error codes returned by Vr_Init
1313 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1314 	Compositor_FailedToCreateVirtualDisplayBackbuffer = 486,
1315 	/// error codes returned by Vr_Init
1316 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1317 	Compositor_DisplayModeNotSupported = 487,
1318 	/// error codes returned by Vr_Init
1319 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1320 	Compositor_CreateOverlayInvalidCall = 488,
1321 	/// error codes returned by Vr_Init
1322 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1323 	Compositor_CreateOverlayAlreadyInitialized = 489,
1324 	/// error codes returned by Vr_Init
1325 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1326 	Compositor_FailedToCreateMailbox = 490,
1327 	/// error codes returned by Vr_Init
1328 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1329 	VendorSpecific_UnableToConnectToOculusRuntime = 1000,
1330 	/// error codes returned by Vr_Init
1331 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1332 	VendorSpecific_WindowsNotInDevMode = 1001,
1333 	/// error codes returned by Vr_Init
1334 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1335 	VendorSpecific_HmdFound_CantOpenDevice = 1101,
1336 	/// error codes returned by Vr_Init
1337 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1338 	VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102,
1339 	/// error codes returned by Vr_Init
1340 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1341 	VendorSpecific_HmdFound_NoStoredConfig = 1103,
1342 	/// error codes returned by Vr_Init
1343 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1344 	VendorSpecific_HmdFound_ConfigTooBig = 1104,
1345 	/// error codes returned by Vr_Init
1346 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1347 	VendorSpecific_HmdFound_ConfigTooSmall = 1105,
1348 	/// error codes returned by Vr_Init
1349 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1350 	VendorSpecific_HmdFound_UnableToInitZLib = 1106,
1351 	/// error codes returned by Vr_Init
1352 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1353 	VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107,
1354 	/// error codes returned by Vr_Init
1355 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1356 	VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108,
1357 	/// error codes returned by Vr_Init
1358 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1359 	VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109,
1360 	/// error codes returned by Vr_Init
1361 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1362 	VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110,
1363 	/// error codes returned by Vr_Init
1364 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1365 	VendorSpecific_HmdFound_UserDataAddressRange = 1111,
1366 	/// error codes returned by Vr_Init
1367 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1368 	VendorSpecific_HmdFound_UserDataError = 1112,
1369 	/// error codes returned by Vr_Init
1370 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1371 	VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113,
1372 	/// error codes returned by Vr_Init
1373 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1374 	VendorSpecific_OculusRuntimeBadInstall = 1114,
1375 	/// error codes returned by Vr_Init
1376 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1377 	Steam_SteamInstallationNotFound = 2000,
1378 	/// error codes returned by Vr_Init
1379 	/// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
1380 	LastError = 2001,
1381 }
1382 
1383 ///
1384 enum EVRScreenshotType
1385 {
1386 	None = 0, ///
1387 	Mono = 1, ///
1388 	Stereo = 2, ///
1389 	Cubemap = 3, ///
1390 	MonoPanorama = 4, ///
1391 	StereoPanorama = 5, ///
1392 }
1393 
1394 ///
1395 enum EVRScreenshotPropertyFilenames
1396 {
1397 	Preview = 0, ///
1398 	VR = 1, ///
1399 }
1400 
1401 ///
1402 enum EVRTrackedCameraError
1403 {
1404 	None = 0, ///
1405 	OperationFailed = 100, ///
1406 	InvalidHandle = 101, ///
1407 	InvalidFrameHeaderVersion = 102, ///
1408 	OutOfHandles = 103, ///
1409 	IPCFailure = 104, ///
1410 	NotSupportedForThisDevice = 105, ///
1411 	SharedMemoryFailure = 106, ///
1412 	FrameBufferingFailure = 107, ///
1413 	StreamSetupFailure = 108, ///
1414 	InvalidGLTextureId = 109, ///
1415 	InvalidSharedTextureHandle = 110, ///
1416 	FailedToGetGLTextureId = 111, ///
1417 	SharedTextureFailure = 112, ///
1418 	NoFrameAvailable = 113, ///
1419 	InvalidArgument = 114, ///
1420 	InvalidFrameBufferSize = 115, ///
1421 }
1422 
1423 ///
1424 enum EVRTrackedCameraFrameLayout
1425 {
1426 	EVRTrackedCameraFrameLayout_Mono = 1, ///
1427 	EVRTrackedCameraFrameLayout_Stereo = 2, ///
1428 	EVRTrackedCameraFrameLayout_VerticalLayout = 16, ///
1429 	EVRTrackedCameraFrameLayout_HorizontalLayout = 32, ///
1430 }
1431 
1432 ///
1433 enum EVRTrackedCameraFrameType
1434 {
1435 	Distorted = 0, ///
1436 	Undistorted = 1, ///
1437 	MaximumUndistorted = 2, ///
1438 	MAX_CAMERA_FRAME_TYPES = 3, ///
1439 }
1440 
1441 ///
1442 enum EVRDistortionFunctionType
1443 {
1444 	None = 0, ///
1445 	FTheta = 1, ///
1446 	Extended_FTheta = 2, ///
1447 	MAX_DISTORTION_FUNCTION_TYPES = 3, ///
1448 }
1449 
1450 ///
1451 enum EVSync
1452 {
1453 	None = 0, ///
1454 	WaitRender = 1, ///
1455 	NoWaitRender = 2, ///
1456 }
1457 
1458 ///
1459 enum EVRMuraCorrectionMode
1460 {
1461 	EVRMuraCorrectionMode_Default = 0, ///
1462 	EVRMuraCorrectionMode_NoCorrection = 1, ///
1463 }
1464 
1465 /// raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs
1466 enum Imu_OffScaleFlags
1467 {
1468 	OffScale_AccelX = 1, /// raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs
1469 	OffScale_AccelY = 2, /// raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs
1470 	OffScale_AccelZ = 4, /// raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs
1471 	OffScale_GyroX = 8, /// raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs
1472 	OffScale_GyroY = 16, /// raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs
1473 	OffScale_GyroZ = 32, /// raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs
1474 }
1475 
1476 /// Used for all errors reported by the IVRApplications interface
1477 enum EVRApplicationError
1478 {
1479 	None = 0, /// Used for all errors reported by the IVRApplications interface
1480 	AppKeyAlreadyExists = 100, /// Used for all errors reported by the IVRApplications interface
1481 	NoManifest = 101, /// Used for all errors reported by the IVRApplications interface
1482 	NoApplication = 102, /// Used for all errors reported by the IVRApplications interface
1483 	InvalidIndex = 103, /// Used for all errors reported by the IVRApplications interface
1484 	UnknownApplication = 104, /// Used for all errors reported by the IVRApplications interface
1485 	IPCFailed = 105, /// Used for all errors reported by the IVRApplications interface
1486 	ApplicationAlreadyRunning = 106, /// Used for all errors reported by the IVRApplications interface
1487 	InvalidManifest = 107, /// Used for all errors reported by the IVRApplications interface
1488 	InvalidApplication = 108, /// Used for all errors reported by the IVRApplications interface
1489 	LaunchFailed = 109, /// Used for all errors reported by the IVRApplications interface
1490 	ApplicationAlreadyStarting = 110, /// Used for all errors reported by the IVRApplications interface
1491 	LaunchInProgress = 111, /// Used for all errors reported by the IVRApplications interface
1492 	OldApplicationQuitting = 112, /// Used for all errors reported by the IVRApplications interface
1493 	TransitionAborted = 113, /// Used for all errors reported by the IVRApplications interface
1494 	IsTemplate = 114, /// Used for all errors reported by the IVRApplications interface
1495 	SteamVRIsExiting = 115, /// Used for all errors reported by the IVRApplications interface
1496 	BufferTooSmall = 200, /// Used for all errors reported by the IVRApplications interface
1497 	PropertyNotSet = 201, /// Used for all errors reported by the IVRApplications interface
1498 	UnknownProperty = 202, /// Used for all errors reported by the IVRApplications interface
1499 	InvalidParameter = 203, /// Used for all errors reported by the IVRApplications interface
1500 }
1501 
1502 ///
1503 enum EVRApplicationProperty
1504 {
1505 	Name_String = 0, ///
1506 	LaunchType_String = 11, ///
1507 	WorkingDirectory_String = 12, ///
1508 	BinaryPath_String = 13, ///
1509 	Arguments_String = 14, ///
1510 	URL_String = 15, ///
1511 	Description_String = 50, ///
1512 	NewsURL_String = 51, ///
1513 	ImagePath_String = 52, ///
1514 	Source_String = 53, ///
1515 	ActionManifestURL_String = 54, ///
1516 	IsDashboardOverlay_Bool = 60, ///
1517 	IsTemplate_Bool = 61, ///
1518 	IsInstanced_Bool = 62, ///
1519 	IsInternal_Bool = 63, ///
1520 	WantsCompositorPauseInStandby_Bool = 64, ///
1521 	IsHidden_Bool = 65, ///
1522 	LastLaunchTime_Uint64 = 70, ///
1523 }
1524 
1525 ///
1526 enum EVRSceneApplicationState
1527 {
1528 	EVRSceneApplicationState_None = 0, ///
1529 	EVRSceneApplicationState_Starting = 1, ///
1530 	EVRSceneApplicationState_Quitting = 2, ///
1531 	EVRSceneApplicationState_Running = 3, ///
1532 	EVRSceneApplicationState_Waiting = 4, ///
1533 }
1534 
1535 ///
1536 enum ChaperoneCalibrationState
1537 {
1538 	OK = 1, ///
1539 	Warning = 100, ///
1540 	Warning_BaseStationMayHaveMoved = 101, ///
1541 	Warning_BaseStationRemoved = 102, ///
1542 	Warning_SeatedBoundsInvalid = 103, ///
1543 	Error = 200, ///
1544 	Error_BaseStationUninitialized = 201, ///
1545 	Error_BaseStationConflict = 202, ///
1546 	Error_PlayAreaInvalid = 203, ///
1547 	Error_CollisionBoundsInvalid = 204, ///
1548 }
1549 
1550 ///
1551 enum EChaperoneConfigFile
1552 {
1553 	EChaperoneConfigFile_Live = 1, ///
1554 	EChaperoneConfigFile_Temp = 2, ///
1555 }
1556 
1557 ///
1558 enum EChaperoneImportFlags
1559 {
1560 	EChaperoneImport_BoundsOnly = 1, ///
1561 }
1562 
1563 /// Errors that can occur with the VR compositor
1564 enum EVRCompositorError
1565 {
1566 	None = 0, /// Errors that can occur with the VR compositor
1567 	RequestFailed = 1, /// Errors that can occur with the VR compositor
1568 	IncompatibleVersion = 100, /// Errors that can occur with the VR compositor
1569 	DoNotHaveFocus = 101, /// Errors that can occur with the VR compositor
1570 	InvalidTexture = 102, /// Errors that can occur with the VR compositor
1571 	IsNotSceneApplication = 103, /// Errors that can occur with the VR compositor
1572 	TextureIsOnWrongDevice = 104, /// Errors that can occur with the VR compositor
1573 	TextureUsesUnsupportedFormat = 105, /// Errors that can occur with the VR compositor
1574 	SharedTexturesNotSupported = 106, /// Errors that can occur with the VR compositor
1575 	IndexOutOfRange = 107, /// Errors that can occur with the VR compositor
1576 	AlreadySubmitted = 108, /// Errors that can occur with the VR compositor
1577 	InvalidBounds = 109, /// Errors that can occur with the VR compositor
1578 	AlreadySet = 110, /// Errors that can occur with the VR compositor
1579 }
1580 
1581 /// Timing mode passed to SetExplicitTimingMode(); see that function for documentation
1582 enum EVRCompositorTimingMode
1583 {
1584 	Implicit = 0, /// Timing mode passed to SetExplicitTimingMode(); see that function for documentation
1585 	Explicit_RuntimePerformsPostPresentHandoff = 1, /// Timing mode passed to SetExplicitTimingMode(); see that function for documentation
1586 	Explicit_ApplicationPerformsPostPresentHandoff = 2, /// Timing mode passed to SetExplicitTimingMode(); see that function for documentation
1587 }
1588 
1589 /// Types of input supported by VR Overlays
1590 enum VROverlayInputMethod
1591 {
1592 	None = 0, /// Types of input supported by VR Overlays
1593 	Mouse = 1, /// Types of input supported by VR Overlays
1594 }
1595 
1596 /// Allows the caller to figure out which overlay transform getter to call.
1597 enum VROverlayTransformType
1598 {
1599 	VROverlayTransform_Invalid = -1, /// Allows the caller to figure out which overlay transform getter to call.
1600 	VROverlayTransform_Absolute = 0, /// Allows the caller to figure out which overlay transform getter to call.
1601 	VROverlayTransform_TrackedDeviceRelative = 1, /// Allows the caller to figure out which overlay transform getter to call.
1602 	VROverlayTransform_SystemOverlay = 2, /// Allows the caller to figure out which overlay transform getter to call.
1603 	VROverlayTransform_TrackedComponent = 3, /// Allows the caller to figure out which overlay transform getter to call.
1604 	VROverlayTransform_Cursor = 4, /// Allows the caller to figure out which overlay transform getter to call.
1605 	VROverlayTransform_DashboardTab = 5, /// Allows the caller to figure out which overlay transform getter to call.
1606 	VROverlayTransform_DashboardThumb = 6, /// Allows the caller to figure out which overlay transform getter to call.
1607 	VROverlayTransform_Mountable = 7, /// Allows the caller to figure out which overlay transform getter to call.
1608 }
1609 
1610 /// Overlay control settings
1611 enum VROverlayFlags
1612 {
1613 	NoDashboardTab = 8, /// Overlay control settings
1614 	SendVRDiscreteScrollEvents = 64, /// Overlay control settings
1615 	SendVRTouchpadEvents = 128, /// Overlay control settings
1616 	ShowTouchPadScrollWheel = 256, /// Overlay control settings
1617 	TransferOwnershipToInternalProcess = 512, /// Overlay control settings
1618 	SideBySide_Parallel = 1024, /// Overlay control settings
1619 	SideBySide_Crossed = 2048, /// Overlay control settings
1620 	Panorama = 4096, /// Overlay control settings
1621 	StereoPanorama = 8192, /// Overlay control settings
1622 	SortWithNonSceneOverlays = 16384, /// Overlay control settings
1623 	VisibleInDashboard = 32768, /// Overlay control settings
1624 	MakeOverlaysInteractiveIfVisible = 65536, /// Overlay control settings
1625 	SendVRSmoothScrollEvents = 131072, /// Overlay control settings
1626 	ProtectedContent = 262144, /// Overlay control settings
1627 	HideLaserIntersection = 524288, /// Overlay control settings
1628 	WantsModalBehavior = 1048576, /// Overlay control settings
1629 	IsPremultiplied = 2097152, /// Overlay control settings
1630 }
1631 
1632 ///
1633 enum VRMessageOverlayResponse
1634 {
1635 	ButtonPress_0 = 0, ///
1636 	ButtonPress_1 = 1, ///
1637 	ButtonPress_2 = 2, ///
1638 	ButtonPress_3 = 3, ///
1639 	CouldntFindSystemOverlay = 4, ///
1640 	CouldntFindOrCreateClientOverlay = 5, ///
1641 	ApplicationQuit = 6, ///
1642 }
1643 
1644 /// Input modes for the Big Picture gamepad text entry
1645 enum EGamepadTextInputMode
1646 {
1647 	k_EGamepadTextInputModeNormal = 0, /// Input modes for the Big Picture gamepad text entry
1648 	k_EGamepadTextInputModePassword = 1, /// Input modes for the Big Picture gamepad text entry
1649 	k_EGamepadTextInputModeSubmit = 2, /// Input modes for the Big Picture gamepad text entry
1650 }
1651 
1652 /// Controls number of allowed lines for the Big Picture gamepad text entry
1653 enum EGamepadTextInputLineMode
1654 {
1655 	k_EGamepadTextInputLineModeSingleLine = 0, /// Controls number of allowed lines for the Big Picture gamepad text entry
1656 	k_EGamepadTextInputLineModeMultipleLines = 1, /// Controls number of allowed lines for the Big Picture gamepad text entry
1657 }
1658 
1659 ///
1660 enum EVROverlayIntersectionMaskPrimitiveType
1661 {
1662 	OverlayIntersectionPrimitiveType_Rectangle = 0, ///
1663 	OverlayIntersectionPrimitiveType_Circle = 1, ///
1664 }
1665 
1666 ///
1667 enum EKeyboardFlags
1668 {
1669 	KeyboardFlag_Minimal = 1, ///
1670 	KeyboardFlag_Modal = 2, ///
1671 }
1672 
1673 ///
1674 enum EDeviceType
1675 {
1676 	Invalid = -1, ///
1677 	DirectX11 = 0, ///
1678 	Vulkan = 1, ///
1679 }
1680 
1681 ///
1682 enum HeadsetViewMode_t
1683 {
1684 	HeadsetViewMode_Left = 0, ///
1685 	HeadsetViewMode_Right = 1, ///
1686 	HeadsetViewMode_Both = 2, ///
1687 }
1688 
1689 /// Errors that can occur with the VR compositor
1690 enum EVRRenderModelError
1691 {
1692 	None = 0, /// Errors that can occur with the VR compositor
1693 	Loading = 100, /// Errors that can occur with the VR compositor
1694 	NotSupported = 200, /// Errors that can occur with the VR compositor
1695 	InvalidArg = 300, /// Errors that can occur with the VR compositor
1696 	InvalidModel = 301, /// Errors that can occur with the VR compositor
1697 	NoShapes = 302, /// Errors that can occur with the VR compositor
1698 	MultipleShapes = 303, /// Errors that can occur with the VR compositor
1699 	TooManyVertices = 304, /// Errors that can occur with the VR compositor
1700 	MultipleTextures = 305, /// Errors that can occur with the VR compositor
1701 	BufferTooSmall = 306, /// Errors that can occur with the VR compositor
1702 	NotEnoughNormals = 307, /// Errors that can occur with the VR compositor
1703 	NotEnoughTexCoords = 308, /// Errors that can occur with the VR compositor
1704 	InvalidTexture = 400, /// Errors that can occur with the VR compositor
1705 }
1706 
1707 ///
1708 enum EVRRenderModelTextureFormat
1709 {
1710 	RGBA8_SRGB = 0, ///
1711 	BC2 = 1, ///
1712 	BC4 = 2, ///
1713 	BC7 = 3, ///
1714 	BC7_SRGB = 4, ///
1715 }
1716 
1717 /// Be aware that the notification type is used as 'priority' to pick the next notification
1718 enum EVRNotificationType
1719 {
1720 	EVRNotificationType_Transient = 0, /// Be aware that the notification type is used as 'priority' to pick the next notification
1721 	EVRNotificationType_Persistent = 1, /// Be aware that the notification type is used as 'priority' to pick the next notification
1722 	EVRNotificationType_Transient_SystemWithUserValue = 2, /// Be aware that the notification type is used as 'priority' to pick the next notification
1723 }
1724 
1725 ///
1726 enum EVRNotificationStyle
1727 {
1728 	EVRNotificationStyle_None = 0, ///
1729 	EVRNotificationStyle_Application = 100, ///
1730 	EVRNotificationStyle_Contact_Disabled = 200, ///
1731 	EVRNotificationStyle_Contact_Enabled = 201, ///
1732 	EVRNotificationStyle_Contact_Active = 202, ///
1733 }
1734 
1735 ///
1736 enum EVRSettingsError
1737 {
1738 	None = 0, ///
1739 	IPCFailed = 1, ///
1740 	WriteFailed = 2, ///
1741 	ReadFailed = 3, ///
1742 	JsonParseFailed = 4, ///
1743 	UnsetSettingHasNoDefault = 5, ///
1744 }
1745 
1746 /// Errors that can occur with the VR compositor
1747 enum EVRScreenshotError
1748 {
1749 	None = 0, /// Errors that can occur with the VR compositor
1750 	RequestFailed = 1, /// Errors that can occur with the VR compositor
1751 	IncompatibleVersion = 100, /// Errors that can occur with the VR compositor
1752 	NotFound = 101, /// Errors that can occur with the VR compositor
1753 	BufferTooSmall = 102, /// Errors that can occur with the VR compositor
1754 	ScreenshotAlreadyInProgress = 108, /// Errors that can occur with the VR compositor
1755 }
1756 
1757 ///
1758 enum EVRSkeletalTransformSpace
1759 {
1760 	Model = 0, ///
1761 	Parent = 1, ///
1762 }
1763 
1764 ///
1765 enum EVRSkeletalReferencePose
1766 {
1767 	BindPose = 0, ///
1768 	OpenHand = 1, ///
1769 	Fist = 2, ///
1770 	GripLimit = 3, ///
1771 }
1772 
1773 ///
1774 enum EVRFinger
1775 {
1776 	Thumb = 0, ///
1777 	Index = 1, ///
1778 	Middle = 2, ///
1779 	Ring = 3, ///
1780 	Pinky = 4, ///
1781 	Count = 5, ///
1782 }
1783 
1784 ///
1785 enum EVRFingerSplay
1786 {
1787 	Thumb_Index = 0, ///
1788 	Index_Middle = 1, ///
1789 	Middle_Ring = 2, ///
1790 	Ring_Pinky = 3, ///
1791 	Count = 4, ///
1792 }
1793 
1794 ///
1795 enum EVRSummaryType
1796 {
1797 	FromAnimation = 0, ///
1798 	FromDevice = 1, ///
1799 }
1800 
1801 ///
1802 enum EVRInputFilterCancelType
1803 {
1804 	VRInputFilterCancel_Timers = 0, ///
1805 	VRInputFilterCancel_Momentum = 1, ///
1806 }
1807 
1808 ///
1809 enum EVRInputStringBits
1810 {
1811 	VRInputString_Hand = 1, ///
1812 	VRInputString_ControllerType = 2, ///
1813 	VRInputString_InputSource = 4, ///
1814 	VRInputString_All = -1, ///
1815 }
1816 
1817 ///
1818 enum EIOBufferError
1819 {
1820 	IOBuffer_Success = 0, ///
1821 	IOBuffer_OperationFailed = 100, ///
1822 	IOBuffer_InvalidHandle = 101, ///
1823 	IOBuffer_InvalidArgument = 102, ///
1824 	IOBuffer_PathExists = 103, ///
1825 	IOBuffer_PathDoesNotExist = 104, ///
1826 	IOBuffer_Permission = 105, ///
1827 }
1828 
1829 ///
1830 enum EIOBufferMode
1831 {
1832 	Read = 1, ///
1833 	Write = 2, ///
1834 	Create = 512, ///
1835 }
1836 
1837 ///
1838 enum EVRDebugError
1839 {
1840 	Success = 0, ///
1841 	BadParameter = 1, ///
1842 }
1843 
1844 enum uint k_nDriverNone = 4294967295; ///
1845 enum uint k_unMaxDriverDebugResponseSize = 32768; ///
1846 enum uint k_unTrackedDeviceIndex_Hmd = 0; ///
1847 enum uint k_unMaxTrackedDeviceCount = 64; ///
1848 enum uint k_unTrackedDeviceIndexOther = 4294967294; ///
1849 enum uint k_unTrackedDeviceIndexInvalid = 4294967295; ///
1850 enum PropertyContainerHandle_t k_ulInvalidPropertyContainer = 0; ///
1851 enum PropertyTypeTag_t k_unInvalidPropertyTag = 0; ///
1852 enum PropertyContainerHandle_t k_ulInvalidDriverHandle = 0; ///
1853 enum PropertyTypeTag_t k_unFloatPropertyTag = 1; ///
1854 enum PropertyTypeTag_t k_unInt32PropertyTag = 2; ///
1855 enum PropertyTypeTag_t k_unUint64PropertyTag = 3; ///
1856 enum PropertyTypeTag_t k_unBoolPropertyTag = 4; ///
1857 enum PropertyTypeTag_t k_unStringPropertyTag = 5; ///
1858 enum PropertyTypeTag_t k_unErrorPropertyTag = 6; ///
1859 enum PropertyTypeTag_t k_unDoublePropertyTag = 7; ///
1860 enum PropertyTypeTag_t k_unHmdMatrix34PropertyTag = 20; ///
1861 enum PropertyTypeTag_t k_unHmdMatrix44PropertyTag = 21; ///
1862 enum PropertyTypeTag_t k_unHmdVector3PropertyTag = 22; ///
1863 enum PropertyTypeTag_t k_unHmdVector4PropertyTag = 23; ///
1864 enum PropertyTypeTag_t k_unHmdVector2PropertyTag = 24; ///
1865 enum PropertyTypeTag_t k_unHmdQuadPropertyTag = 25; ///
1866 enum PropertyTypeTag_t k_unHiddenAreaPropertyTag = 30; ///
1867 enum PropertyTypeTag_t k_unPathHandleInfoTag = 31; ///
1868 enum PropertyTypeTag_t k_unActionPropertyTag = 32; ///
1869 enum PropertyTypeTag_t k_unInputValuePropertyTag = 33; ///
1870 enum PropertyTypeTag_t k_unWildcardPropertyTag = 34; ///
1871 enum PropertyTypeTag_t k_unHapticVibrationPropertyTag = 35; ///
1872 enum PropertyTypeTag_t k_unSkeletonPropertyTag = 36; ///
1873 enum PropertyTypeTag_t k_unSpatialAnchorPosePropertyTag = 40; ///
1874 enum PropertyTypeTag_t k_unJsonPropertyTag = 41; ///
1875 enum PropertyTypeTag_t k_unActiveActionSetPropertyTag = 42; ///
1876 enum PropertyTypeTag_t k_unOpenVRInternalReserved_Start = 1000; ///
1877 enum PropertyTypeTag_t k_unOpenVRInternalReserved_End = 10000; ///
1878 enum uint k_unMaxPropertyStringSize = 32768; /// No string property will ever be longer than this length
1879 enum VRActionHandle_t k_ulInvalidActionHandle = 0; ///
1880 enum VRActionSetHandle_t k_ulInvalidActionSetHandle = 0; ///
1881 enum VRInputValueHandle_t k_ulInvalidInputValueHandle = 0; ///
1882 enum uint k_unControllerStateAxisCount = 5; /// the number of axes in the controller state
1883 enum VROverlayHandle_t k_ulOverlayHandleInvalid = 0; ///
1884 enum uint k_unMaxDistortionFunctionParameters = 8; ///
1885 enum uint k_unScreenshotHandleInvalid = 0; ///
1886 enum IVRSystem_Version_s = "IVRSystem_021"; ///
1887 enum const(char)* IVRSystem_Version = IVRSystem_Version_s.ptr; ///
1888 enum IVRExtendedDisplay_Version_s = "IVRExtendedDisplay_001"; ///
1889 enum const(char)* IVRExtendedDisplay_Version = IVRExtendedDisplay_Version_s.ptr; ///
1890 enum IVRTrackedCamera_Version_s = "IVRTrackedCamera_006"; ///
1891 enum const(char)* IVRTrackedCamera_Version = IVRTrackedCamera_Version_s.ptr; ///
1892 enum uint k_unMaxApplicationKeyLength = 128; /// The maximum length of an application key
1893 enum k_pch_MimeType_HomeApp_s = "vr/home"; /// Currently recognized mime types
1894 enum const(char)* k_pch_MimeType_HomeApp = k_pch_MimeType_HomeApp_s.ptr; /// Currently recognized mime types
1895 enum k_pch_MimeType_GameTheater_s = "vr/game_theater"; ///
1896 enum const(char)* k_pch_MimeType_GameTheater = k_pch_MimeType_GameTheater_s.ptr; ///
1897 enum IVRApplications_Version_s = "IVRApplications_007"; ///
1898 enum const(char)* IVRApplications_Version = IVRApplications_Version_s.ptr; ///
1899 enum IVRChaperone_Version_s = "IVRChaperone_003"; ///
1900 enum const(char)* IVRChaperone_Version = IVRChaperone_Version_s.ptr; ///
1901 enum IVRChaperoneSetup_Version_s = "IVRChaperoneSetup_006"; ///
1902 enum const(char)* IVRChaperoneSetup_Version = IVRChaperoneSetup_Version_s.ptr; ///
1903 enum IVRCompositor_Version_s = "IVRCompositor_026"; ///
1904 enum const(char)* IVRCompositor_Version = IVRCompositor_Version_s.ptr; ///
1905 enum uint k_unVROverlayMaxKeyLength = 128; /// The maximum length of an overlay key in bytes, counting the terminating null character.
1906 enum uint k_unVROverlayMaxNameLength = 128; /// The maximum length of an overlay name in bytes, counting the terminating null character.
1907 enum uint k_unMaxOverlayCount = 128; /// The maximum number of overlays that can exist in the system at one time.
1908 enum uint k_unMaxOverlayIntersectionMaskPrimitivesCount = 32; /// The maximum number of overlay intersection mask primitives per overlay
1909 enum IVROverlay_Version_s = "IVROverlay_024"; ///
1910 enum const(char)* IVROverlay_Version = IVROverlay_Version_s.ptr; ///
1911 enum IVROverlayView_Version_s = "IVROverlayView_003"; ///
1912 enum const(char)* IVROverlayView_Version = IVROverlayView_Version_s.ptr; ///
1913 enum uint k_unHeadsetViewMaxWidth = 3840; ///
1914 enum uint k_unHeadsetViewMaxHeight = 2160; ///
1915 enum k_pchHeadsetViewOverlayKey_s = "system.HeadsetView"; ///
1916 enum const(char)* k_pchHeadsetViewOverlayKey = k_pchHeadsetViewOverlayKey_s.ptr; ///
1917 enum IVRHeadsetView_Version_s = "IVRHeadsetView_001"; ///
1918 enum const(char)* IVRHeadsetView_Version = IVRHeadsetView_Version_s.ptr; ///
1919 enum k_pch_Controller_Component_GDC2015_s = "gdc2015"; /// Canonical coordinate system of the gdc 2015 wired controller, provided for backwards compatibility
1920 enum const(char)* k_pch_Controller_Component_GDC2015 = k_pch_Controller_Component_GDC2015_s.ptr; /// Canonical coordinate system of the gdc 2015 wired controller, provided for backwards compatibility
1921 enum k_pch_Controller_Component_Base_s = "base"; /// For controllers with an unambiguous 'base'.
1922 enum const(char)* k_pch_Controller_Component_Base = k_pch_Controller_Component_Base_s.ptr; /// For controllers with an unambiguous 'base'.
1923 enum k_pch_Controller_Component_Tip_s = "tip"; /// For controllers with an unambiguous 'tip' (used for 'laser-pointing')
1924 enum const(char)* k_pch_Controller_Component_Tip = k_pch_Controller_Component_Tip_s.ptr; /// For controllers with an unambiguous 'tip' (used for 'laser-pointing')
1925 enum k_pch_Controller_Component_HandGrip_s = "handgrip"; /// Neutral, ambidextrous hand-pose when holding controller. On plane between neutrally posed index finger and thumb
1926 enum const(char)* k_pch_Controller_Component_HandGrip = k_pch_Controller_Component_HandGrip_s.ptr; /// Neutral, ambidextrous hand-pose when holding controller. On plane between neutrally posed index finger and thumb
1927 enum k_pch_Controller_Component_Status_s = "status"; /// 1:1 aspect ratio status area, with canonical [0,1] uv mapping
1928 enum const(char)* k_pch_Controller_Component_Status = k_pch_Controller_Component_Status_s.ptr; /// 1:1 aspect ratio status area, with canonical [0,1] uv mapping
1929 enum IVRRenderModels_Version_s = "IVRRenderModels_006"; ///
1930 enum const(char)* IVRRenderModels_Version = IVRRenderModels_Version_s.ptr; ///
1931 enum uint k_unNotificationTextMaxSize = 256; ///
1932 enum IVRNotifications_Version_s = "IVRNotifications_002"; ///
1933 enum const(char)* IVRNotifications_Version = IVRNotifications_Version_s.ptr; ///
1934 enum uint k_unMaxSettingsKeyLength = 128; /// The maximum length of a settings key
1935 enum IVRSettings_Version_s = "IVRSettings_003"; ///
1936 enum const(char)* IVRSettings_Version = IVRSettings_Version_s.ptr; ///
1937 enum k_pch_SteamVR_Section_s = "steamvr"; ///
1938 enum const(char)* k_pch_SteamVR_Section = k_pch_SteamVR_Section_s.ptr; ///
1939 enum k_pch_SteamVR_RequireHmd_String_s = "requireHmd"; ///
1940 enum const(char)* k_pch_SteamVR_RequireHmd_String = k_pch_SteamVR_RequireHmd_String_s.ptr; ///
1941 enum k_pch_SteamVR_ForcedDriverKey_String_s = "forcedDriver"; ///
1942 enum const(char)* k_pch_SteamVR_ForcedDriverKey_String = k_pch_SteamVR_ForcedDriverKey_String_s.ptr; ///
1943 enum k_pch_SteamVR_ForcedHmdKey_String_s = "forcedHmd"; ///
1944 enum const(char)* k_pch_SteamVR_ForcedHmdKey_String = k_pch_SteamVR_ForcedHmdKey_String_s.ptr; ///
1945 enum k_pch_SteamVR_DisplayDebug_Bool_s = "displayDebug"; ///
1946 enum const(char)* k_pch_SteamVR_DisplayDebug_Bool = k_pch_SteamVR_DisplayDebug_Bool_s.ptr; ///
1947 enum k_pch_SteamVR_DebugProcessPipe_String_s = "debugProcessPipe"; ///
1948 enum const(char)* k_pch_SteamVR_DebugProcessPipe_String = k_pch_SteamVR_DebugProcessPipe_String_s.ptr; ///
1949 enum k_pch_SteamVR_DisplayDebugX_Int32_s = "displayDebugX"; ///
1950 enum const(char)* k_pch_SteamVR_DisplayDebugX_Int32 = k_pch_SteamVR_DisplayDebugX_Int32_s.ptr; ///
1951 enum k_pch_SteamVR_DisplayDebugY_Int32_s = "displayDebugY"; ///
1952 enum const(char)* k_pch_SteamVR_DisplayDebugY_Int32 = k_pch_SteamVR_DisplayDebugY_Int32_s.ptr; ///
1953 enum k_pch_SteamVR_SendSystemButtonToAllApps_Bool_s = "sendSystemButtonToAllApps"; ///
1954 enum const(char)* k_pch_SteamVR_SendSystemButtonToAllApps_Bool = k_pch_SteamVR_SendSystemButtonToAllApps_Bool_s.ptr; ///
1955 enum k_pch_SteamVR_LogLevel_Int32_s = "loglevel"; ///
1956 enum const(char)* k_pch_SteamVR_LogLevel_Int32 = k_pch_SteamVR_LogLevel_Int32_s.ptr; ///
1957 enum k_pch_SteamVR_IPD_Float_s = "ipd"; ///
1958 enum const(char)* k_pch_SteamVR_IPD_Float = k_pch_SteamVR_IPD_Float_s.ptr; ///
1959 enum k_pch_SteamVR_Background_String_s = "background"; ///
1960 enum const(char)* k_pch_SteamVR_Background_String = k_pch_SteamVR_Background_String_s.ptr; ///
1961 enum k_pch_SteamVR_BackgroundUseDomeProjection_Bool_s = "backgroundUseDomeProjection"; ///
1962 enum const(char)* k_pch_SteamVR_BackgroundUseDomeProjection_Bool = k_pch_SteamVR_BackgroundUseDomeProjection_Bool_s.ptr; ///
1963 enum k_pch_SteamVR_BackgroundCameraHeight_Float_s = "backgroundCameraHeight"; ///
1964 enum const(char)* k_pch_SteamVR_BackgroundCameraHeight_Float = k_pch_SteamVR_BackgroundCameraHeight_Float_s.ptr; ///
1965 enum k_pch_SteamVR_BackgroundDomeRadius_Float_s = "backgroundDomeRadius"; ///
1966 enum const(char)* k_pch_SteamVR_BackgroundDomeRadius_Float = k_pch_SteamVR_BackgroundDomeRadius_Float_s.ptr; ///
1967 enum k_pch_SteamVR_GridColor_String_s = "gridColor"; ///
1968 enum const(char)* k_pch_SteamVR_GridColor_String = k_pch_SteamVR_GridColor_String_s.ptr; ///
1969 enum k_pch_SteamVR_PlayAreaColor_String_s = "playAreaColor"; ///
1970 enum const(char)* k_pch_SteamVR_PlayAreaColor_String = k_pch_SteamVR_PlayAreaColor_String_s.ptr; ///
1971 enum k_pch_SteamVR_TrackingLossColor_String_s = "trackingLossColor"; ///
1972 enum const(char)* k_pch_SteamVR_TrackingLossColor_String = k_pch_SteamVR_TrackingLossColor_String_s.ptr; ///
1973 enum k_pch_SteamVR_ShowStage_Bool_s = "showStage"; ///
1974 enum const(char)* k_pch_SteamVR_ShowStage_Bool = k_pch_SteamVR_ShowStage_Bool_s.ptr; ///
1975 enum k_pch_SteamVR_ActivateMultipleDrivers_Bool_s = "activateMultipleDrivers"; ///
1976 enum const(char)* k_pch_SteamVR_ActivateMultipleDrivers_Bool = k_pch_SteamVR_ActivateMultipleDrivers_Bool_s.ptr; ///
1977 enum k_pch_SteamVR_UsingSpeakers_Bool_s = "usingSpeakers"; ///
1978 enum const(char)* k_pch_SteamVR_UsingSpeakers_Bool = k_pch_SteamVR_UsingSpeakers_Bool_s.ptr; ///
1979 enum k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float_s = "speakersForwardYawOffsetDegrees"; ///
1980 enum const(char)* k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float_s.ptr; ///
1981 enum k_pch_SteamVR_BaseStationPowerManagement_Int32_s = "basestationPowerManagement"; ///
1982 enum const(char)* k_pch_SteamVR_BaseStationPowerManagement_Int32 = k_pch_SteamVR_BaseStationPowerManagement_Int32_s.ptr; ///
1983 enum k_pch_SteamVR_ShowBaseStationPowerManagementTip_Int32_s = "ShowBaseStationPowerManagementTip"; ///
1984 enum const(char)* k_pch_SteamVR_ShowBaseStationPowerManagementTip_Int32 = k_pch_SteamVR_ShowBaseStationPowerManagementTip_Int32_s.ptr; ///
1985 enum k_pch_SteamVR_NeverKillProcesses_Bool_s = "neverKillProcesses"; ///
1986 enum const(char)* k_pch_SteamVR_NeverKillProcesses_Bool = k_pch_SteamVR_NeverKillProcesses_Bool_s.ptr; ///
1987 enum k_pch_SteamVR_SupersampleScale_Float_s = "supersampleScale"; ///
1988 enum const(char)* k_pch_SteamVR_SupersampleScale_Float = k_pch_SteamVR_SupersampleScale_Float_s.ptr; ///
1989 enum k_pch_SteamVR_MaxRecommendedResolution_Int32_s = "maxRecommendedResolution"; ///
1990 enum const(char)* k_pch_SteamVR_MaxRecommendedResolution_Int32 = k_pch_SteamVR_MaxRecommendedResolution_Int32_s.ptr; ///
1991 enum k_pch_SteamVR_MotionSmoothing_Bool_s = "motionSmoothing"; ///
1992 enum const(char)* k_pch_SteamVR_MotionSmoothing_Bool = k_pch_SteamVR_MotionSmoothing_Bool_s.ptr; ///
1993 enum k_pch_SteamVR_MotionSmoothingOverride_Int32_s = "motionSmoothingOverride"; ///
1994 enum const(char)* k_pch_SteamVR_MotionSmoothingOverride_Int32 = k_pch_SteamVR_MotionSmoothingOverride_Int32_s.ptr; ///
1995 enum k_pch_SteamVR_DisableAsyncReprojection_Bool_s = "disableAsync"; ///
1996 enum const(char)* k_pch_SteamVR_DisableAsyncReprojection_Bool = k_pch_SteamVR_DisableAsyncReprojection_Bool_s.ptr; ///
1997 enum k_pch_SteamVR_ForceFadeOnBadTracking_Bool_s = "forceFadeOnBadTracking"; ///
1998 enum const(char)* k_pch_SteamVR_ForceFadeOnBadTracking_Bool = k_pch_SteamVR_ForceFadeOnBadTracking_Bool_s.ptr; ///
1999 enum k_pch_SteamVR_DefaultMirrorView_Int32_s = "mirrorView"; ///
2000 enum const(char)* k_pch_SteamVR_DefaultMirrorView_Int32 = k_pch_SteamVR_DefaultMirrorView_Int32_s.ptr; ///
2001 enum k_pch_SteamVR_ShowLegacyMirrorView_Bool_s = "showLegacyMirrorView"; ///
2002 enum const(char)* k_pch_SteamVR_ShowLegacyMirrorView_Bool = k_pch_SteamVR_ShowLegacyMirrorView_Bool_s.ptr; ///
2003 enum k_pch_SteamVR_MirrorViewVisibility_Bool_s = "showMirrorView"; ///
2004 enum const(char)* k_pch_SteamVR_MirrorViewVisibility_Bool = k_pch_SteamVR_MirrorViewVisibility_Bool_s.ptr; ///
2005 enum k_pch_SteamVR_MirrorViewDisplayMode_Int32_s = "mirrorViewDisplayMode"; ///
2006 enum const(char)* k_pch_SteamVR_MirrorViewDisplayMode_Int32 = k_pch_SteamVR_MirrorViewDisplayMode_Int32_s.ptr; ///
2007 enum k_pch_SteamVR_MirrorViewEye_Int32_s = "mirrorViewEye"; ///
2008 enum const(char)* k_pch_SteamVR_MirrorViewEye_Int32 = k_pch_SteamVR_MirrorViewEye_Int32_s.ptr; ///
2009 enum k_pch_SteamVR_MirrorViewGeometry_String_s = "mirrorViewGeometry"; ///
2010 enum const(char)* k_pch_SteamVR_MirrorViewGeometry_String = k_pch_SteamVR_MirrorViewGeometry_String_s.ptr; ///
2011 enum k_pch_SteamVR_MirrorViewGeometryMaximized_String_s = "mirrorViewGeometryMaximized"; ///
2012 enum const(char)* k_pch_SteamVR_MirrorViewGeometryMaximized_String = k_pch_SteamVR_MirrorViewGeometryMaximized_String_s.ptr; ///
2013 enum k_pch_SteamVR_PerfGraphVisibility_Bool_s = "showPerfGraph"; ///
2014 enum const(char)* k_pch_SteamVR_PerfGraphVisibility_Bool = k_pch_SteamVR_PerfGraphVisibility_Bool_s.ptr; ///
2015 enum k_pch_SteamVR_StartMonitorFromAppLaunch_s = "startMonitorFromAppLaunch"; ///
2016 enum const(char)* k_pch_SteamVR_StartMonitorFromAppLaunch = k_pch_SteamVR_StartMonitorFromAppLaunch_s.ptr; ///
2017 enum k_pch_SteamVR_StartCompositorFromAppLaunch_Bool_s = "startCompositorFromAppLaunch"; ///
2018 enum const(char)* k_pch_SteamVR_StartCompositorFromAppLaunch_Bool = k_pch_SteamVR_StartCompositorFromAppLaunch_Bool_s.ptr; ///
2019 enum k_pch_SteamVR_StartDashboardFromAppLaunch_Bool_s = "startDashboardFromAppLaunch"; ///
2020 enum const(char)* k_pch_SteamVR_StartDashboardFromAppLaunch_Bool = k_pch_SteamVR_StartDashboardFromAppLaunch_Bool_s.ptr; ///
2021 enum k_pch_SteamVR_StartOverlayAppsFromDashboard_Bool_s = "startOverlayAppsFromDashboard"; ///
2022 enum const(char)* k_pch_SteamVR_StartOverlayAppsFromDashboard_Bool = k_pch_SteamVR_StartOverlayAppsFromDashboard_Bool_s.ptr; ///
2023 enum k_pch_SteamVR_EnableHomeApp_s = "enableHomeApp"; ///
2024 enum const(char)* k_pch_SteamVR_EnableHomeApp = k_pch_SteamVR_EnableHomeApp_s.ptr; ///
2025 enum k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32_s = "CycleBackgroundImageTimeSec"; ///
2026 enum const(char)* k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32_s.ptr; ///
2027 enum k_pch_SteamVR_RetailDemo_Bool_s = "retailDemo"; ///
2028 enum const(char)* k_pch_SteamVR_RetailDemo_Bool = k_pch_SteamVR_RetailDemo_Bool_s.ptr; ///
2029 enum k_pch_SteamVR_IpdOffset_Float_s = "ipdOffset"; ///
2030 enum const(char)* k_pch_SteamVR_IpdOffset_Float = k_pch_SteamVR_IpdOffset_Float_s.ptr; ///
2031 enum k_pch_SteamVR_AllowSupersampleFiltering_Bool_s = "allowSupersampleFiltering"; ///
2032 enum const(char)* k_pch_SteamVR_AllowSupersampleFiltering_Bool = k_pch_SteamVR_AllowSupersampleFiltering_Bool_s.ptr; ///
2033 enum k_pch_SteamVR_SupersampleManualOverride_Bool_s = "supersampleManualOverride"; ///
2034 enum const(char)* k_pch_SteamVR_SupersampleManualOverride_Bool = k_pch_SteamVR_SupersampleManualOverride_Bool_s.ptr; ///
2035 enum k_pch_SteamVR_EnableLinuxVulkanAsync_Bool_s = "enableLinuxVulkanAsync"; ///
2036 enum const(char)* k_pch_SteamVR_EnableLinuxVulkanAsync_Bool = k_pch_SteamVR_EnableLinuxVulkanAsync_Bool_s.ptr; ///
2037 enum k_pch_SteamVR_AllowDisplayLockedMode_Bool_s = "allowDisplayLockedMode"; ///
2038 enum const(char)* k_pch_SteamVR_AllowDisplayLockedMode_Bool = k_pch_SteamVR_AllowDisplayLockedMode_Bool_s.ptr; ///
2039 enum k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool_s = "haveStartedTutorialForNativeChaperoneDriver"; ///
2040 enum const(char)* k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool = k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool_s.ptr; ///
2041 enum k_pch_SteamVR_ForceWindows32bitVRMonitor_s = "forceWindows32BitVRMonitor"; ///
2042 enum const(char)* k_pch_SteamVR_ForceWindows32bitVRMonitor = k_pch_SteamVR_ForceWindows32bitVRMonitor_s.ptr; ///
2043 enum k_pch_SteamVR_DebugInputBinding_s = "debugInputBinding"; ///
2044 enum const(char)* k_pch_SteamVR_DebugInputBinding = k_pch_SteamVR_DebugInputBinding_s.ptr; ///
2045 enum k_pch_SteamVR_DoNotFadeToGrid_s = "doNotFadeToGrid"; ///
2046 enum const(char)* k_pch_SteamVR_DoNotFadeToGrid = k_pch_SteamVR_DoNotFadeToGrid_s.ptr; ///
2047 enum k_pch_SteamVR_RenderCameraMode_s = "renderCameraMode"; ///
2048 enum const(char)* k_pch_SteamVR_RenderCameraMode = k_pch_SteamVR_RenderCameraMode_s.ptr; ///
2049 enum k_pch_SteamVR_EnableSharedResourceJournaling_s = "enableSharedResourceJournaling"; ///
2050 enum const(char)* k_pch_SteamVR_EnableSharedResourceJournaling = k_pch_SteamVR_EnableSharedResourceJournaling_s.ptr; ///
2051 enum k_pch_SteamVR_EnableSafeMode_s = "enableSafeMode"; ///
2052 enum const(char)* k_pch_SteamVR_EnableSafeMode = k_pch_SteamVR_EnableSafeMode_s.ptr; ///
2053 enum k_pch_SteamVR_PreferredRefreshRate_s = "preferredRefreshRate"; ///
2054 enum const(char)* k_pch_SteamVR_PreferredRefreshRate = k_pch_SteamVR_PreferredRefreshRate_s.ptr; ///
2055 enum k_pch_SteamVR_LastVersionNotice_s = "lastVersionNotice"; ///
2056 enum const(char)* k_pch_SteamVR_LastVersionNotice = k_pch_SteamVR_LastVersionNotice_s.ptr; ///
2057 enum k_pch_SteamVR_LastVersionNoticeDate_s = "lastVersionNoticeDate"; ///
2058 enum const(char)* k_pch_SteamVR_LastVersionNoticeDate = k_pch_SteamVR_LastVersionNoticeDate_s.ptr; ///
2059 enum k_pch_SteamVR_HmdDisplayColorGainR_Float_s = "hmdDisplayColorGainR"; ///
2060 enum const(char)* k_pch_SteamVR_HmdDisplayColorGainR_Float = k_pch_SteamVR_HmdDisplayColorGainR_Float_s.ptr; ///
2061 enum k_pch_SteamVR_HmdDisplayColorGainG_Float_s = "hmdDisplayColorGainG"; ///
2062 enum const(char)* k_pch_SteamVR_HmdDisplayColorGainG_Float = k_pch_SteamVR_HmdDisplayColorGainG_Float_s.ptr; ///
2063 enum k_pch_SteamVR_HmdDisplayColorGainB_Float_s = "hmdDisplayColorGainB"; ///
2064 enum const(char)* k_pch_SteamVR_HmdDisplayColorGainB_Float = k_pch_SteamVR_HmdDisplayColorGainB_Float_s.ptr; ///
2065 enum k_pch_SteamVR_CustomIconStyle_String_s = "customIconStyle"; ///
2066 enum const(char)* k_pch_SteamVR_CustomIconStyle_String = k_pch_SteamVR_CustomIconStyle_String_s.ptr; ///
2067 enum k_pch_SteamVR_CustomOffIconStyle_String_s = "customOffIconStyle"; ///
2068 enum const(char)* k_pch_SteamVR_CustomOffIconStyle_String = k_pch_SteamVR_CustomOffIconStyle_String_s.ptr; ///
2069 enum k_pch_SteamVR_CustomIconForceUpdate_String_s = "customIconForceUpdate"; ///
2070 enum const(char)* k_pch_SteamVR_CustomIconForceUpdate_String = k_pch_SteamVR_CustomIconForceUpdate_String_s.ptr; ///
2071 enum k_pch_SteamVR_AllowGlobalActionSetPriority_s = "globalActionSetPriority"; ///
2072 enum const(char)* k_pch_SteamVR_AllowGlobalActionSetPriority = k_pch_SteamVR_AllowGlobalActionSetPriority_s.ptr; ///
2073 enum k_pch_SteamVR_OverlayRenderQuality_s = "overlayRenderQuality_2"; ///
2074 enum const(char)* k_pch_SteamVR_OverlayRenderQuality = k_pch_SteamVR_OverlayRenderQuality_s.ptr; ///
2075 enum k_pch_DirectMode_Section_s = "direct_mode"; ///
2076 enum const(char)* k_pch_DirectMode_Section = k_pch_DirectMode_Section_s.ptr; ///
2077 enum k_pch_DirectMode_Enable_Bool_s = "enable"; ///
2078 enum const(char)* k_pch_DirectMode_Enable_Bool = k_pch_DirectMode_Enable_Bool_s.ptr; ///
2079 enum k_pch_DirectMode_Count_Int32_s = "count"; ///
2080 enum const(char)* k_pch_DirectMode_Count_Int32 = k_pch_DirectMode_Count_Int32_s.ptr; ///
2081 enum k_pch_DirectMode_EdidVid_Int32_s = "edidVid"; ///
2082 enum const(char)* k_pch_DirectMode_EdidVid_Int32 = k_pch_DirectMode_EdidVid_Int32_s.ptr; ///
2083 enum k_pch_DirectMode_EdidPid_Int32_s = "edidPid"; ///
2084 enum const(char)* k_pch_DirectMode_EdidPid_Int32 = k_pch_DirectMode_EdidPid_Int32_s.ptr; ///
2085 enum k_pch_Lighthouse_Section_s = "driver_lighthouse"; ///
2086 enum const(char)* k_pch_Lighthouse_Section = k_pch_Lighthouse_Section_s.ptr; ///
2087 enum k_pch_Lighthouse_DisableIMU_Bool_s = "disableimu"; ///
2088 enum const(char)* k_pch_Lighthouse_DisableIMU_Bool = k_pch_Lighthouse_DisableIMU_Bool_s.ptr; ///
2089 enum k_pch_Lighthouse_DisableIMUExceptHMD_Bool_s = "disableimuexcepthmd"; ///
2090 enum const(char)* k_pch_Lighthouse_DisableIMUExceptHMD_Bool = k_pch_Lighthouse_DisableIMUExceptHMD_Bool_s.ptr; ///
2091 enum k_pch_Lighthouse_UseDisambiguation_String_s = "usedisambiguation"; ///
2092 enum const(char)* k_pch_Lighthouse_UseDisambiguation_String = k_pch_Lighthouse_UseDisambiguation_String_s.ptr; ///
2093 enum k_pch_Lighthouse_DisambiguationDebug_Int32_s = "disambiguationdebug"; ///
2094 enum const(char)* k_pch_Lighthouse_DisambiguationDebug_Int32 = k_pch_Lighthouse_DisambiguationDebug_Int32_s.ptr; ///
2095 enum k_pch_Lighthouse_PrimaryBasestation_Int32_s = "primarybasestation"; ///
2096 enum const(char)* k_pch_Lighthouse_PrimaryBasestation_Int32 = k_pch_Lighthouse_PrimaryBasestation_Int32_s.ptr; ///
2097 enum k_pch_Lighthouse_DBHistory_Bool_s = "dbhistory"; ///
2098 enum const(char)* k_pch_Lighthouse_DBHistory_Bool = k_pch_Lighthouse_DBHistory_Bool_s.ptr; ///
2099 enum k_pch_Lighthouse_EnableBluetooth_Bool_s = "enableBluetooth"; ///
2100 enum const(char)* k_pch_Lighthouse_EnableBluetooth_Bool = k_pch_Lighthouse_EnableBluetooth_Bool_s.ptr; ///
2101 enum k_pch_Lighthouse_PowerManagedBaseStations_String_s = "PowerManagedBaseStations"; ///
2102 enum const(char)* k_pch_Lighthouse_PowerManagedBaseStations_String = k_pch_Lighthouse_PowerManagedBaseStations_String_s.ptr; ///
2103 enum k_pch_Lighthouse_PowerManagedBaseStations2_String_s = "PowerManagedBaseStations2"; ///
2104 enum const(char)* k_pch_Lighthouse_PowerManagedBaseStations2_String = k_pch_Lighthouse_PowerManagedBaseStations2_String_s.ptr; ///
2105 enum k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32_s = "InactivityTimeoutForBaseStations"; ///
2106 enum const(char)* k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32_s.ptr; ///
2107 enum k_pch_Lighthouse_EnableImuFallback_Bool_s = "enableImuFallback"; ///
2108 enum const(char)* k_pch_Lighthouse_EnableImuFallback_Bool = k_pch_Lighthouse_EnableImuFallback_Bool_s.ptr; ///
2109 enum k_pch_Null_Section_s = "driver_null"; ///
2110 enum const(char)* k_pch_Null_Section = k_pch_Null_Section_s.ptr; ///
2111 enum k_pch_Null_SerialNumber_String_s = "serialNumber"; ///
2112 enum const(char)* k_pch_Null_SerialNumber_String = k_pch_Null_SerialNumber_String_s.ptr; ///
2113 enum k_pch_Null_ModelNumber_String_s = "modelNumber"; ///
2114 enum const(char)* k_pch_Null_ModelNumber_String = k_pch_Null_ModelNumber_String_s.ptr; ///
2115 enum k_pch_Null_WindowX_Int32_s = "windowX"; ///
2116 enum const(char)* k_pch_Null_WindowX_Int32 = k_pch_Null_WindowX_Int32_s.ptr; ///
2117 enum k_pch_Null_WindowY_Int32_s = "windowY"; ///
2118 enum const(char)* k_pch_Null_WindowY_Int32 = k_pch_Null_WindowY_Int32_s.ptr; ///
2119 enum k_pch_Null_WindowWidth_Int32_s = "windowWidth"; ///
2120 enum const(char)* k_pch_Null_WindowWidth_Int32 = k_pch_Null_WindowWidth_Int32_s.ptr; ///
2121 enum k_pch_Null_WindowHeight_Int32_s = "windowHeight"; ///
2122 enum const(char)* k_pch_Null_WindowHeight_Int32 = k_pch_Null_WindowHeight_Int32_s.ptr; ///
2123 enum k_pch_Null_RenderWidth_Int32_s = "renderWidth"; ///
2124 enum const(char)* k_pch_Null_RenderWidth_Int32 = k_pch_Null_RenderWidth_Int32_s.ptr; ///
2125 enum k_pch_Null_RenderHeight_Int32_s = "renderHeight"; ///
2126 enum const(char)* k_pch_Null_RenderHeight_Int32 = k_pch_Null_RenderHeight_Int32_s.ptr; ///
2127 enum k_pch_Null_SecondsFromVsyncToPhotons_Float_s = "secondsFromVsyncToPhotons"; ///
2128 enum const(char)* k_pch_Null_SecondsFromVsyncToPhotons_Float = k_pch_Null_SecondsFromVsyncToPhotons_Float_s.ptr; ///
2129 enum k_pch_Null_DisplayFrequency_Float_s = "displayFrequency"; ///
2130 enum const(char)* k_pch_Null_DisplayFrequency_Float = k_pch_Null_DisplayFrequency_Float_s.ptr; ///
2131 enum k_pch_WindowsMR_Section_s = "driver_holographic"; ///
2132 enum const(char)* k_pch_WindowsMR_Section = k_pch_WindowsMR_Section_s.ptr; ///
2133 enum k_pch_UserInterface_Section_s = "userinterface"; ///
2134 enum const(char)* k_pch_UserInterface_Section = k_pch_UserInterface_Section_s.ptr; ///
2135 enum k_pch_UserInterface_StatusAlwaysOnTop_Bool_s = "StatusAlwaysOnTop"; ///
2136 enum const(char)* k_pch_UserInterface_StatusAlwaysOnTop_Bool = k_pch_UserInterface_StatusAlwaysOnTop_Bool_s.ptr; ///
2137 enum k_pch_UserInterface_MinimizeToTray_Bool_s = "MinimizeToTray"; ///
2138 enum const(char)* k_pch_UserInterface_MinimizeToTray_Bool = k_pch_UserInterface_MinimizeToTray_Bool_s.ptr; ///
2139 enum k_pch_UserInterface_HidePopupsWhenStatusMinimized_Bool_s = "HidePopupsWhenStatusMinimized"; ///
2140 enum const(char)* k_pch_UserInterface_HidePopupsWhenStatusMinimized_Bool = k_pch_UserInterface_HidePopupsWhenStatusMinimized_Bool_s.ptr; ///
2141 enum k_pch_UserInterface_Screenshots_Bool_s = "screenshots"; ///
2142 enum const(char)* k_pch_UserInterface_Screenshots_Bool = k_pch_UserInterface_Screenshots_Bool_s.ptr; ///
2143 enum k_pch_UserInterface_ScreenshotType_Int_s = "screenshotType"; ///
2144 enum const(char)* k_pch_UserInterface_ScreenshotType_Int = k_pch_UserInterface_ScreenshotType_Int_s.ptr; ///
2145 enum k_pch_Notifications_Section_s = "notifications"; ///
2146 enum const(char)* k_pch_Notifications_Section = k_pch_Notifications_Section_s.ptr; ///
2147 enum k_pch_Notifications_DoNotDisturb_Bool_s = "DoNotDisturb"; ///
2148 enum const(char)* k_pch_Notifications_DoNotDisturb_Bool = k_pch_Notifications_DoNotDisturb_Bool_s.ptr; ///
2149 enum k_pch_Keyboard_Section_s = "keyboard"; ///
2150 enum const(char)* k_pch_Keyboard_Section = k_pch_Keyboard_Section_s.ptr; ///
2151 enum k_pch_Keyboard_TutorialCompletions_s = "TutorialCompletions"; ///
2152 enum const(char)* k_pch_Keyboard_TutorialCompletions = k_pch_Keyboard_TutorialCompletions_s.ptr; ///
2153 enum k_pch_Keyboard_ScaleX_s = "ScaleX"; ///
2154 enum const(char)* k_pch_Keyboard_ScaleX = k_pch_Keyboard_ScaleX_s.ptr; ///
2155 enum k_pch_Keyboard_ScaleY_s = "ScaleY"; ///
2156 enum const(char)* k_pch_Keyboard_ScaleY = k_pch_Keyboard_ScaleY_s.ptr; ///
2157 enum k_pch_Keyboard_OffsetLeftX_s = "OffsetLeftX"; ///
2158 enum const(char)* k_pch_Keyboard_OffsetLeftX = k_pch_Keyboard_OffsetLeftX_s.ptr; ///
2159 enum k_pch_Keyboard_OffsetRightX_s = "OffsetRightX"; ///
2160 enum const(char)* k_pch_Keyboard_OffsetRightX = k_pch_Keyboard_OffsetRightX_s.ptr; ///
2161 enum k_pch_Keyboard_OffsetY_s = "OffsetY"; ///
2162 enum const(char)* k_pch_Keyboard_OffsetY = k_pch_Keyboard_OffsetY_s.ptr; ///
2163 enum k_pch_Keyboard_Smoothing_s = "Smoothing"; ///
2164 enum const(char)* k_pch_Keyboard_Smoothing = k_pch_Keyboard_Smoothing_s.ptr; ///
2165 enum k_pch_Perf_Section_s = "perfcheck"; ///
2166 enum const(char)* k_pch_Perf_Section = k_pch_Perf_Section_s.ptr; ///
2167 enum k_pch_Perf_PerfGraphInHMD_Bool_s = "perfGraphInHMD"; ///
2168 enum const(char)* k_pch_Perf_PerfGraphInHMD_Bool = k_pch_Perf_PerfGraphInHMD_Bool_s.ptr; ///
2169 enum k_pch_Perf_AllowTimingStore_Bool_s = "allowTimingStore"; ///
2170 enum const(char)* k_pch_Perf_AllowTimingStore_Bool = k_pch_Perf_AllowTimingStore_Bool_s.ptr; ///
2171 enum k_pch_Perf_SaveTimingsOnExit_Bool_s = "saveTimingsOnExit"; ///
2172 enum const(char)* k_pch_Perf_SaveTimingsOnExit_Bool = k_pch_Perf_SaveTimingsOnExit_Bool_s.ptr; ///
2173 enum k_pch_Perf_TestData_Float_s = "perfTestData"; ///
2174 enum const(char)* k_pch_Perf_TestData_Float = k_pch_Perf_TestData_Float_s.ptr; ///
2175 enum k_pch_Perf_GPUProfiling_Bool_s = "GPUProfiling"; ///
2176 enum const(char)* k_pch_Perf_GPUProfiling_Bool = k_pch_Perf_GPUProfiling_Bool_s.ptr; ///
2177 enum k_pch_CollisionBounds_Section_s = "collisionBounds"; ///
2178 enum const(char)* k_pch_CollisionBounds_Section = k_pch_CollisionBounds_Section_s.ptr; ///
2179 enum k_pch_CollisionBounds_Style_Int32_s = "CollisionBoundsStyle"; ///
2180 enum const(char)* k_pch_CollisionBounds_Style_Int32 = k_pch_CollisionBounds_Style_Int32_s.ptr; ///
2181 enum k_pch_CollisionBounds_GroundPerimeterOn_Bool_s = "CollisionBoundsGroundPerimeterOn"; ///
2182 enum const(char)* k_pch_CollisionBounds_GroundPerimeterOn_Bool = k_pch_CollisionBounds_GroundPerimeterOn_Bool_s.ptr; ///
2183 enum k_pch_CollisionBounds_CenterMarkerOn_Bool_s = "CollisionBoundsCenterMarkerOn"; ///
2184 enum const(char)* k_pch_CollisionBounds_CenterMarkerOn_Bool = k_pch_CollisionBounds_CenterMarkerOn_Bool_s.ptr; ///
2185 enum k_pch_CollisionBounds_PlaySpaceOn_Bool_s = "CollisionBoundsPlaySpaceOn"; ///
2186 enum const(char)* k_pch_CollisionBounds_PlaySpaceOn_Bool = k_pch_CollisionBounds_PlaySpaceOn_Bool_s.ptr; ///
2187 enum k_pch_CollisionBounds_FadeDistance_Float_s = "CollisionBoundsFadeDistance"; ///
2188 enum const(char)* k_pch_CollisionBounds_FadeDistance_Float = k_pch_CollisionBounds_FadeDistance_Float_s.ptr; ///
2189 enum k_pch_CollisionBounds_WallHeight_Float_s = "CollisionBoundsWallHeight"; ///
2190 enum const(char)* k_pch_CollisionBounds_WallHeight_Float = k_pch_CollisionBounds_WallHeight_Float_s.ptr; ///
2191 enum k_pch_CollisionBounds_ColorGammaR_Int32_s = "CollisionBoundsColorGammaR"; ///
2192 enum const(char)* k_pch_CollisionBounds_ColorGammaR_Int32 = k_pch_CollisionBounds_ColorGammaR_Int32_s.ptr; ///
2193 enum k_pch_CollisionBounds_ColorGammaG_Int32_s = "CollisionBoundsColorGammaG"; ///
2194 enum const(char)* k_pch_CollisionBounds_ColorGammaG_Int32 = k_pch_CollisionBounds_ColorGammaG_Int32_s.ptr; ///
2195 enum k_pch_CollisionBounds_ColorGammaB_Int32_s = "CollisionBoundsColorGammaB"; ///
2196 enum const(char)* k_pch_CollisionBounds_ColorGammaB_Int32 = k_pch_CollisionBounds_ColorGammaB_Int32_s.ptr; ///
2197 enum k_pch_CollisionBounds_ColorGammaA_Int32_s = "CollisionBoundsColorGammaA"; ///
2198 enum const(char)* k_pch_CollisionBounds_ColorGammaA_Int32 = k_pch_CollisionBounds_ColorGammaA_Int32_s.ptr; ///
2199 enum k_pch_CollisionBounds_EnableDriverImport_s = "enableDriverBoundsImport"; ///
2200 enum const(char)* k_pch_CollisionBounds_EnableDriverImport = k_pch_CollisionBounds_EnableDriverImport_s.ptr; ///
2201 enum k_pch_Camera_Section_s = "camera"; ///
2202 enum const(char)* k_pch_Camera_Section = k_pch_Camera_Section_s.ptr; ///
2203 enum k_pch_Camera_EnableCamera_Bool_s = "enableCamera"; ///
2204 enum const(char)* k_pch_Camera_EnableCamera_Bool = k_pch_Camera_EnableCamera_Bool_s.ptr; ///
2205 enum k_pch_Camera_EnableCameraInDashboard_Bool_s = "enableCameraInDashboard"; ///
2206 enum const(char)* k_pch_Camera_EnableCameraInDashboard_Bool = k_pch_Camera_EnableCameraInDashboard_Bool_s.ptr; ///
2207 enum k_pch_Camera_EnableCameraForCollisionBounds_Bool_s = "enableCameraForCollisionBounds"; ///
2208 enum const(char)* k_pch_Camera_EnableCameraForCollisionBounds_Bool = k_pch_Camera_EnableCameraForCollisionBounds_Bool_s.ptr; ///
2209 enum k_pch_Camera_EnableCameraForRoomView_Bool_s = "enableCameraForRoomView"; ///
2210 enum const(char)* k_pch_Camera_EnableCameraForRoomView_Bool = k_pch_Camera_EnableCameraForRoomView_Bool_s.ptr; ///
2211 enum k_pch_Camera_BoundsColorGammaR_Int32_s = "cameraBoundsColorGammaR"; ///
2212 enum const(char)* k_pch_Camera_BoundsColorGammaR_Int32 = k_pch_Camera_BoundsColorGammaR_Int32_s.ptr; ///
2213 enum k_pch_Camera_BoundsColorGammaG_Int32_s = "cameraBoundsColorGammaG"; ///
2214 enum const(char)* k_pch_Camera_BoundsColorGammaG_Int32 = k_pch_Camera_BoundsColorGammaG_Int32_s.ptr; ///
2215 enum k_pch_Camera_BoundsColorGammaB_Int32_s = "cameraBoundsColorGammaB"; ///
2216 enum const(char)* k_pch_Camera_BoundsColorGammaB_Int32 = k_pch_Camera_BoundsColorGammaB_Int32_s.ptr; ///
2217 enum k_pch_Camera_BoundsColorGammaA_Int32_s = "cameraBoundsColorGammaA"; ///
2218 enum const(char)* k_pch_Camera_BoundsColorGammaA_Int32 = k_pch_Camera_BoundsColorGammaA_Int32_s.ptr; ///
2219 enum k_pch_Camera_BoundsStrength_Int32_s = "cameraBoundsStrength"; ///
2220 enum const(char)* k_pch_Camera_BoundsStrength_Int32 = k_pch_Camera_BoundsStrength_Int32_s.ptr; ///
2221 enum k_pch_Camera_RoomViewMode_Int32_s = "cameraRoomViewMode"; ///
2222 enum const(char)* k_pch_Camera_RoomViewMode_Int32 = k_pch_Camera_RoomViewMode_Int32_s.ptr; ///
2223 enum k_pch_audio_Section_s = "audio"; ///
2224 enum const(char)* k_pch_audio_Section = k_pch_audio_Section_s.ptr; ///
2225 enum k_pch_audio_SetOsDefaultPlaybackDevice_Bool_s = "setOsDefaultPlaybackDevice"; ///
2226 enum const(char)* k_pch_audio_SetOsDefaultPlaybackDevice_Bool = k_pch_audio_SetOsDefaultPlaybackDevice_Bool_s.ptr; ///
2227 enum k_pch_audio_EnablePlaybackDeviceOverride_Bool_s = "enablePlaybackDeviceOverride"; ///
2228 enum const(char)* k_pch_audio_EnablePlaybackDeviceOverride_Bool = k_pch_audio_EnablePlaybackDeviceOverride_Bool_s.ptr; ///
2229 enum k_pch_audio_PlaybackDeviceOverride_String_s = "playbackDeviceOverride"; ///
2230 enum const(char)* k_pch_audio_PlaybackDeviceOverride_String = k_pch_audio_PlaybackDeviceOverride_String_s.ptr; ///
2231 enum k_pch_audio_PlaybackDeviceOverrideName_String_s = "playbackDeviceOverrideName"; ///
2232 enum const(char)* k_pch_audio_PlaybackDeviceOverrideName_String = k_pch_audio_PlaybackDeviceOverrideName_String_s.ptr; ///
2233 enum k_pch_audio_SetOsDefaultRecordingDevice_Bool_s = "setOsDefaultRecordingDevice"; ///
2234 enum const(char)* k_pch_audio_SetOsDefaultRecordingDevice_Bool = k_pch_audio_SetOsDefaultRecordingDevice_Bool_s.ptr; ///
2235 enum k_pch_audio_EnableRecordingDeviceOverride_Bool_s = "enableRecordingDeviceOverride"; ///
2236 enum const(char)* k_pch_audio_EnableRecordingDeviceOverride_Bool = k_pch_audio_EnableRecordingDeviceOverride_Bool_s.ptr; ///
2237 enum k_pch_audio_RecordingDeviceOverride_String_s = "recordingDeviceOverride"; ///
2238 enum const(char)* k_pch_audio_RecordingDeviceOverride_String = k_pch_audio_RecordingDeviceOverride_String_s.ptr; ///
2239 enum k_pch_audio_RecordingDeviceOverrideName_String_s = "recordingDeviceOverrideName"; ///
2240 enum const(char)* k_pch_audio_RecordingDeviceOverrideName_String = k_pch_audio_RecordingDeviceOverrideName_String_s.ptr; ///
2241 enum k_pch_audio_EnablePlaybackMirror_Bool_s = "enablePlaybackMirror"; ///
2242 enum const(char)* k_pch_audio_EnablePlaybackMirror_Bool = k_pch_audio_EnablePlaybackMirror_Bool_s.ptr; ///
2243 enum k_pch_audio_PlaybackMirrorDevice_String_s = "playbackMirrorDevice"; ///
2244 enum const(char)* k_pch_audio_PlaybackMirrorDevice_String = k_pch_audio_PlaybackMirrorDevice_String_s.ptr; ///
2245 enum k_pch_audio_PlaybackMirrorDeviceName_String_s = "playbackMirrorDeviceName"; ///
2246 enum const(char)* k_pch_audio_PlaybackMirrorDeviceName_String = k_pch_audio_PlaybackMirrorDeviceName_String_s.ptr; ///
2247 enum k_pch_audio_OldPlaybackMirrorDevice_String_s = "onPlaybackMirrorDevice"; ///
2248 enum const(char)* k_pch_audio_OldPlaybackMirrorDevice_String = k_pch_audio_OldPlaybackMirrorDevice_String_s.ptr; ///
2249 enum k_pch_audio_ActiveMirrorDevice_String_s = "activePlaybackMirrorDevice"; ///
2250 enum const(char)* k_pch_audio_ActiveMirrorDevice_String = k_pch_audio_ActiveMirrorDevice_String_s.ptr; ///
2251 enum k_pch_audio_EnablePlaybackMirrorIndependentVolume_Bool_s = "enablePlaybackMirrorIndependentVolume"; ///
2252 enum const(char)* k_pch_audio_EnablePlaybackMirrorIndependentVolume_Bool = k_pch_audio_EnablePlaybackMirrorIndependentVolume_Bool_s.ptr; ///
2253 enum k_pch_audio_LastHmdPlaybackDeviceId_String_s = "lastHmdPlaybackDeviceId"; ///
2254 enum const(char)* k_pch_audio_LastHmdPlaybackDeviceId_String = k_pch_audio_LastHmdPlaybackDeviceId_String_s.ptr; ///
2255 enum k_pch_audio_VIVEHDMIGain_s = "viveHDMIGain"; ///
2256 enum const(char)* k_pch_audio_VIVEHDMIGain = k_pch_audio_VIVEHDMIGain_s.ptr; ///
2257 enum k_pch_Power_Section_s = "power"; ///
2258 enum const(char)* k_pch_Power_Section = k_pch_Power_Section_s.ptr; ///
2259 enum k_pch_Power_PowerOffOnExit_Bool_s = "powerOffOnExit"; ///
2260 enum const(char)* k_pch_Power_PowerOffOnExit_Bool = k_pch_Power_PowerOffOnExit_Bool_s.ptr; ///
2261 enum k_pch_Power_TurnOffScreensTimeout_Float_s = "turnOffScreensTimeout"; ///
2262 enum const(char)* k_pch_Power_TurnOffScreensTimeout_Float = k_pch_Power_TurnOffScreensTimeout_Float_s.ptr; ///
2263 enum k_pch_Power_TurnOffControllersTimeout_Float_s = "turnOffControllersTimeout"; ///
2264 enum const(char)* k_pch_Power_TurnOffControllersTimeout_Float = k_pch_Power_TurnOffControllersTimeout_Float_s.ptr; ///
2265 enum k_pch_Power_ReturnToWatchdogTimeout_Float_s = "returnToWatchdogTimeout"; ///
2266 enum const(char)* k_pch_Power_ReturnToWatchdogTimeout_Float = k_pch_Power_ReturnToWatchdogTimeout_Float_s.ptr; ///
2267 enum k_pch_Power_AutoLaunchSteamVROnButtonPress_s = "autoLaunchSteamVROnButtonPress"; ///
2268 enum const(char)* k_pch_Power_AutoLaunchSteamVROnButtonPress = k_pch_Power_AutoLaunchSteamVROnButtonPress_s.ptr; ///
2269 enum k_pch_Power_PauseCompositorOnStandby_Bool_s = "pauseCompositorOnStandby"; ///
2270 enum const(char)* k_pch_Power_PauseCompositorOnStandby_Bool = k_pch_Power_PauseCompositorOnStandby_Bool_s.ptr; ///
2271 enum k_pch_Dashboard_Section_s = "dashboard"; ///
2272 enum const(char)* k_pch_Dashboard_Section = k_pch_Dashboard_Section_s.ptr; ///
2273 enum k_pch_Dashboard_EnableDashboard_Bool_s = "enableDashboard"; ///
2274 enum const(char)* k_pch_Dashboard_EnableDashboard_Bool = k_pch_Dashboard_EnableDashboard_Bool_s.ptr; ///
2275 enum k_pch_Dashboard_ArcadeMode_Bool_s = "arcadeMode"; ///
2276 enum const(char)* k_pch_Dashboard_ArcadeMode_Bool = k_pch_Dashboard_ArcadeMode_Bool_s.ptr; ///
2277 enum k_pch_Dashboard_Position_s = "position"; ///
2278 enum const(char)* k_pch_Dashboard_Position = k_pch_Dashboard_Position_s.ptr; ///
2279 enum k_pch_Dashboard_DesktopScale_s = "desktopScale"; ///
2280 enum const(char)* k_pch_Dashboard_DesktopScale = k_pch_Dashboard_DesktopScale_s.ptr; ///
2281 enum k_pch_Dashboard_DashboardScale_s = "dashboardScale"; ///
2282 enum const(char)* k_pch_Dashboard_DashboardScale = k_pch_Dashboard_DashboardScale_s.ptr; ///
2283 enum k_pch_modelskin_Section_s = "modelskins"; ///
2284 enum const(char)* k_pch_modelskin_Section = k_pch_modelskin_Section_s.ptr; ///
2285 enum k_pch_Driver_Enable_Bool_s = "enable"; ///
2286 enum const(char)* k_pch_Driver_Enable_Bool = k_pch_Driver_Enable_Bool_s.ptr; ///
2287 enum k_pch_Driver_BlockedBySafemode_Bool_s = "blocked_by_safe_mode"; ///
2288 enum const(char)* k_pch_Driver_BlockedBySafemode_Bool = k_pch_Driver_BlockedBySafemode_Bool_s.ptr; ///
2289 enum k_pch_Driver_LoadPriority_Int32_s = "loadPriority"; ///
2290 enum const(char)* k_pch_Driver_LoadPriority_Int32 = k_pch_Driver_LoadPriority_Int32_s.ptr; ///
2291 enum k_pch_WebInterface_Section_s = "WebInterface"; ///
2292 enum const(char)* k_pch_WebInterface_Section = k_pch_WebInterface_Section_s.ptr; ///
2293 enum k_pch_VRWebHelper_Section_s = "VRWebHelper"; ///
2294 enum const(char)* k_pch_VRWebHelper_Section = k_pch_VRWebHelper_Section_s.ptr; ///
2295 enum k_pch_VRWebHelper_DebuggerEnabled_Bool_s = "DebuggerEnabled"; ///
2296 enum const(char)* k_pch_VRWebHelper_DebuggerEnabled_Bool = k_pch_VRWebHelper_DebuggerEnabled_Bool_s.ptr; ///
2297 enum k_pch_VRWebHelper_DebuggerPort_Int32_s = "DebuggerPort"; ///
2298 enum const(char)* k_pch_VRWebHelper_DebuggerPort_Int32 = k_pch_VRWebHelper_DebuggerPort_Int32_s.ptr; ///
2299 enum k_pch_TrackingOverride_Section_s = "TrackingOverrides"; ///
2300 enum const(char)* k_pch_TrackingOverride_Section = k_pch_TrackingOverride_Section_s.ptr; ///
2301 enum k_pch_App_BindingAutosaveURLSuffix_String_s = "AutosaveURL"; ///
2302 enum const(char)* k_pch_App_BindingAutosaveURLSuffix_String = k_pch_App_BindingAutosaveURLSuffix_String_s.ptr; ///
2303 enum k_pch_App_BindingLegacyAPISuffix_String_s = "_legacy"; ///
2304 enum const(char)* k_pch_App_BindingLegacyAPISuffix_String = k_pch_App_BindingLegacyAPISuffix_String_s.ptr; ///
2305 enum k_pch_App_BindingSteamVRInputAPISuffix_String_s = "_steamvrinput"; ///
2306 enum const(char)* k_pch_App_BindingSteamVRInputAPISuffix_String = k_pch_App_BindingSteamVRInputAPISuffix_String_s.ptr; ///
2307 enum k_pch_App_BindingCurrentURLSuffix_String_s = "CurrentURL"; ///
2308 enum const(char)* k_pch_App_BindingCurrentURLSuffix_String = k_pch_App_BindingCurrentURLSuffix_String_s.ptr; ///
2309 enum k_pch_App_BindingPreviousURLSuffix_String_s = "PreviousURL"; ///
2310 enum const(char)* k_pch_App_BindingPreviousURLSuffix_String = k_pch_App_BindingPreviousURLSuffix_String_s.ptr; ///
2311 enum k_pch_App_NeedToUpdateAutosaveSuffix_Bool_s = "NeedToUpdateAutosave"; ///
2312 enum const(char)* k_pch_App_NeedToUpdateAutosaveSuffix_Bool = k_pch_App_NeedToUpdateAutosaveSuffix_Bool_s.ptr; ///
2313 enum k_pch_App_DominantHand_Int32_s = "DominantHand"; ///
2314 enum const(char)* k_pch_App_DominantHand_Int32 = k_pch_App_DominantHand_Int32_s.ptr; ///
2315 enum k_pch_Trackers_Section_s = "trackers"; ///
2316 enum const(char)* k_pch_Trackers_Section = k_pch_Trackers_Section_s.ptr; ///
2317 enum k_pch_DesktopUI_Section_s = "DesktopUI"; ///
2318 enum const(char)* k_pch_DesktopUI_Section = k_pch_DesktopUI_Section_s.ptr; ///
2319 enum k_pch_LastKnown_Section_s = "LastKnown"; ///
2320 enum const(char)* k_pch_LastKnown_Section = k_pch_LastKnown_Section_s.ptr; ///
2321 enum k_pch_LastKnown_HMDManufacturer_String_s = "HMDManufacturer"; ///
2322 enum const(char)* k_pch_LastKnown_HMDManufacturer_String = k_pch_LastKnown_HMDManufacturer_String_s.ptr; ///
2323 enum k_pch_LastKnown_HMDModel_String_s = "HMDModel"; ///
2324 enum const(char)* k_pch_LastKnown_HMDModel_String = k_pch_LastKnown_HMDModel_String_s.ptr; ///
2325 enum k_pch_DismissedWarnings_Section_s = "DismissedWarnings"; ///
2326 enum const(char)* k_pch_DismissedWarnings_Section = k_pch_DismissedWarnings_Section_s.ptr; ///
2327 enum k_pch_Input_Section_s = "input"; ///
2328 enum const(char)* k_pch_Input_Section = k_pch_Input_Section_s.ptr; ///
2329 enum k_pch_Input_LeftThumbstickRotation_Float_s = "leftThumbstickRotation"; ///
2330 enum const(char)* k_pch_Input_LeftThumbstickRotation_Float = k_pch_Input_LeftThumbstickRotation_Float_s.ptr; ///
2331 enum k_pch_Input_RightThumbstickRotation_Float_s = "rightThumbstickRotation"; ///
2332 enum const(char)* k_pch_Input_RightThumbstickRotation_Float = k_pch_Input_RightThumbstickRotation_Float_s.ptr; ///
2333 enum k_pch_Input_ThumbstickDeadzone_Float_s = "thumbstickDeadzone"; ///
2334 enum const(char)* k_pch_Input_ThumbstickDeadzone_Float = k_pch_Input_ThumbstickDeadzone_Float_s.ptr; ///
2335 enum k_pch_GpuSpeed_Section_s = "GpuSpeed"; ///
2336 enum const(char)* k_pch_GpuSpeed_Section = k_pch_GpuSpeed_Section_s.ptr; ///
2337 enum IVRScreenshots_Version_s = "IVRScreenshots_001"; ///
2338 enum const(char)* IVRScreenshots_Version = IVRScreenshots_Version_s.ptr; ///
2339 enum IVRResources_Version_s = "IVRResources_001"; ///
2340 enum const(char)* IVRResources_Version = IVRResources_Version_s.ptr; ///
2341 enum IVRDriverManager_Version_s = "IVRDriverManager_001"; ///
2342 enum const(char)* IVRDriverManager_Version = IVRDriverManager_Version_s.ptr; ///
2343 enum uint k_unMaxActionNameLength = 64; /// Maximum number of characters in an action name, including the trailing null
2344 enum uint k_unMaxActionSetNameLength = 64; /// Maximum number of characters in an action set name, including the trailing null
2345 enum uint k_unMaxActionOriginCount = 16; /// Maximum number of origins for an action
2346 enum uint k_unMaxBoneNameLength = 32; /// Maximum number of characters in a bone name, including the trailing null
2347 /// * Experimental global action set priority *
2348 ///  These constants are part of the experimental support in SteamVR for overlay apps selectively overriding input in the base scene application. This may be useful for overlay applications that need to use part or all of a controller without taking away all input to the game. This system must be enabled by the  "Experimental overlay input overrides" setting in the developer section of  SteamVR settings.
2349 /// 
2350 /// To use this system, set the nPriority field of an action set to any number in this range. 
2351 enum int k_nActionSetOverlayGlobalPriorityMin = 16777216;
2352 enum int k_nActionSetOverlayGlobalPriorityMax = 33554431; ///
2353 enum int k_nActionSetPriorityReservedMin = 33554432; ///
2354 enum IVRInput_Version_s = "IVRInput_010"; ///
2355 enum const(char)* IVRInput_Version = IVRInput_Version_s.ptr; ///
2356 enum ulong k_ulInvalidIOBufferHandle = 0; ///
2357 enum IVRIOBuffer_Version_s = "IVRIOBuffer_002"; ///
2358 enum const(char)* IVRIOBuffer_Version = IVRIOBuffer_Version_s.ptr; ///
2359 enum SpatialAnchorHandle_t k_ulInvalidSpatialAnchorHandle = 0; ///
2360 enum IVRSpatialAnchors_Version_s = "IVRSpatialAnchors_001"; ///
2361 enum const(char)* IVRSpatialAnchors_Version = IVRSpatialAnchors_Version_s.ptr; ///
2362 enum IVRDebug_Version_s = "IVRDebug_001"; ///
2363 enum const(char)* IVRDebug_Version = IVRDebug_Version_s.ptr; ///
2364 
2365 /// right-handed system
2366 /// +y is up
2367 /// +x is to the right
2368 /// -z is forward
2369 /// Distance unit is  meters
2370 struct HmdMatrix34_t
2371 {
2372 	/// right-handed system
2373 	/// +y is up
2374 	/// +x is to the right
2375 	/// -z is forward
2376 	/// Distance unit is  meters
2377 	float[4][3] m = [0, 0, 0];
2378 }
2379 
2380 ///
2381 struct HmdMatrix33_t
2382 {
2383 	float[3][3] m = [0, 0, 0]; ///
2384 }
2385 
2386 ///
2387 struct HmdMatrix44_t
2388 {
2389 	float[4][4] m = [0, 0, 0, 0]; ///
2390 }
2391 
2392 ///
2393 struct HmdVector3_t
2394 {
2395 	float[3] v = 0; ///
2396 }
2397 
2398 ///
2399 struct HmdVector4_t
2400 {
2401 	float[4] v = 0; ///
2402 }
2403 
2404 ///
2405 struct HmdVector3d_t
2406 {
2407 	double[3] v = 0; ///
2408 }
2409 
2410 ///
2411 struct HmdVector2_t
2412 {
2413 	float[2] v = 0; ///
2414 }
2415 
2416 ///
2417 struct HmdQuaternion_t
2418 {
2419 	double w = 0; ///
2420 	double x = 0; ///
2421 	double y = 0; ///
2422 	double z = 0; ///
2423 }
2424 
2425 ///
2426 struct HmdQuaternionf_t
2427 {
2428 	float w = 0; ///
2429 	float x = 0; ///
2430 	float y = 0; ///
2431 	float z = 0; ///
2432 }
2433 
2434 ///
2435 struct HmdColor_t
2436 {
2437 	float r = 0; ///
2438 	float g = 0; ///
2439 	float b = 0; ///
2440 	float a = 0; ///
2441 }
2442 
2443 ///
2444 struct HmdQuad_t
2445 {
2446 	HmdVector3_t[4] vCorners; ///
2447 }
2448 
2449 ///
2450 struct HmdRect2_t
2451 {
2452 	HmdVector2_t vTopLeft; ///
2453 	HmdVector2_t vBottomRight; ///
2454 }
2455 
2456 /// Used to return the post-distortion UVs for each color channel.
2457 /// UVs range from 0 to 1 with 0,0 in the upper left corner of the source render target. The 0,0 to 1,1 range covers a single eye.
2458 struct DistortionCoordinates_t
2459 {
2460 	/// Used to return the post-distortion UVs for each color channel.
2461 	/// UVs range from 0 to 1 with 0,0 in the upper left corner of the source render target. The 0,0 to 1,1 range covers a single eye.
2462 	float[2] rfRed = 0;
2463 	/// Used to return the post-distortion UVs for each color channel.
2464 	/// UVs range from 0 to 1 with 0,0 in the upper left corner of the source render target. The 0,0 to 1,1 range covers a single eye.
2465 	float[2] rfGreen = 0;
2466 	/// Used to return the post-distortion UVs for each color channel.
2467 	/// UVs range from 0 to 1 with 0,0 in the upper left corner of the source render target. The 0,0 to 1,1 range covers a single eye.
2468 	float[2] rfBlue = 0;
2469 }
2470 
2471 ///
2472 struct Texture_t
2473 {
2474 	void* handle; ///
2475 	ETextureType eType; ///
2476 	EColorSpace eColorSpace; ///
2477 }
2478 
2479 /// describes a single pose for a tracked object
2480 struct TrackedDevicePose_t
2481 {
2482 	HmdMatrix34_t mDeviceToAbsoluteTracking; /// describes a single pose for a tracked object
2483 	HmdVector3_t vVelocity; /// describes a single pose for a tracked object
2484 	HmdVector3_t vAngularVelocity; /// describes a single pose for a tracked object
2485 	ETrackingResult eTrackingResult; /// describes a single pose for a tracked object
2486 	bool bPoseIsValid; /// describes a single pose for a tracked object
2487 	bool bDeviceIsConnected; /// describes a single pose for a tracked object
2488 }
2489 
2490 /// Allows the application to control what part of the provided texture will be used in the frame buffer.
2491 struct VRTextureBounds_t
2492 {
2493 	float uMin = 0; /// Allows the application to control what part of the provided texture will be used in the frame buffer.
2494 	float vMin = 0; /// Allows the application to control what part of the provided texture will be used in the frame buffer.
2495 	float uMax = 0; /// Allows the application to control what part of the provided texture will be used in the frame buffer.
2496 	float vMax = 0; /// Allows the application to control what part of the provided texture will be used in the frame buffer.
2497 }
2498 
2499 /// Allows specifying pose used to render provided scene texture (if different from value returned by WaitGetPoses).
2500 struct VRTextureWithPose_t
2501 {
2502 	HmdMatrix34_t mDeviceToAbsoluteTracking; /// Allows specifying pose used to render provided scene texture (if different from value returned by WaitGetPoses).
2503 }
2504 
2505 ///
2506 struct VRTextureDepthInfo_t
2507 {
2508 	void* handle; ///
2509 	HmdMatrix44_t mProjection; ///
2510 	HmdVector2_t vRange; ///
2511 }
2512 
2513 ///
2514 struct VRTextureWithDepth_t
2515 {
2516 	VRTextureDepthInfo_t depth; ///
2517 }
2518 
2519 ///
2520 struct VRTextureWithPoseAndDepth_t
2521 {
2522 	VRTextureDepthInfo_t depth; ///
2523 }
2524 
2525 /// Data required for passing Vulkan textures to IVRCompositor::Submit.
2526 /// Be sure to call OpenVR_Shutdown before destroying these resources.
2527 /// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2528 struct VRVulkanTextureData_t
2529 {
2530 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2531 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2532 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2533 	ulong m_nImage;
2534 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2535 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2536 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2537 	VkDevice_T m_pDevice;
2538 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2539 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2540 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2541 	VkPhysicalDevice_T m_pPhysicalDevice;
2542 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2543 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2544 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2545 	VkInstance_T m_pInstance;
2546 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2547 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2548 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2549 	VkQueue_T m_pQueue;
2550 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2551 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2552 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2553 	uint m_nQueueFamilyIndex;
2554 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2555 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2556 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2557 	uint m_nWidth;
2558 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2559 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2560 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2561 	uint m_nHeight;
2562 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2563 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2564 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2565 	uint m_nFormat;
2566 	/// Data required for passing Vulkan textures to IVRCompositor::Submit.
2567 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2568 	/// Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation
2569 	uint m_nSampleCount;
2570 }
2571 
2572 /// Data required for passing D3D12 textures to IVRCompositor::Submit.
2573 /// Be sure to call OpenVR_Shutdown before destroying these resources.
2574 struct D3D12TextureData_t
2575 {
2576 	/// Data required for passing D3D12 textures to IVRCompositor::Submit.
2577 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2578 	ID3D12Resource m_pResource;
2579 	/// Data required for passing D3D12 textures to IVRCompositor::Submit.
2580 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2581 	ID3D12CommandQueue m_pCommandQueue;
2582 	/// Data required for passing D3D12 textures to IVRCompositor::Submit.
2583 	/// Be sure to call OpenVR_Shutdown before destroying these resources.
2584 	uint m_nNodeMask;
2585 }
2586 
2587 /// used for controller button events
2588 struct VREvent_Controller_t
2589 {
2590 	uint button; /// used for controller button events
2591 }
2592 
2593 /// used for simulated mouse events in overlay space
2594 struct VREvent_Mouse_t
2595 {
2596 	float x = 0; /// used for simulated mouse events in overlay space
2597 	float y = 0; /// used for simulated mouse events in overlay space
2598 	uint button; /// used for simulated mouse events in overlay space
2599 }
2600 
2601 /// used for simulated mouse wheel scroll
2602 struct VREvent_Scroll_t
2603 {
2604 	float xdelta = 0; /// used for simulated mouse wheel scroll
2605 	float ydelta = 0; /// used for simulated mouse wheel scroll
2606 	uint unused; /// used for simulated mouse wheel scroll
2607 	float viewportscale = 0; /// used for simulated mouse wheel scroll
2608 }
2609 
2610 /// when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents flag set.
2611 struct VREvent_TouchPadMove_t
2612 {
2613 	bool bFingerDown; /// when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents flag set.
2614 	float flSecondsFingerDown = 0; /// when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents flag set.
2615 	float fValueXFirst = 0; /// when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents flag set.
2616 	float fValueYFirst = 0; /// when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents flag set.
2617 	float fValueXRaw = 0; /// when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents flag set.
2618 	float fValueYRaw = 0; /// when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents flag set.
2619 }
2620 
2621 /// notification related events. Details will still change at this point
2622 struct VREvent_Notification_t
2623 {
2624 	ulong ulUserValue; /// notification related events. Details will still change at this point
2625 	uint notificationId; /// notification related events. Details will still change at this point
2626 }
2627 
2628 /// Used for events about processes
2629 struct VREvent_Process_t
2630 {
2631 	uint pid; /// Used for events about processes
2632 	uint oldPid; /// Used for events about processes
2633 	bool bForced; /// Used for events about processes
2634 	bool bConnectionLost; /// Used for events about processes
2635 }
2636 
2637 /// Used for a few events about overlays
2638 struct VREvent_Overlay_t
2639 {
2640 	ulong overlayHandle; /// Used for a few events about overlays
2641 	ulong devicePath; /// Used for a few events about overlays
2642 }
2643 
2644 /// Used for a few events about overlays
2645 struct VREvent_Status_t
2646 {
2647 	uint statusState; /// Used for a few events about overlays
2648 }
2649 
2650 /// Used for keyboard events
2651 struct VREvent_Keyboard_t
2652 {
2653 	char[8] cNewInput = 0; /// Used for keyboard events
2654 	ulong uUserValue; /// Used for keyboard events
2655 }
2656 
2657 ///
2658 struct VREvent_Ipd_t
2659 {
2660 	float ipdMeters = 0; ///
2661 }
2662 
2663 ///
2664 struct VREvent_Chaperone_t
2665 {
2666 	ulong m_nPreviousUniverse; ///
2667 	ulong m_nCurrentUniverse; ///
2668 }
2669 
2670 /// Not actually used for any events
2671 struct VREvent_Reserved_t
2672 {
2673 	ulong reserved0; /// Not actually used for any events
2674 	ulong reserved1; /// Not actually used for any events
2675 	ulong reserved2; /// Not actually used for any events
2676 	ulong reserved3; /// Not actually used for any events
2677 	ulong reserved4; /// Not actually used for any events
2678 	ulong reserved5; /// Not actually used for any events
2679 }
2680 
2681 ///
2682 struct VREvent_PerformanceTest_t
2683 {
2684 	uint m_nFidelityLevel; ///
2685 }
2686 
2687 ///
2688 struct VREvent_SeatedZeroPoseReset_t
2689 {
2690 	bool bResetBySystemMenu; ///
2691 }
2692 
2693 ///
2694 struct VREvent_Screenshot_t
2695 {
2696 	uint handle; ///
2697 	uint type; ///
2698 }
2699 
2700 ///
2701 struct VREvent_ScreenshotProgress_t
2702 {
2703 	float progress = 0; ///
2704 }
2705 
2706 ///
2707 struct VREvent_ApplicationLaunch_t
2708 {
2709 	uint pid; ///
2710 	uint unArgsHandle; ///
2711 }
2712 
2713 ///
2714 struct VREvent_EditingCameraSurface_t
2715 {
2716 	ulong overlayHandle; ///
2717 	uint nVisualMode; ///
2718 }
2719 
2720 ///
2721 struct VREvent_MessageOverlay_t
2722 {
2723 	uint unVRMessageOverlayResponse; ///
2724 }
2725 
2726 ///
2727 struct VREvent_Property_t
2728 {
2729 	PropertyContainerHandle_t container; ///
2730 	ETrackedDeviceProperty prop; ///
2731 }
2732 
2733 ///
2734 struct VREvent_HapticVibration_t
2735 {
2736 	ulong containerHandle; ///
2737 	ulong componentHandle; ///
2738 	float fDurationSeconds = 0; ///
2739 	float fFrequency = 0; ///
2740 	float fAmplitude = 0; ///
2741 }
2742 
2743 ///
2744 struct VREvent_WebConsole_t
2745 {
2746 	WebConsoleHandle_t webConsoleHandle; ///
2747 }
2748 
2749 ///
2750 struct VREvent_InputBindingLoad_t
2751 {
2752 	PropertyContainerHandle_t ulAppContainer; ///
2753 	ulong pathMessage; ///
2754 	ulong pathUrl; ///
2755 	ulong pathControllerType; ///
2756 }
2757 
2758 ///
2759 struct VREvent_InputActionManifestLoad_t
2760 {
2761 	ulong pathAppKey; ///
2762 	ulong pathMessage; ///
2763 	ulong pathMessageParam; ///
2764 	ulong pathManifestPath; ///
2765 }
2766 
2767 ///
2768 struct VREvent_SpatialAnchor_t
2769 {
2770 	SpatialAnchorHandle_t unHandle; ///
2771 }
2772 
2773 ///
2774 struct VREvent_ProgressUpdate_t
2775 {
2776 	ulong ulApplicationPropertyContainer; ///
2777 	ulong pathDevice; ///
2778 	ulong pathInputSource; ///
2779 	ulong pathProgressAction; ///
2780 	ulong pathIcon; ///
2781 	float fProgress = 0; ///
2782 }
2783 
2784 ///
2785 struct VREvent_ShowUI_t
2786 {
2787 	EShowUIType eType; ///
2788 }
2789 
2790 ///
2791 struct VREvent_ShowDevTools_t
2792 {
2793 	int nBrowserIdentifier; ///
2794 }
2795 
2796 ///
2797 struct VREvent_HDCPError_t
2798 {
2799 	EHDCPError eCode; ///
2800 }
2801 
2802 ///
2803 union VREvent_Data_t
2804 {
2805 	VREvent_Reserved_t reserved; ///
2806 	VREvent_Controller_t controller; ///
2807 	VREvent_Mouse_t mouse; ///
2808 	VREvent_Scroll_t scroll; ///
2809 	VREvent_Process_t process; ///
2810 	VREvent_Notification_t notification; ///
2811 	VREvent_Overlay_t overlay; ///
2812 	VREvent_Status_t status; ///
2813 	VREvent_Keyboard_t keyboard; ///
2814 	VREvent_Ipd_t ipd; ///
2815 	VREvent_Chaperone_t chaperone; ///
2816 	VREvent_PerformanceTest_t performanceTest; ///
2817 	VREvent_TouchPadMove_t touchPadMove; ///
2818 	VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset; ///
2819 	VREvent_Screenshot_t screenshot; ///
2820 	VREvent_ScreenshotProgress_t screenshotProgress; ///
2821 	VREvent_ApplicationLaunch_t applicationLaunch; ///
2822 	VREvent_EditingCameraSurface_t cameraSurface; ///
2823 	VREvent_MessageOverlay_t messageOverlay; ///
2824 	VREvent_Property_t property; ///
2825 	VREvent_HapticVibration_t hapticVibration; ///
2826 	VREvent_WebConsole_t webConsole; ///
2827 	VREvent_InputBindingLoad_t inputBinding; ///
2828 	VREvent_InputActionManifestLoad_t actionManifest; ///
2829 	VREvent_SpatialAnchor_t spatialAnchor; ///
2830 	VREvent_ProgressUpdate_t progressUpdate; ///
2831 	VREvent_ShowUI_t showUi; ///
2832 	VREvent_ShowDevTools_t showDevTools; ///
2833 	VREvent_HDCPError_t hdcpError; ///
2834 }
2835 
2836 /// An event posted by the server to all running applications
2837 struct VREvent_t
2838 {
2839 	uint eventType; /// An event posted by the server to all running applications
2840 	TrackedDeviceIndex_t trackedDeviceIndex; /// An event posted by the server to all running applications
2841 	float eventAgeSeconds = 0; /// An event posted by the server to all running applications
2842 	VREvent_Data_t data; /// An event posted by the server to all running applications
2843 }
2844 
2845 /// Describes state information about a render-model component, including transforms and other dynamic properties
2846 struct RenderModel_ComponentState_t
2847 {
2848 	HmdMatrix34_t mTrackingToComponentRenderModel; /// Describes state information about a render-model component, including transforms and other dynamic properties
2849 	HmdMatrix34_t mTrackingToComponentLocal; /// Describes state information about a render-model component, including transforms and other dynamic properties
2850 	VRComponentProperties uProperties; /// Describes state information about a render-model component, including transforms and other dynamic properties
2851 }
2852 
2853 /// The mesh to draw into the stencil (or depth) buffer to perform early stencil (or depth) kills of pixels that will never appear on the HMD. This mesh draws on all the pixels that will be hidden after distortion.
2854 /// 
2855 /// If the HMD does not provide a visible area mesh pVertexData will be NULL and unTriangleCount will be 0.
2856 struct HiddenAreaMesh_t
2857 {
2858 	/// The mesh to draw into the stencil (or depth) buffer to perform early stencil (or depth) kills of pixels that will never appear on the HMD. This mesh draws on all the pixels that will be hidden after distortion.
2859 	/// 
2860 	/// If the HMD does not provide a visible area mesh pVertexData will be NULL and unTriangleCount will be 0.
2861 	const(HmdVector2_t)* pVertexData;
2862 	/// The mesh to draw into the stencil (or depth) buffer to perform early stencil (or depth) kills of pixels that will never appear on the HMD. This mesh draws on all the pixels that will be hidden after distortion.
2863 	/// 
2864 	/// If the HMD does not provide a visible area mesh pVertexData will be NULL and unTriangleCount will be 0.
2865 	uint unTriangleCount;
2866 }
2867 
2868 /// contains information about one axis on the controller
2869 struct VRControllerAxis_t
2870 {
2871 	float x = 0; /// contains information about one axis on the controller
2872 	float y = 0; /// contains information about one axis on the controller
2873 }
2874 
2875 /// Holds all the state of a controller at one moment in time.
2876 struct VRControllerState001_t
2877 {
2878 	uint unPacketNum; /// Holds all the state of a controller at one moment in time.
2879 	ulong ulButtonPressed; /// Holds all the state of a controller at one moment in time.
2880 	ulong ulButtonTouched; /// Holds all the state of a controller at one moment in time.
2881 	VRControllerAxis_t[5] rAxis; /// Holds all the state of a controller at one moment in time.
2882 }
2883 
2884 /// Holds the transform for a single bone
2885 struct VRBoneTransform_t
2886 {
2887 	HmdVector4_t position; /// Holds the transform for a single bone
2888 	HmdQuaternionf_t orientation; /// Holds the transform for a single bone
2889 }
2890 
2891 ///
2892 struct CameraVideoStreamFrameHeader_t
2893 {
2894 	EVRTrackedCameraFrameType eFrameType; ///
2895 	uint nWidth; ///
2896 	uint nHeight; ///
2897 	uint nBytesPerPixel; ///
2898 	uint nFrameSequence; ///
2899 	TrackedDevicePose_t trackedDevicePose; ///
2900 	ulong ulFrameExposureTime; ///
2901 }
2902 
2903 /// Provides a single frame's timing information to the app
2904 struct Compositor_FrameTiming
2905 {
2906 	uint m_nSize; /// Provides a single frame's timing information to the app
2907 	uint m_nFrameIndex; /// Provides a single frame's timing information to the app
2908 	uint m_nNumFramePresents; /// Provides a single frame's timing information to the app
2909 	uint m_nNumMisPresented; /// Provides a single frame's timing information to the app
2910 	uint m_nNumDroppedFrames; /// Provides a single frame's timing information to the app
2911 	uint m_nReprojectionFlags; /// Provides a single frame's timing information to the app
2912 	double m_flSystemTimeInSeconds = 0; /// Provides a single frame's timing information to the app
2913 	float m_flPreSubmitGpuMs = 0; /// Provides a single frame's timing information to the app
2914 	float m_flPostSubmitGpuMs = 0; /// Provides a single frame's timing information to the app
2915 	float m_flTotalRenderGpuMs = 0; /// Provides a single frame's timing information to the app
2916 	float m_flCompositorRenderGpuMs = 0; /// Provides a single frame's timing information to the app
2917 	float m_flCompositorRenderCpuMs = 0; /// Provides a single frame's timing information to the app
2918 	float m_flCompositorIdleCpuMs = 0; /// Provides a single frame's timing information to the app
2919 	float m_flClientFrameIntervalMs = 0; /// Provides a single frame's timing information to the app
2920 	float m_flPresentCallCpuMs = 0; /// Provides a single frame's timing information to the app
2921 	float m_flWaitForPresentCpuMs = 0; /// Provides a single frame's timing information to the app
2922 	float m_flSubmitFrameMs = 0; /// Provides a single frame's timing information to the app
2923 	float m_flWaitGetPosesCalledMs = 0; /// Provides a single frame's timing information to the app
2924 	float m_flNewPosesReadyMs = 0; /// Provides a single frame's timing information to the app
2925 	float m_flNewFrameReadyMs = 0; /// Provides a single frame's timing information to the app
2926 	float m_flCompositorUpdateStartMs = 0; /// Provides a single frame's timing information to the app
2927 	float m_flCompositorUpdateEndMs = 0; /// Provides a single frame's timing information to the app
2928 	float m_flCompositorRenderStartMs = 0; /// Provides a single frame's timing information to the app
2929 	TrackedDevicePose_t m_HmdPose; /// Provides a single frame's timing information to the app
2930 	uint m_nNumVSyncsReadyForUse; /// Provides a single frame's timing information to the app
2931 	uint m_nNumVSyncsToFirstView; /// Provides a single frame's timing information to the app
2932 }
2933 
2934 /// Provides compositor benchmark results to the app
2935 struct Compositor_BenchmarkResults
2936 {
2937 	float m_flMegaPixelsPerSecond = 0; /// Provides compositor benchmark results to the app
2938 	float m_flHmdRecommendedMegaPixelsPerSecond = 0; /// Provides compositor benchmark results to the app
2939 }
2940 
2941 /// Frame timing data provided by direct mode drivers.
2942 struct DriverDirectMode_FrameTiming
2943 {
2944 	uint m_nSize; /// Frame timing data provided by direct mode drivers.
2945 	uint m_nNumFramePresents; /// Frame timing data provided by direct mode drivers.
2946 	uint m_nNumMisPresented; /// Frame timing data provided by direct mode drivers.
2947 	uint m_nNumDroppedFrames; /// Frame timing data provided by direct mode drivers.
2948 	uint m_nReprojectionFlags; /// Frame timing data provided by direct mode drivers.
2949 }
2950 
2951 ///
2952 struct ImuSample_t
2953 {
2954 	double fSampleTime = 0; ///
2955 	HmdVector3d_t vAccel; ///
2956 	HmdVector3d_t vGyro; ///
2957 	uint unOffScaleFlags; ///
2958 }
2959 
2960 ///
2961 struct AppOverrideKeys_t
2962 {
2963 	const(char)* pchKey; ///
2964 	const(char)* pchValue; ///
2965 }
2966 
2967 /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2968 struct Compositor_CumulativeStats
2969 {
2970 	uint m_nPid; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2971 	uint m_nNumFramePresents; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2972 	uint m_nNumDroppedFrames; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2973 	uint m_nNumReprojectedFrames; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2974 	uint m_nNumFramePresentsOnStartup; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2975 	uint m_nNumDroppedFramesOnStartup; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2976 	uint m_nNumReprojectedFramesOnStartup; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2977 	uint m_nNumLoading; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2978 	uint m_nNumFramePresentsLoading; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2979 	uint m_nNumDroppedFramesLoading; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2980 	uint m_nNumReprojectedFramesLoading; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2981 	uint m_nNumTimedOut; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2982 	uint m_nNumFramePresentsTimedOut; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2983 	uint m_nNumDroppedFramesTimedOut; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2984 	uint m_nNumReprojectedFramesTimedOut; /// Cumulative stats for current application.  These are not cleared until a new app connects, but they do stop accumulating once the associated app disconnects.
2985 }
2986 
2987 ///
2988 struct Compositor_StageRenderSettings
2989 {
2990 	HmdColor_t m_PrimaryColor; ///
2991 	HmdColor_t m_SecondaryColor; ///
2992 	float m_flVignetteInnerRadius = 0; ///
2993 	float m_flVignetteOuterRadius = 0; ///
2994 	float m_flFresnelStrength = 0; ///
2995 	bool m_bBackfaceCulling; ///
2996 	bool m_bGreyscale; ///
2997 	bool m_bWireframe; ///
2998 }
2999 
3000 ///
3001 struct VROverlayIntersectionParams_t
3002 {
3003 	HmdVector3_t vSource; ///
3004 	HmdVector3_t vDirection; ///
3005 	ETrackingUniverseOrigin eOrigin; ///
3006 }
3007 
3008 ///
3009 struct VROverlayIntersectionResults_t
3010 {
3011 	HmdVector3_t vPoint; ///
3012 	HmdVector3_t vNormal; ///
3013 	HmdVector2_t vUVs; ///
3014 	float fDistance = 0; ///
3015 }
3016 
3017 ///
3018 struct IntersectionMaskRectangle_t
3019 {
3020 	float m_flTopLeftX = 0; ///
3021 	float m_flTopLeftY = 0; ///
3022 	float m_flWidth = 0; ///
3023 	float m_flHeight = 0; ///
3024 }
3025 
3026 ///
3027 struct IntersectionMaskCircle_t
3028 {
3029 	float m_flCenterX = 0; ///
3030 	float m_flCenterY = 0; ///
3031 	float m_flRadius = 0; ///
3032 }
3033 
3034 ///
3035 union VROverlayIntersectionMaskPrimitive_Data_t
3036 {
3037 	IntersectionMaskRectangle_t m_Rectangle; ///
3038 	IntersectionMaskCircle_t m_Circle; ///
3039 }
3040 
3041 ///
3042 struct VROverlayIntersectionMaskPrimitive_t
3043 {
3044 	EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType; ///
3045 	VROverlayIntersectionMaskPrimitive_Data_t m_Primitive; ///
3046 }
3047 
3048 ///
3049 struct VROverlayView_t
3050 {
3051 	VROverlayHandle_t overlayHandle; ///
3052 	Texture_t texture; ///
3053 	VRTextureBounds_t textureBounds; ///
3054 }
3055 
3056 ///
3057 struct VRVulkanDevice_t
3058 {
3059 	VkInstance_T m_pInstance; ///
3060 	VkDevice_T m_pDevice; ///
3061 	VkPhysicalDevice_T m_pPhysicalDevice; ///
3062 	VkQueue_T m_pQueue; ///
3063 	uint m_uQueueFamilyIndex; ///
3064 }
3065 
3066 ///
3067 struct VRNativeDevice_t
3068 {
3069 	void* handle; ///
3070 	EDeviceType eType; ///
3071 }
3072 
3073 /// single vertex in a render model
3074 struct RenderModel_Vertex_t
3075 {
3076 	HmdVector3_t vPosition; /// single vertex in a render model
3077 	HmdVector3_t vNormal; /// single vertex in a render model
3078 	float[2] rfTextureCoord = 0; /// single vertex in a render model
3079 }
3080 
3081 ///
3082 struct RenderModel_TextureMap_t
3083 {
3084 	ushort unWidth; ///
3085 	ushort unHeight; ///
3086 	const(ubyte)* rubTextureMapData; ///
3087 	EVRRenderModelTextureFormat format; ///
3088 }
3089 
3090 ///
3091 struct RenderModel_t
3092 {
3093 	const(RenderModel_Vertex_t)* rVertexData; ///
3094 	uint unVertexCount; ///
3095 	const(ushort)* rIndexData; ///
3096 	uint unTriangleCount; ///
3097 	TextureID_t diffuseTextureId; ///
3098 }
3099 
3100 ///
3101 struct RenderModel_ControllerMode_State_t
3102 {
3103 	bool bScrollWheelVisible; ///
3104 }
3105 
3106 /// Used for passing graphic data
3107 struct NotificationBitmap_t
3108 {
3109 	void* m_pImageData; /// Used for passing graphic data
3110 	int m_nWidth; /// Used for passing graphic data
3111 	int m_nHeight; /// Used for passing graphic data
3112 	int m_nBytesPerPixel; /// Used for passing graphic data
3113 }
3114 
3115 ///
3116 struct CVRSettingHelper
3117 {
3118 	IVRSettings m_pSettings; ///
3119 }
3120 
3121 ///
3122 struct InputAnalogActionData_t
3123 {
3124 	bool bActive; ///
3125 	VRInputValueHandle_t activeOrigin; ///
3126 	float x = 0; ///
3127 	float y = 0; ///
3128 	float z = 0; ///
3129 	float deltaX = 0; ///
3130 	float deltaY = 0; ///
3131 	float deltaZ = 0; ///
3132 	float fUpdateTime = 0; ///
3133 }
3134 
3135 ///
3136 struct InputDigitalActionData_t
3137 {
3138 	bool bActive; ///
3139 	VRInputValueHandle_t activeOrigin; ///
3140 	bool bState; ///
3141 	bool bChanged; ///
3142 	float fUpdateTime = 0; ///
3143 }
3144 
3145 ///
3146 struct InputPoseActionData_t
3147 {
3148 	bool bActive; ///
3149 	VRInputValueHandle_t activeOrigin; ///
3150 	TrackedDevicePose_t pose; ///
3151 }
3152 
3153 ///
3154 struct InputSkeletalActionData_t
3155 {
3156 	bool bActive; ///
3157 	VRInputValueHandle_t activeOrigin; ///
3158 }
3159 
3160 ///
3161 struct InputOriginInfo_t
3162 {
3163 	VRInputValueHandle_t devicePath; ///
3164 	TrackedDeviceIndex_t trackedDeviceIndex; ///
3165 	char[128] rchRenderModelComponentName = 0; ///
3166 }
3167 
3168 ///
3169 struct InputBindingInfo_t
3170 {
3171 	char[128] rchDevicePathName = 0; ///
3172 	char[128] rchInputPathName = 0; ///
3173 	char[128] rchModeName = 0; ///
3174 	char[128] rchSlotName = 0; ///
3175 	char[32] rchInputSourceType = 0; ///
3176 }
3177 
3178 ///
3179 struct VRActiveActionSet_t
3180 {
3181 	VRActionSetHandle_t ulActionSet; ///
3182 	VRInputValueHandle_t ulRestrictedToDevice; ///
3183 	VRActionSetHandle_t ulSecondaryActionSet; ///
3184 	uint unPadding; ///
3185 	int nPriority; ///
3186 }
3187 
3188 /// Contains summary information about the current skeletal pose
3189 struct VRSkeletalSummaryData_t
3190 {
3191 	float[5] flFingerCurl = 0; /// Contains summary information about the current skeletal pose
3192 	float[4] flFingerSplay = 0; /// Contains summary information about the current skeletal pose
3193 }
3194 
3195 ///
3196 struct SpatialAnchorPose_t
3197 {
3198 	HmdMatrix34_t mAnchorToAbsoluteTracking; ///
3199 }
3200 
3201 ///
3202 struct COpenVRContext
3203 {
3204 	IVRSystem m_pVRSystem; ///
3205 	IVRChaperone m_pVRChaperone; ///
3206 	IVRChaperoneSetup m_pVRChaperoneSetup; ///
3207 	IVRCompositor m_pVRCompositor; ///
3208 	IVRHeadsetView m_pVRHeadsetView; ///
3209 	IVROverlay m_pVROverlay; ///
3210 	IVROverlayView m_pVROverlayView; ///
3211 	IVRResources m_pVRResources; ///
3212 	IVRRenderModels m_pVRRenderModels; ///
3213 	IVRExtendedDisplay m_pVRExtendedDisplay; ///
3214 	IVRSettings m_pVRSettings; ///
3215 	IVRApplications m_pVRApplications; ///
3216 	IVRTrackedCamera m_pVRTrackedCamera; ///
3217 	IVRScreenshots m_pVRScreenshots; ///
3218 	IVRDriverManager m_pVRDriverManager; ///
3219 	IVRInput m_pVRInput; ///
3220 	IVRIOBuffer m_pVRIOBuffer; ///
3221 	IVRSpatialAnchors m_pVRSpatialAnchors; ///
3222 	IVRDebug m_pVRDebug; ///
3223 	IVRNotifications m_pVRNotifications; ///
3224 }
3225 
3226 ///
3227 abstract class IVRSystem
3228 {
3229 	void GetRecommendedRenderTargetSize(uint* pnWidth, uint* pnHeight); /// Suggested size for the intermediate render target that the distortion pulls from.
3230 	HmdMatrix44_t GetProjectionMatrix(EVREye eEye, float fNearZ, float fFarZ); /// The projection matrix for the specified eye
3231 	void GetProjectionRaw(EVREye eEye, float* pfLeft, float* pfRight, float* pfTop, float* pfBottom); /// The components necessary to build your own projection matrix in case your application is doing something fancy like infinite Z
3232 	bool ComputeDistortion(EVREye eEye, float fU, float fV, DistortionCoordinates_t* pDistortionCoordinates); /// Gets the result of the distortion function for the specified eye and input UVs. UVs go from 0,0 in the upper left of that eye's viewport and 1,1 in the lower right of that eye's viewport. Returns true for success. Otherwise, returns false, and distortion coordinates are not suitable.
3233 	HmdMatrix34_t GetEyeToHeadTransform(EVREye eEye); /// Returns the transform from eye space to the head space. Eye space is the per-eye flavor of head space that provides stereo disparity. Instead of Model * View * Projection the sequence is Model * View * Eye^-1 * Projection. Normally View and Eye^-1 will be multiplied together and treated as View in your application.
3234 	bool GetTimeSinceLastVsync(float* pfSecondsSinceLastVsync, ulong* pulFrameCounter); /// Returns the number of elapsed seconds since the last recorded vsync event. This will come from a vsync timer event in the timer if possible or from the application-reported time if that is not available. If no vsync times are available the function will return zero for vsync time and frame counter and return false from the method.
3235 	/// [D3D9 Only]
3236 	/// Returns the adapter index that the user should pass into CreateDevice to set up D3D9 in such a way that it can go full screen exclusive on the HMD. Returns -1 if there was an error.
3237 	int GetD3D9AdapterIndex();
3238 	/// [D3D10/11 Only]
3239 	/// Returns the adapter index that the user should pass into EnumAdapters to create the device and swap chain in DX10 and DX11. If an error occurs the index will be set to -1.
3240 	void GetDXGIOutputInfo(int* pnAdapterIndex);
3241 	/// Returns platform- and texture-type specific adapter identification so that applications and the compositor are creating textures and swap chains on the same GPU. If an error occurs the device will be set to 0.
3242 	/// pInstance is an optional parameter that is required only when textureType is TextureType_Vulkan.
3243 	/// [D3D10/11/12 Only (D3D9 Not Supported)]
3244 	///  Returns the adapter LUID that identifies the GPU attached to the HMD. The user should  enumerate all adapters using IDXGIFactory::EnumAdapters and IDXGIAdapter::GetDesc to find  the adapter with the matching LUID, or use IDXGIFactory4::EnumAdapterByLuid.
3245 	///  The discovered IDXGIAdapter should be used to create the device and swap chain.
3246 	/// [Vulkan Only]
3247 	///  Returns the VkPhysicalDevice that should be used by the application.
3248 	///  pInstance must be the instance the application will use to query for the VkPhysicalDevice.  The application must create the VkInstance with extensions returned by IVRCompositor::GetVulkanInstanceExtensionsRequired enabled.
3249 	/// [macOS Only]
3250 	///  For TextureType_IOSurface returns the id<MTLDevice> that should be used by the application.
3251 	///  On 10.13+ for TextureType_OpenGL returns the 'registryId' of the renderer which should be used   by the application. See Apple Technical Q&A QA1168 for information on enumerating GL Renderers, and the new kCGLRPRegistryIDLow and kCGLRPRegistryIDHigh CGLRendererProperty values in the 10.13 SDK.
3252 	///  Pre 10.13 for TextureType_OpenGL returns 0, as there is no dependable way to correlate the HMDs MTLDevice with a GL Renderer.
3253 	void GetOutputDevice(ulong* pnDevice, ETextureType textureType, VkInstance_T pInstance);
3254 	bool IsDisplayOnDesktop(); /// Use to determine if the headset display is part of the desktop (i.e. extended) or hidden (i.e. direct mode).
3255 	bool SetDisplayVisibility(bool bIsVisibleOnDesktop); /// Set the display visibility (true = extended, false = direct mode).  Return value of true indicates that the change was successful.
3256 	/// The pose that the tracker thinks that the HMD will be in at the specified number of seconds into the future. Pass 0 to get the state at the instant the method is called. Most of the time the application should calculate the time until the photons will be emitted from the display and pass that time into the method.
3257 	/// This is roughly analogous to the inverse of the view matrix in most applications, though many games will need to do some additional rotation or translation on top of the rotation and translation provided by the head pose.
3258 	/// For devices where bPoseIsValid is true the application can use the pose to position the device in question. The provided array can be any size up to k_unMaxTrackedDeviceCount. 
3259 	/// Seated experiences should call this method with TrackingUniverseSeated and receive poses relative to the seated zero pose. Standing experiences should call this method with TrackingUniverseStanding and receive poses relative to the Chaperone Play Area. TrackingUniverseRawAndUncalibrated should probably not be used unless the application is the Chaperone calibration tool itself, but will provide poses relative to the hardware-specific coordinate system in the driver.
3260 	void GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, TrackedDevicePose_t* pTrackedDevicePoseArray, uint unTrackedDevicePoseArrayCount);
3261 	/// Sets the zero pose for the seated tracker coordinate system to the current position and yaw of the HMD. After ResetSeatedZeroPose all GetDeviceToAbsoluteTrackingPose calls that pass TrackingUniverseSeated as the origin will be relative to this new zero pose. The new zero coordinate system will not change the fact that the Y axis is up in the real world, so the next pose returned from GetDeviceToAbsoluteTrackingPose after a call to ResetSeatedZeroPose may not be exactly an identity matrix.
3262 	/// NOTE: This function overrides the user's previously saved seated zero pose and should only be called as the result of a user action. Users are also able to set their seated zero pose via the OpenVR Dashboard.
3263 	void ResetSeatedZeroPose();
3264 	/// Returns the transform from the seated zero pose to the standing absolute tracking system. This allows applications to represent the seated origin to used or transform object positions from one coordinate system to the other.
3265 	/// The seated origin may or may not be inside the Play Area or Collision Bounds returned by IVRChaperone. Its position depends on what the user has set from the Dashboard settings and previous calls to ResetSeatedZeroPose.
3266 	HmdMatrix34_t GetSeatedZeroPoseToStandingAbsoluteTrackingPose();
3267 	HmdMatrix34_t GetRawZeroPoseToStandingAbsoluteTrackingPose(); /// Returns the transform from the tracking origin to the standing absolute tracking system. This allows applications to convert from raw tracking space to the calibrated standing coordinate system.
3268 	uint GetSortedTrackedDeviceIndicesOfClass(ETrackedDeviceClass eTrackedDeviceClass, TrackedDeviceIndex_t* punTrackedDeviceIndexArray, uint unTrackedDeviceIndexArrayCount, TrackedDeviceIndex_t unRelativeToTrackedDeviceIndex); /// Get a sorted array of device indices of a given class of tracked devices (e.g. controllers).  Devices are sorted right to left relative to the specified tracked device (default: hmd -- pass in -1 for absolute tracking space).  Returns the number of devices in the list, or the size of the array needed if not large enough.
3269 	EDeviceActivityLevel GetTrackedDeviceActivityLevel(TrackedDeviceIndex_t unDeviceId); /// Returns the level of activity on the device.
3270 	void ApplyTransform(TrackedDevicePose_t* pOutputPose, const(TrackedDevicePose_t)* pTrackedDevicePose, const(HmdMatrix34_t)* pTransform); /// Convenience utility to apply the specified transform to the specified pose. This properly transforms all pose components, including velocity and angular velocity
3271 	TrackedDeviceIndex_t GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole unDeviceType); /// Returns the device index associated with a specific role, for example the left hand or the right hand. This function is deprecated in favor of the new IVRInput system.
3272 	ETrackedControllerRole GetControllerRoleForTrackedDeviceIndex(TrackedDeviceIndex_t unDeviceIndex); /// Returns the controller type associated with a device index. This function is deprecated in favor of the new IVRInput system.
3273 	/// Returns the device class of a tracked device. If there has not been a device connected in this slot
3274 	/// since the application started this function will return TrackedDevice_Invalid. For previous detected
3275 	/// devices the function will return the previously observed device class.
3276 	/// To determine which devices exist on the system, just loop from 0 to k_unMaxTrackedDeviceCount and check
3277 	/// the device class. Every device with something other than TrackedDevice_Invalid is associated with an 
3278 	/// actual tracked device.
3279 	ETrackedDeviceClass GetTrackedDeviceClass(TrackedDeviceIndex_t unDeviceIndex);
3280 	bool IsTrackedDeviceConnected(TrackedDeviceIndex_t unDeviceIndex); /// Returns true if there is a device connected in this slot.
3281 	bool GetBoolTrackedDeviceProperty(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError* pError); /// Returns a bool property. If the device index is not valid or the property is not a bool type this function will return false.
3282 	float GetFloatTrackedDeviceProperty(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError* pError); /// Returns a float property. If the device index is not valid or the property is not a float type this function will return 0.
3283 	int GetInt32TrackedDeviceProperty(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError* pError); /// Returns an int property. If the device index is not valid or the property is not a int type this function will return 0.
3284 	ulong GetUint64TrackedDeviceProperty(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError* pError); /// Returns a uint64 property. If the device index is not valid or the property is not a uint64 type this function will return 0.
3285 	HmdMatrix34_t GetMatrix34TrackedDeviceProperty(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError* pError); /// Returns a matrix property. If the device index is not valid or the property is not a matrix type, this function will return identity.
3286 	uint GetArrayTrackedDeviceProperty(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, PropertyTypeTag_t propType, void* pBuffer, uint unBufferSize, ETrackedPropertyError* pError); /// Returns an array of one type of property. If the device index is not valid or the property is not a single value or an array of the specified type, this function will return 0. Otherwise it returns the number of bytes necessary to hold the array of properties. If unBufferSize is greater than the returned size and pBuffer is non-NULL, pBuffer is filled with the contents of array of properties.
3287 	uint GetStringTrackedDeviceProperty(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, char* pchValue, uint unBufferSize, ETrackedPropertyError* pError); /// Returns a string property. If the device index is not valid or the property is not a string type this function will return 0. Otherwise it returns the length of the number of bytes necessary to hold this string including the trailing null. Strings will always fit in buffers of k_unMaxPropertyStringSize characters.
3288 	const(char)* GetPropErrorNameFromEnum(ETrackedPropertyError error); /// returns a string that corresponds with the specified property error. The string will be the name of the error enum value for all valid error codes
3289 	bool PollNextEvent(VREvent_t* pEvent, uint uncbVREvent); /// Returns true and fills the event with the next event on the queue if there is one. If there are no events this method returns false. uncbVREvent should be the size in bytes of the VREvent_t struct
3290 	/// Returns true and fills the event with the next event on the queue if there is one. If there are no events this method returns false. Fills in the pose of the associated tracked device in the provided pose struct. This pose will always be older than the call to this function and should not be used to render the device.
3291 	/// uncbVREvent should be the size in bytes of the VREvent_t struct
3292 	bool PollNextEventWithPose(ETrackingUniverseOrigin eOrigin, VREvent_t* pEvent, uint uncbVREvent, TrackedDevicePose_t* pTrackedDevicePose);
3293 	const(char)* GetEventTypeNameFromEnum(EVREventType eType); /// returns the name of an EVREvent enum value
3294 	/// Returns the hidden area mesh for the current HMD. The pixels covered by this mesh will never be seen by the user after the lens distortion is applied based on visibility to the panels. If this HMD does not have a hidden area mesh, the vertex data and count will be NULL and 0 respectively. This mesh is meant to be rendered into the stencil buffer (or into the depth buffer setting nearz) before rendering each eye's view.  This will improve performance by letting the GPU early-reject pixels the user will never see before running the pixel shader. 
3295 	/// NOTE: Render this mesh with backface culling disabled since the winding order of the vertices can be different per-HMD or per-eye. Setting the bInverse argument to true will produce the visible area mesh that is commonly used in place of full-screen quads. The visible area mesh covers all of the pixels the hidden area mesh does not cover. Setting the bLineLoop argument will return a line loop of vertices in HiddenAreaMesh_t->pVertexData with HiddenAreaMesh_t->unTriangleCount set to the number of vertices.
3296 	HiddenAreaMesh_t GetHiddenAreaMesh(EVREye eEye, EHiddenAreaMeshType type);
3297 	bool GetControllerState(TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t* pControllerState, uint unControllerStateSize); /// Fills the supplied struct with the current state of the controller. Returns false if the controller index is invalid. This function is deprecated in favor of the new IVRInput system.
3298 	bool GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin, TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t* pControllerState, uint unControllerStateSize, TrackedDevicePose_t* pTrackedDevicePose); /// fills the supplied struct with the current state of the controller and the provided pose with the pose of  the controller when the controller state was updated most recently. Use this form if you need a precise controller pose as input to your application when the user presses or releases a button. This function is deprecated in favor of the new IVRInput system.
3299 	void TriggerHapticPulse(TrackedDeviceIndex_t unControllerDeviceIndex, uint unAxisId, ushort usDurationMicroSec); /// Trigger a single haptic pulse on a controller. After this call the application may not trigger another haptic pulse on this controller and axis combination for 5ms. This function is deprecated in favor of the new IVRInput system.
3300 	const(char)* GetButtonIdNameFromEnum(EVRButtonId eButtonId); /// returns the name of an EVRButtonId enum value. This function is deprecated in favor of the new IVRInput system.  
3301 	const(char)* GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType); /// returns the name of an EVRControllerAxisType enum value. This function is deprecated in favor of the new IVRInput system. 
3302 	bool IsInputAvailable(); /// Returns true if this application is receiving input from the system. This would return false if system-related functionality is consuming the input stream. 
3303 	bool IsSteamVRDrawingControllers(); /// Returns true SteamVR is drawing controllers on top of the application. Applications should consider not drawing anything attached to the user's hands in this case. 
3304 	bool ShouldApplicationPause(); /// Returns true if the user has put SteamVR into a mode that is distracting them from the application. For applications where this is appropriate, the application should pause ongoing activity. 
3305 	bool ShouldApplicationReduceRenderingWork(); /// Returns true if SteamVR is doing significant rendering work and the game should do what it can to reduce its own workload. One common way to do this is to reduce the size of the render target provided for each eye. 
3306 	EVRFirmwareError PerformFirmwareUpdate(TrackedDeviceIndex_t unDeviceIndex); /// Performs the actual firmware update if applicable.  The following events will be sent, if VRFirmwareError_None was returned: VREvent_FirmwareUpdateStarted, VREvent_FirmwareUpdateFinished  Use the properties Prop_Firmware_UpdateAvailable_Bool, Prop_Firmware_ManualUpdate_Bool, and Prop_Firmware_ManualUpdateURL_String to figure our whether a firmware update is available, and to figure out whether its a manual update  Prop_Firmware_ManualUpdateURL_String should point to an URL describing the manual update process 
3307 	void AcknowledgeQuit_Exiting(); /// Call this to acknowledge to the system that VREvent_Quit has been received and that the process is exiting. This extends the timeout until the process is killed. 
3308 	uint GetAppContainerFilePaths(char* pchBuffer, uint unBufferSize); /// Retrieves a null-terminated, semicolon-delimited list of UTF8 file paths that an application  must have read access to when running inside of an app container. Returns the number of bytes needed to hold the list. 
3309 	/// Returns the current version of the SteamVR runtime. The returned string will remain valid until VR_Shutdown is called.
3310 	/// NOTE: Is it not appropriate to use this version to test for the presence of any SteamVR feature. Only use this version number for logging or showing to a user, and not to try to detect anything at runtime. When appropriate, feature-specific presence information is provided by other APIs. 
3311 	const(char)* GetRuntimeVersion();
3312 }
3313 
3314 ///
3315 abstract class IVRExtendedDisplay
3316 {
3317 	void GetWindowBounds(int* pnX, int* pnY, uint* pnWidth, uint* pnHeight); /// Size and position that the window needs to be on the VR display.
3318 	void GetEyeOutputViewport(EVREye eEye, uint* pnX, uint* pnY, uint* pnWidth, uint* pnHeight); /// Gets the viewport in the frame buffer to draw the output of the distortion into
3319 	/// [D3D10/11 Only]
3320 	/// Returns the adapter index and output index that the user should pass into EnumAdapters and EnumOutputs to create the device and swap chain in DX10 and DX11. If an error occurs both indices will be set to -1.
3321 	void GetDXGIOutputInfo(int* pnAdapterIndex, int* pnAdapterOutputIndex);
3322 }
3323 
3324 ///
3325 abstract class IVRTrackedCamera
3326 {
3327 	const(char)* GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError); /// Returns a string for an error
3328 	EVRTrackedCameraError HasCamera(TrackedDeviceIndex_t nDeviceIndex, bool* pHasCamera); /// For convenience, same as tracked property request Prop_HasCamera_Bool
3329 	EVRTrackedCameraError GetCameraFrameSize(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, uint* pnWidth, uint* pnHeight, uint* pnFrameBufferSize); /// Gets size of the image frame.
3330 	EVRTrackedCameraError GetCameraIntrinsics(TrackedDeviceIndex_t nDeviceIndex, uint nCameraIndex, EVRTrackedCameraFrameType eFrameType, HmdVector2_t* pFocalLength, HmdVector2_t* pCenter); ///
3331 	EVRTrackedCameraError GetCameraProjection(TrackedDeviceIndex_t nDeviceIndex, uint nCameraIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, HmdMatrix44_t* pProjection); ///
3332 	/// Acquiring streaming service permits video streaming for the caller. Releasing hints the system that video services do not need to be maintained for this client.
3333 	/// If the camera has not already been activated, a one time spin up may incur some auto exposure as well as initial streaming frame delays.
3334 	/// The camera should be considered a global resource accessible for shared consumption but not exclusive to any caller.
3335 	/// The camera may go inactive due to lack of active consumers or headset idleness.
3336 	EVRTrackedCameraError AcquireVideoStreamingService(TrackedDeviceIndex_t nDeviceIndex, TrackedCameraHandle_t* pHandle);
3337 	EVRTrackedCameraError ReleaseVideoStreamingService(TrackedCameraHandle_t hTrackedCamera); ///
3338 	/// Copies the image frame into a caller's provided buffer. The image data is currently provided as RGBA data, 4 bytes per pixel. 
3339 	/// A caller can provide null for the framebuffer or frameheader if not desired. Requesting the frame header first, followed by the frame buffer allows the caller to determine if the frame as advanced per the frame header sequence.  
3340 	/// If there is no frame available yet, due to initial camera spinup or re-activation, the error will be VRTrackedCameraError_NoFrameAvailable. 
3341 	/// Ideally a caller should be polling at ~16ms intervals
3342 	EVRTrackedCameraError GetVideoStreamFrameBuffer(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, void* pFrameBuffer, uint nFrameBufferSize, CameraVideoStreamFrameHeader_t* pFrameHeader, uint nFrameHeaderSize);
3343 	EVRTrackedCameraError GetVideoStreamTextureSize(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, VRTextureBounds_t* pTextureBounds, uint* pnWidth, uint* pnHeight); /// Gets size of the image frame.
3344 	/// Access a shared D3D11 texture for the specified tracked camera stream. 
3345 	/// The camera frame type VRTrackedCameraFrameType_Undistorted is not supported directly as a shared texture. It is an interior subregion of the shared texture VRTrackedCameraFrameType_MaximumUndistorted. 
3346 	/// Instead, use GetVideoStreamTextureSize() with VRTrackedCameraFrameType_Undistorted to determine the proper interior subregion bounds along with GetVideoStreamTextureD3D11() with VRTrackedCameraFrameType_MaximumUndistorted to provide the texture. The VRTrackedCameraFrameType_MaximumUndistorted will yield an image where the invalid regions are decoded by the alpha channel having a zero component. The valid regions all have a non-zero alpha component. The subregion as described by VRTrackedCameraFrameType_Undistorted  guarantees a rectangle where all pixels are valid.
3347 	EVRTrackedCameraError GetVideoStreamTextureD3D11(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, void* pD3D11DeviceOrResource, void** ppD3D11ShaderResourceView, CameraVideoStreamFrameHeader_t* pFrameHeader, uint nFrameHeaderSize);
3348 	EVRTrackedCameraError GetVideoStreamTextureGL(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, glUInt_t* pglTextureId, CameraVideoStreamFrameHeader_t* pFrameHeader, uint nFrameHeaderSize); /// Access a shared GL texture for the specified tracked camera stream
3349 	EVRTrackedCameraError ReleaseVideoStreamTextureGL(TrackedCameraHandle_t hTrackedCamera, glUInt_t glTextureId); ///
3350 	void SetCameraTrackingSpace(ETrackingUniverseOrigin eUniverse); ///
3351 	ETrackingUniverseOrigin GetCameraTrackingSpace(); ///
3352 }
3353 
3354 ///
3355 abstract class IVRApplications
3356 {
3357 	EVRApplicationError AddApplicationManifest(const(char)* pchApplicationManifestFullPath, bool bTemporary); /// Adds an application manifest to the list to load when building the list of installed applications. Temporary manifests are not automatically loaded 
3358 	EVRApplicationError RemoveApplicationManifest(const(char)* pchApplicationManifestFullPath); /// Removes an application manifest from the list to load when building the list of installed applications. 
3359 	bool IsApplicationInstalled(const(char)* pchAppKey); /// Returns true if an application is installed 
3360 	uint GetApplicationCount(); /// Returns the number of applications available in the list 
3361 	EVRApplicationError GetApplicationKeyByIndex(uint unApplicationIndex, char* pchAppKeyBuffer, uint unAppKeyBufferLen); /// Returns the key of the specified application. The index is at least 0 and is less than the return  value of GetApplicationCount(). The buffer should be at least k_unMaxApplicationKeyLength in order to  fit the key. 
3362 	EVRApplicationError GetApplicationKeyByProcessId(uint unProcessId, char* pchAppKeyBuffer, uint unAppKeyBufferLen); /// Returns the key of the application for the specified Process Id. The buffer should be at least k_unMaxApplicationKeyLength in order to fit the key. 
3363 	EVRApplicationError LaunchApplication(const(char)* pchAppKey); /// Launches the application. The existing scene application will exit and then the new application will start. This call is not valid for dashboard overlay applications. 
3364 	EVRApplicationError LaunchTemplateApplication(const(char)* pchTemplateAppKey, const(char)* pchNewAppKey, const(AppOverrideKeys_t)* pKeys, uint unKeys); /// Launches an instance of an application of type template, with its app key being pchNewAppKey (which must be unique) and optionally override sections from the manifest file via AppOverrideKeys_t
3365 	EVRApplicationError LaunchApplicationFromMimeType(const(char)* pchMimeType, const(char)* pchArgs); /// launches the application currently associated with this mime type and passes it the option args, typically the filename or object name of the item being launched 
3366 	EVRApplicationError LaunchDashboardOverlay(const(char)* pchAppKey); /// Launches the dashboard overlay application if it is not already running. This call is only valid for dashboard overlay applications. 
3367 	bool CancelApplicationLaunch(const(char)* pchAppKey); /// Cancel a pending launch for an application 
3368 	EVRApplicationError IdentifyApplication(uint unProcessId, const(char)* pchAppKey); /// Identifies a running application. OpenVR can't always tell which process started in response to a URL. This function allows a URL handler (or the process itself) to identify the app key  for the now running application. Passing a process ID of 0 identifies the calling process.  The application must be one that's known to the system via a call to AddApplicationManifest. 
3369 	uint GetApplicationProcessId(const(char)* pchAppKey); /// Returns the process ID for an application. Return 0 if the application was not found or is not running. 
3370 	const(char)* GetApplicationsErrorNameFromEnum(EVRApplicationError error); /// Returns a string for an applications error 
3371 	uint GetApplicationPropertyString(const(char)* pchAppKey, EVRApplicationProperty eProperty, char* pchPropertyValueBuffer, uint unPropertyValueBufferLen, EVRApplicationError* peError); /// Returns a value for an application property. The required buffer size to fit this value will be returned. 
3372 	bool GetApplicationPropertyBool(const(char)* pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError* peError); /// Returns a bool value for an application property. Returns false in all error cases. 
3373 	ulong GetApplicationPropertyUint64(const(char)* pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError* peError); /// Returns a uint64 value for an application property. Returns 0 in all error cases. 
3374 	EVRApplicationError SetApplicationAutoLaunch(const(char)* pchAppKey, bool bAutoLaunch); /// Sets the application auto-launch flag. This is only valid for applications which return true for VRApplicationProperty_IsDashboardOverlay_Bool. 
3375 	bool GetApplicationAutoLaunch(const(char)* pchAppKey); /// Gets the application auto-launch flag. This is only valid for applications which return true for VRApplicationProperty_IsDashboardOverlay_Bool. 
3376 	EVRApplicationError SetDefaultApplicationForMimeType(const(char)* pchAppKey, const(char)* pchMimeType); /// Adds this mime-type to the list of supported mime types for this application
3377 	bool GetDefaultApplicationForMimeType(const(char)* pchMimeType, char* pchAppKeyBuffer, uint unAppKeyBufferLen); /// return the app key that will open this mime type 
3378 	bool GetApplicationSupportedMimeTypes(const(char)* pchAppKey, char* pchMimeTypesBuffer, uint unMimeTypesBuffer); /// Get the list of supported mime types for this application, comma-delimited 
3379 	uint GetApplicationsThatSupportMimeType(const(char)* pchMimeType, char* pchAppKeysThatSupportBuffer, uint unAppKeysThatSupportBuffer); /// Get the list of app-keys that support this mime type, comma-delimited, the return value is number of bytes you need to return the full string 
3380 	uint GetApplicationLaunchArguments(uint unHandle, char* pchArgs, uint unArgs); /// Get the args list from an app launch that had the process already running, you call this when you get a VREvent_ApplicationMimeTypeLoad 
3381 	EVRApplicationError GetStartingApplication(char* pchAppKeyBuffer, uint unAppKeyBufferLen); /// Returns the app key for the application that is starting up 
3382 	EVRSceneApplicationState GetSceneApplicationState(); /// Returns the application transition state 
3383 	/// Returns errors that would prevent the specified application from launching immediately. Calling this function will cause the current scene application to quit, so only call it when you are actually about to launch something else. What the caller should do about these failures depends on the failure:
3384 	///  VRApplicationError_OldApplicationQuitting - An existing application has been told to quit. Wait for a VREvent_ProcessQuit and try again.
3385 	///  VRApplicationError_ApplicationAlreadyStarting - This application is already starting. This is a permanent failure.
3386 	///  VRApplicationError_LaunchInProgress      - A different application is already starting. This is a permanent failure.
3387 	///  VRApplicationError_None                   - Go ahead and launch. Everything is clear.
3388 	EVRApplicationError PerformApplicationPrelaunchCheck(const(char)* pchAppKey);
3389 	const(char)* GetSceneApplicationStateNameFromEnum(EVRSceneApplicationState state); /// Returns a string for an application transition state 
3390 	EVRApplicationError LaunchInternalProcess(const(char)* pchBinaryPath, const(char)* pchArguments, const(char)* pchWorkingDirectory); /// Starts a subprocess within the calling application. This suppresses all application transition UI and automatically identifies the new executable  as part of the same application. On success the calling process should exit immediately.  If working directory is NULL or "" the directory portion of the binary path will be  the working directory. 
3391 	uint GetCurrentSceneProcessId(); /// Returns the current scene process ID according to the application system. A scene process will get scene focus once it starts rendering, but it will appear here once it calls VR_Init with the Scene application type. 
3392 }
3393 
3394 ///
3395 abstract class IVRChaperone
3396 {
3397 	ChaperoneCalibrationState GetCalibrationState(); /// Get the current state of Chaperone calibration. This state can change at any time during a session due to physical base station changes.
3398 	bool GetPlayAreaSize(float* pSizeX, float* pSizeZ); /// Returns the width and depth of the Play Area (formerly named Soft Bounds) in X and Z. Tracking space center (0,0,0) is the center of the Play Area.
3399 	/// Returns the 4 corner positions of the Play Area (formerly named Soft Bounds).
3400 	/// Corners are in counter-clockwise order.
3401 	/// Standing center (0,0,0) is the center of the Play Area.
3402 	/// It's a rectangle.
3403 	/// 2 sides are parallel to the X axis and 2 sides are parallel to the Z axis.
3404 	/// Height of every corner is 0Y (on the floor).
3405 	bool GetPlayAreaRect(HmdQuad_t* rect);
3406 	void ReloadInfo(); /// Reload Chaperone data from the .vrchap file on disk.
3407 	void SetSceneColor(HmdColor_t color); /// Optionally give the chaperone system a hit about the color and brightness in the scene 
3408 	void GetBoundsColor(HmdColor_t* pOutputColorArray, int nNumOutputColors, float flCollisionBoundsFadeDistance, HmdColor_t* pOutputCameraColor); /// Get the current chaperone bounds draw color and brightness 
3409 	bool AreBoundsVisible(); /// Determine whether the bounds are showing right now 
3410 	void ForceBoundsVisible(bool bForce); /// Force the bounds to show, mostly for utilities 
3411 }
3412 
3413 ///
3414 abstract class IVRChaperoneSetup
3415 {
3416 	bool CommitWorkingCopy(EChaperoneConfigFile configFile); /// Saves the current working copy to disk
3417 	/// Reverts the working copy to match the live chaperone calibration.
3418 	/// To modify existing data this MUST be do WHILE getting a non-error ChaperoneCalibrationStatus.
3419 	/// Only after this should you do gets and sets on the existing data.
3420 	void RevertWorkingCopy();
3421 	bool GetWorkingPlayAreaSize(float* pSizeX, float* pSizeZ); /// Returns the width and depth of the Play Area (formerly named Soft Bounds) in X and Z from the working copy. Tracking space center (0,0,0) is the center of the Play Area.
3422 	/// Returns the 4 corner positions of the Play Area (formerly named Soft Bounds) from the working copy.
3423 	/// Corners are in clockwise order.
3424 	/// Tracking space center (0,0,0) is the center of the Play Area.
3425 	/// It's a rectangle.
3426 	/// 2 sides are parallel to the X axis and 2 sides are parallel to the Z axis.
3427 	/// Height of every corner is 0Y (on the floor).
3428 	bool GetWorkingPlayAreaRect(HmdQuad_t* rect);
3429 	bool GetWorkingCollisionBoundsInfo(HmdQuad_t* pQuadsBuffer, uint* punQuadsCount); /// Returns the number of Quads if the buffer points to null. Otherwise it returns Quads into the buffer up to the max specified from the working copy.
3430 	bool GetLiveCollisionBoundsInfo(HmdQuad_t* pQuadsBuffer, uint* punQuadsCount); /// Returns the number of Quads if the buffer points to null. Otherwise it returns Quads into the buffer up to the max specified.
3431 	bool GetWorkingSeatedZeroPoseToRawTrackingPose(HmdMatrix34_t* pmatSeatedZeroPoseToRawTrackingPose); /// Returns the preferred seated position from the working copy.
3432 	bool GetWorkingStandingZeroPoseToRawTrackingPose(HmdMatrix34_t* pmatStandingZeroPoseToRawTrackingPose); /// Returns the standing origin from the working copy.
3433 	void SetWorkingPlayAreaSize(float sizeX, float sizeZ); /// Sets the Play Area in the working copy.
3434 	void SetWorkingCollisionBoundsInfo(HmdQuad_t* pQuadsBuffer, uint unQuadsCount); /// Sets the Collision Bounds in the working copy. Note: ceiling height is ignored.
3435 	void SetWorkingPerimeter(HmdVector2_t* pPointBuffer, uint unPointCount); /// Sets the Collision Bounds in the working copy.
3436 	void SetWorkingSeatedZeroPoseToRawTrackingPose(const(HmdMatrix34_t)* pMatSeatedZeroPoseToRawTrackingPose); /// Sets the preferred seated position in the working copy.
3437 	void SetWorkingStandingZeroPoseToRawTrackingPose(const(HmdMatrix34_t)* pMatStandingZeroPoseToRawTrackingPose); /// Sets the preferred standing position in the working copy.
3438 	void ReloadFromDisk(EChaperoneConfigFile configFile); /// Tear everything down and reload it from the file on disk
3439 	bool GetLiveSeatedZeroPoseToRawTrackingPose(HmdMatrix34_t* pmatSeatedZeroPoseToRawTrackingPose); /// Returns the preferred seated position.
3440 	bool ExportLiveToBuffer(char* pBuffer, uint* pnBufferLength); ///
3441 	bool ImportFromBufferToWorking(const(char)* pBuffer, uint nImportFlags); ///
3442 	void ShowWorkingSetPreview(); /// Shows the chaperone data in the working set to preview in the compositor.
3443 	void HideWorkingSetPreview(); /// Hides the chaperone data in the working set to preview in the compositor (if it was visible).
3444 	void RoomSetupStarting(); /// Fire an event that the tracking system can use to know room setup is about to begin. This lets the tracking system make any last minute adjustments that should be incorporated into the new setup.  If the user is adjusting live in HMD using a tweak tool, keep in mind that calling this might cause the user to see the room jump.
3445 }
3446 
3447 ///
3448 abstract class IVRCompositor
3449 {
3450 	void SetTrackingSpace(ETrackingUniverseOrigin eOrigin); /// Sets tracking space returned by WaitGetPoses
3451 	ETrackingUniverseOrigin GetTrackingSpace(); /// Gets current tracking space returned by WaitGetPoses
3452 	/// Scene applications should call this function to get poses to render with (and optionally poses predicted an additional frame out to use for gameplay). This function will block until "running start" milliseconds before the start of the frame, and should be called at the last moment before needing to start rendering.
3453 	/// Return codes:
3454 	///  - IsNotSceneApplication (make sure to call VR_Init with VRApplicaiton_Scene)
3455 	///  - DoNotHaveFocus (some other app has taken focus - this will throttle the call to 10hz to reduce the impact on that app)
3456 	EVRCompositorError WaitGetPoses(TrackedDevicePose_t* pRenderPoseArray, uint unRenderPoseArrayCount, TrackedDevicePose_t* pGamePoseArray, uint unGamePoseArrayCount);
3457 	EVRCompositorError GetLastPoses(TrackedDevicePose_t* pRenderPoseArray, uint unRenderPoseArrayCount, TrackedDevicePose_t* pGamePoseArray, uint unGamePoseArrayCount); /// Get the last set of poses returned by WaitGetPoses.
3458 	/// Interface for accessing last set of poses returned by WaitGetPoses one at a time.
3459 	///  Returns VRCompositorError_IndexOutOfRange if unDeviceIndex not less than k_unMaxTrackedDeviceCount otherwise VRCompositorError_None.
3460 	///  It is okay to pass NULL for either pose if you only want one of the values.
3461 	EVRCompositorError GetLastPoseForTrackedDeviceIndex(TrackedDeviceIndex_t unDeviceIndex, TrackedDevicePose_t* pOutputPose, TrackedDevicePose_t* pOutputGamePose);
3462 	/// Updated scene texture to display. If pBounds is NULL the entire texture will be used.  If called from an OpenGL app, consider adding a glFlush after Submitting both frames to signal the driver to start processing, otherwise it may wait until the command buffer fills up, causing the app to miss frames.
3463 	///  OpenGL dirty state:
3464 	///  glBindTexture
3465 	///  Return codes:
3466 	///  - IsNotSceneApplication (make sure to call VR_Init with VRApplicaiton_Scene)
3467 	///  - DoNotHaveFocus (some other app has taken focus)
3468 	///  - TextureIsOnWrongDevice (application did not use proper AdapterIndex - see IVRSystem.GetDXGIOutputInfo)
3469 	///  - SharedTexturesNotSupported (application needs to call CreateDXGIFactory1 or later before creating DX device)
3470 	///  - TextureUsesUnsupportedFormat (scene textures must be compatible with DXGI sharing rules - e.g. uncompressed, no mips, etc.)
3471 	///  - InvalidTexture (usually means bad arguments passed in)
3472 	///  - AlreadySubmitted (app has submitted two left textures or two right textures in a single frame - i.e. before calling WaitGetPoses again)
3473 	EVRCompositorError Submit(EVREye eEye, const(Texture_t)* pTexture, const(VRTextureBounds_t)* pBounds, EVRSubmitFlags nSubmitFlags);
3474 	void ClearLastSubmittedFrame(); /// Clears the frame that was sent with the last call to Submit. This will cause the compositor to show the grid until Submit is called again.
3475 	void PostPresentHandoff(); /// Call immediately after presenting your app's window (i.e. companion window) to unblock the compositor. This is an optional call, which only needs to be used if you can't instead call WaitGetPoses immediately after Present. For example, if your engine's render and game loop are not on separate threads, or blocking the render thread until 3ms before the next vsync would introduce a deadlock of some sort.  This function tells the compositor that you have finished all rendering after having Submitted buffers for both eyes, and it is free to start its rendering work.  This should only be called from the same thread you are rendering on.
3476 	bool GetFrameTiming(Compositor_FrameTiming* pTiming, uint unFramesAgo); /// Returns true if timing data is filled it.  Sets oldest timing info if nFramesAgo is larger than the stored history. Be sure to set timing.size = sizeof(Compositor_FrameTiming) on struct passed in before calling this function.
3477 	uint GetFrameTimings(Compositor_FrameTiming* pTiming, uint nFrames); /// Interface for copying a range of timing data.  Frames are returned in ascending order (oldest to newest) with the last being the most recent frame. Only the first entry's m_nSize needs to be set, as the rest will be inferred from that.  Returns total number of entries filled out.
3478 	float GetFrameTimeRemaining(); /// Returns the time in seconds left in the current (as identified by FrameTiming's frameIndex) frame. Due to "running start", this value may roll over to the next frame before ever reaching 0.0.
3479 	void GetCumulativeStats(Compositor_CumulativeStats* pStats, uint nStatsSizeInBytes); /// Fills out stats accumulated for the last connected application.  Pass in sizeof( Compositor_CumulativeStats ) as second parameter.
3480 	void FadeToColor(float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground); /// Fades the view on the HMD to the specified color. The fade will take fSeconds, and the color values are between 0.0 and 1.0. This color is faded on top of the scene based on the alpha parameter. Removing the fade color instantly  would be FadeToColor( 0.0, 0.0, 0.0, 0.0, 0.0 ).  Values are in un-premultiplied alpha space.
3481 	HmdColor_t GetCurrentFadeColor(bool bBackground); /// Get current fade color value.
3482 	void FadeGrid(float fSeconds, bool bFadeIn); /// Fading the Grid in or out in fSeconds
3483 	float GetCurrentGridAlpha(); /// Get current alpha value of grid.
3484 	EVRCompositorError SetSkyboxOverride(const(Texture_t)* pTextures, uint unTextureCount); /// Override the skybox used in the compositor (e.g. for during level loads when the app can't feed scene images fast enough) Order is Front, Back, Left, Right, Top, Bottom.  If only a single texture is passed, it is assumed in lat-long format. If two are passed, it is assumed a lat-long stereo pair.
3485 	void ClearSkyboxOverride(); /// Resets compositor skybox back to defaults.
3486 	void CompositorBringToFront(); /// Brings the compositor window to the front. This is useful for covering any other window that may be on the HMD and is obscuring the compositor window.
3487 	void CompositorGoToBack(); /// Pushes the compositor window to the back. This is useful for allowing other applications to draw directly to the HMD.
3488 	void CompositorQuit(); /// Tells the compositor process to clean up and exit. You do not need to call this function at shutdown. Under normal  circumstances the compositor will manage its own life cycle based on what applications are running.
3489 	bool IsFullscreen(); /// Return whether the compositor is fullscreen
3490 	uint GetCurrentSceneFocusProcess(); /// Returns the process ID of the process that is currently rendering the scene
3491 	uint GetLastFrameRenderer(); /// Returns the process ID of the process that rendered the last frame (or 0 if the compositor itself rendered the frame.) Returns 0 when fading out from an app and the app's process Id when fading into an app.
3492 	bool CanRenderScene(); /// Returns true if the current process has the scene focus
3493 	void ShowMirrorWindow(); /// DEPRECATED: Opens the headset view (as either a window or docked widget depending on user's preferences) that displays what the user sees in the headset.
3494 	void HideMirrorWindow(); /// DEPRECATED: Closes the headset view, either as a window or docked widget.
3495 	bool IsMirrorWindowVisible(); /// DEPRECATED: Returns true if the headset view (either as a window or docked widget) is shown.
3496 	void CompositorDumpImages(); /// Writes back buffer and stereo left/right pair from the application to a 'screenshots' folder in the SteamVR runtime root.
3497 	bool ShouldAppRenderWithLowResources(); /// Let an app know it should be rendering with low resources.
3498 	void ForceInterleavedReprojectionOn(bool bOverride); /// Override interleaved reprojection logic to force on.
3499 	void ForceReconnectProcess(); /// Force reconnecting to the compositor process.
3500 	void SuspendRendering(bool bSuspend); /// Temporarily suspends rendering (useful for finer control over scene transitions).
3501 	EVRCompositorError GetMirrorTextureD3D11(EVREye eEye, void* pD3D11DeviceOrResource, void** ppD3D11ShaderResourceView); /// Opens a shared D3D11 texture with the undistorted composited image for each eye.  Use ReleaseMirrorTextureD3D11 when finished instead of calling Release on the resource itself.
3502 	void ReleaseMirrorTextureD3D11(void* pD3D11ShaderResourceView); ///
3503 	EVRCompositorError GetMirrorTextureGL(EVREye eEye, glUInt_t* pglTextureId, glSharedTextureHandle_t* pglSharedTextureHandle); /// Access to mirror textures from OpenGL.
3504 	bool ReleaseSharedGLTexture(glUInt_t glTextureId, glSharedTextureHandle_t glSharedTextureHandle); ///
3505 	void LockGLSharedTextureForAccess(glSharedTextureHandle_t glSharedTextureHandle); ///
3506 	void UnlockGLSharedTextureForAccess(glSharedTextureHandle_t glSharedTextureHandle); ///
3507 	/// [Vulkan Only]
3508 	/// return 0. Otherwise it returns the length of the number of bytes necessary to hold this string including the trailing null.  The string will be a space separated list of-required instance extensions to enable in VkCreateInstance
3509 	uint GetVulkanInstanceExtensionsRequired(char* pchValue, uint unBufferSize);
3510 	/// [Vulkan only]
3511 	/// return 0. Otherwise it returns the length of the number of bytes necessary to hold this string including the trailing null.  The string will be a space separated list of required device extensions to enable in VkCreateDevice
3512 	uint GetVulkanDeviceExtensionsRequired(VkPhysicalDevice_T pPhysicalDevice, char* pchValue, uint unBufferSize);
3513 	/// [ Vulkan/D3D12 Only ]
3514 	/// There are two purposes for SetExplicitTimingMode:
3515 	/// 1. To get a more accurate GPU timestamp for when the frame begins in Vulkan/D3D12 applications.
3516 	/// 2. (Optional) To avoid having WaitGetPoses access the Vulkan queue so that the queue can be accessed from
3517 	/// another thread while WaitGetPoses is executing.
3518 	/// More accurate GPU timestamp for the start of the frame is achieved by the application calling SubmitExplicitTimingData immediately before its first submission to the Vulkan/D3D12 queue. This is more accurate because normally this GPU timestamp is recorded during WaitGetPoses.  In D3D11,  WaitGetPoses queues a GPU timestamp write, but it does not actually get submitted to the GPU until the  application flushes.  By using SubmitExplicitTimingData, the timestamp is recorded at the same place for  Vulkan/D3D12 as it is for D3D11, resulting in a more accurate GPU time measurement for the frame.
3519 	/// Avoiding WaitGetPoses accessing the Vulkan queue can be achieved using SetExplicitTimingMode as well.  If this is desired, the application should set the timing mode to Explicit_ApplicationPerformsPostPresentHandoff and *MUSTcall PostPresentHandoff itself. If these conditions are met, then WaitGetPoses is guaranteed not to access the queue.  Note that PostPresentHandoff and SubmitExplicitTimingData will access the queue, so only WaitGetPoses becomes safe for accessing the queue from another thread.
3520 	void SetExplicitTimingMode(EVRCompositorTimingMode eTimingMode);
3521 	/// [ Vulkan/D3D12 Only ]
3522 	/// Submit explicit timing data.  When SetExplicitTimingMode is true, this must be called immediately before the application's first vkQueueSubmit (Vulkan) or ID3D12CommandQueue::ExecuteCommandLists (D3D12) of each frame. This function will insert a GPU timestamp write just before the application starts its rendering.  This function will perform a vkQueueSubmit on Vulkan so must not be done simultaneously with VkQueue operations on another thread. Returns VRCompositorError_RequestFailed if SetExplicitTimingMode is not enabled.
3523 	EVRCompositorError SubmitExplicitTimingData();
3524 	bool IsMotionSmoothingEnabled(); /// Indicates whether or not motion smoothing is enabled by the user settings. If you want to know if motion smoothing actually triggered due to a late frame, check Compositor_FrameTiming m_nReprojectionFlags & VRCompositor_ReprojectionMotion instead.
3525 	bool IsMotionSmoothingSupported(); /// Indicates whether or not motion smoothing is supported by the current hardware.
3526 	bool IsCurrentSceneFocusAppLoading(); /// Indicates whether or not the current scene focus app is currently loading.  This is inferred from its use of FadeGrid to explicitly fade to the compositor to cover up the fact that it cannot render at a sustained full framerate during this time.
3527 	EVRCompositorError SetStageOverride_Async(const(char)* pchRenderModelPath, const(HmdMatrix34_t)* pTransform, const(Compositor_StageRenderSettings)* pRenderSettings, uint nSizeOfRenderSettings); /// Override the stage model used in the compositor to replace the grid.  RenderModelPath is a full path the an OBJ file to load. This file will be loaded asynchronously from disk and uploaded to the gpu by the runtime.  Once ready for rendering, the VREvent StageOverrideReady will be sent.  Use FadeToGrid to reveal.  Call ClearStageOverride to free the associated resources when finished. const 
3528 	void ClearStageOverride(); /// Resets the stage to its default user specified setting.
3529 	bool GetCompositorBenchmarkResults(Compositor_BenchmarkResults* pBenchmarkResults, uint nSizeOfBenchmarkResults); /// Returns true if pBenchmarkResults is filled it.  Sets pBenchmarkResults with the result of the compositor benchmark. nSizeOfBenchmarkResults should be set to sizeof(Compositor_BenchmarkResults)
3530 	EVRCompositorError GetLastPosePredictionIDs(uint* pRenderPosePredictionID, uint* pGamePosePredictionID); /// Returns the frame id associated with the poses last returned by WaitGetPoses.  Deltas between IDs correspond to number of headset vsync intervals.
3531 	EVRCompositorError GetPosesForFrame(uint unPosePredictionID, TrackedDevicePose_t* pPoseArray, uint unPoseArrayCount); /// Get the most up-to-date predicted (or recorded - up to 100ms old) set of poses for a given frame id.
3532 }
3533 
3534 ///
3535 abstract class IVROverlay
3536 {
3537 	EVROverlayError FindOverlay(const(char)* pchOverlayKey, VROverlayHandle_t* pOverlayHandle); /// Finds an existing overlay with the specified key.
3538 	EVROverlayError CreateOverlay(const(char)* pchOverlayKey, const(char)* pchOverlayName, VROverlayHandle_t* pOverlayHandle); /// Creates a new named overlay. All overlays start hidden and with default settings.
3539 	EVROverlayError DestroyOverlay(VROverlayHandle_t ulOverlayHandle); /// Destroys the specified overlay. When an application calls VR_Shutdown all overlays created by that app are automatically destroyed.
3540 	uint GetOverlayKey(VROverlayHandle_t ulOverlayHandle, char* pchValue, uint unBufferSize, EVROverlayError* pError); /// Fills the provided buffer with the string key of the overlay. Returns the size of buffer required to store the key, including the terminating null character. k_unVROverlayMaxKeyLength will be enough bytes to fit the string.
3541 	uint GetOverlayName(VROverlayHandle_t ulOverlayHandle, char* pchValue, uint unBufferSize, EVROverlayError* pError); /// Fills the provided buffer with the friendly name of the overlay. Returns the size of buffer required to store the key, including the terminating null character. k_unVROverlayMaxNameLength will be enough bytes to fit the string.
3542 	EVROverlayError SetOverlayName(VROverlayHandle_t ulOverlayHandle, const(char)* pchName); /// set the name to use for this overlay
3543 	EVROverlayError GetOverlayImageData(VROverlayHandle_t ulOverlayHandle, void* pvBuffer, uint unBufferSize, uint* punWidth, uint* punHeight); /// Gets the raw image data from an overlay. Overlay image data is always returned as RGBA data, 4 bytes per pixel. If the buffer is not large enough, width and height  will be set and VROverlayError_ArrayTooSmall is returned.
3544 	const(char)* GetOverlayErrorNameFromEnum(EVROverlayError error); /// returns a string that corresponds with the specified overlay error. The string will be the name  of the error enum value for all valid error codes
3545 	EVROverlayError SetOverlayRenderingPid(VROverlayHandle_t ulOverlayHandle, uint unPID); /// Sets the pid that is allowed to render to this overlay (the creator pid is always allow to render), by default this is the pid of the process that made the overlay
3546 	uint GetOverlayRenderingPid(VROverlayHandle_t ulOverlayHandle); /// Gets the pid that is allowed to render to this overlay
3547 	EVROverlayError SetOverlayFlag(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled); /// Specify flag setting for a given overlay
3548 	EVROverlayError GetOverlayFlag(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool* pbEnabled); /// Sets flag setting for a given overlay
3549 	EVROverlayError GetOverlayFlags(VROverlayHandle_t ulOverlayHandle, uint* pFlags); /// Gets all the flags for a given overlay
3550 	EVROverlayError SetOverlayColor(VROverlayHandle_t ulOverlayHandle, float fRed, float fGreen, float fBlue); /// Sets the color tint of the overlay quad. Use 0.0 to 1.0 per channel.
3551 	EVROverlayError GetOverlayColor(VROverlayHandle_t ulOverlayHandle, float* pfRed, float* pfGreen, float* pfBlue); /// Gets the color tint of the overlay quad.
3552 	EVROverlayError SetOverlayAlpha(VROverlayHandle_t ulOverlayHandle, float fAlpha); /// Sets the alpha of the overlay quad. Use 1.0 for 100 percent opacity to 0.0 for 0 percent opacity.
3553 	EVROverlayError GetOverlayAlpha(VROverlayHandle_t ulOverlayHandle, float* pfAlpha); /// Gets the alpha of the overlay quad. By default overlays are rendering at 100 percent alpha (1.0).
3554 	EVROverlayError SetOverlayTexelAspect(VROverlayHandle_t ulOverlayHandle, float fTexelAspect); /// Sets the aspect ratio of the texels in the overlay. 1.0 means the texels are square. 2.0 means the texels are twice as wide as they are tall. Defaults to 1.0.
3555 	EVROverlayError GetOverlayTexelAspect(VROverlayHandle_t ulOverlayHandle, float* pfTexelAspect); /// Gets the aspect ratio of the texels in the overlay. Defaults to 1.0
3556 	/// Sets the rendering sort order for the overlay. Overlays are rendered this order:
3557 	/// Overlays owned by the scene application
3558 	/// Overlays owned by some other application
3559 	/// Within a category overlays are rendered lowest sort order to highest sort order. Overlays with the same 
3560 	/// sort order are rendered back to front base on distance from the HMD.
3561 	/// Sort order defaults to 0.
3562 	EVROverlayError SetOverlaySortOrder(VROverlayHandle_t ulOverlayHandle, uint unSortOrder);
3563 	EVROverlayError GetOverlaySortOrder(VROverlayHandle_t ulOverlayHandle, uint* punSortOrder); /// Gets the sort order of the overlay. See SetOverlaySortOrder for how this works.
3564 	EVROverlayError SetOverlayWidthInMeters(VROverlayHandle_t ulOverlayHandle, float fWidthInMeters); /// Sets the width of the overlay quad in meters. By default overlays are rendered on a quad that is 1 meter across
3565 	EVROverlayError GetOverlayWidthInMeters(VROverlayHandle_t ulOverlayHandle, float* pfWidthInMeters); /// Returns the width of the overlay quad in meters. By default overlays are rendered on a quad that is 1 meter across
3566 	EVROverlayError SetOverlayCurvature(VROverlayHandle_t ulOverlayHandle, float fCurvature); /// Use to draw overlay as a curved surface. Curvature is a percentage from (0..1] where 1 is a fully closed cylinder. For a specific radius, curvature can be computed as: overlay.width / (2 PI r).
3567 	EVROverlayError GetOverlayCurvature(VROverlayHandle_t ulOverlayHandle, float* pfCurvature); /// Returns the curvature of the overlay as a percentage from (0..1] where 1 is a fully closed cylinder.
3568 	EVROverlayError SetOverlayTextureColorSpace(VROverlayHandle_t ulOverlayHandle, EColorSpace eTextureColorSpace); /// Sets the colorspace the overlay texture's data is in.  Defaults to 'auto'. If the texture needs to be resolved, you should call SetOverlayTexture with the appropriate colorspace instead.
3569 	EVROverlayError GetOverlayTextureColorSpace(VROverlayHandle_t ulOverlayHandle, EColorSpace* peTextureColorSpace); /// Gets the overlay's current colorspace setting.
3570 	EVROverlayError SetOverlayTextureBounds(VROverlayHandle_t ulOverlayHandle, const(VRTextureBounds_t)* pOverlayTextureBounds); /// Sets the part of the texture to use for the overlay. UV Min is the upper left corner and UV Max is the lower right corner.
3571 	EVROverlayError GetOverlayTextureBounds(VROverlayHandle_t ulOverlayHandle, VRTextureBounds_t* pOverlayTextureBounds); /// Gets the part of the texture to use for the overlay. UV Min is the upper left corner and UV Max is the lower right corner.
3572 	EVROverlayError GetOverlayTransformType(VROverlayHandle_t ulOverlayHandle, VROverlayTransformType* peTransformType); /// Returns the transform type of this overlay.
3573 	EVROverlayError SetOverlayTransformAbsolute(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, const(HmdMatrix34_t)* pmatTrackingOriginToOverlayTransform); /// Sets the transform to absolute tracking origin.
3574 	EVROverlayError GetOverlayTransformAbsolute(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin* peTrackingOrigin, HmdMatrix34_t* pmatTrackingOriginToOverlayTransform); /// Gets the transform if it is absolute. Returns an error if the transform is some other type.
3575 	EVROverlayError SetOverlayTransformTrackedDeviceRelative(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unTrackedDevice, const(HmdMatrix34_t)* pmatTrackedDeviceToOverlayTransform); /// Sets the transform to relative to the transform of the specified tracked device.
3576 	EVROverlayError GetOverlayTransformTrackedDeviceRelative(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t* punTrackedDevice, HmdMatrix34_t* pmatTrackedDeviceToOverlayTransform); /// Gets the transform if it is relative to a tracked device. Returns an error if the transform is some other type.
3577 	EVROverlayError SetOverlayTransformTrackedDeviceComponent(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unDeviceIndex, const(char)* pchComponentName); /// Sets the transform to draw the overlay on a rendermodel component mesh instead of a quad. This will only draw when the system is drawing the device. Overlays with this transform type cannot receive mouse events.
3578 	EVROverlayError GetOverlayTransformTrackedDeviceComponent(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t* punDeviceIndex, char* pchComponentName, uint unComponentNameSize); /// Gets the transform information when the overlay is rendering on a component.
3579 	EVROverlayError GetOverlayTransformOverlayRelative(VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t* ulOverlayHandleParent, HmdMatrix34_t* pmatParentOverlayToOverlayTransform); /// Gets the transform if it is relative to another overlay. Returns an error if the transform is some other type.
3580 	EVROverlayError SetOverlayTransformOverlayRelative(VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t ulOverlayHandleParent, const(HmdMatrix34_t)* pmatParentOverlayToOverlayTransform); /// Sets the transform to relative to the transform of the specified overlay. This overlays visibility will also track the parents visibility
3581 	EVROverlayError SetOverlayTransformCursor(VROverlayHandle_t ulCursorOverlayHandle, const(HmdVector2_t)* pvHotspot); /// Sets the hotspot for the specified overlay when that overlay is used as a cursor. These are in texture space with 0,0 in the upper left corner of the texture and 1,1 in the lower right corner of the texture.
3582 	EVROverlayError GetOverlayTransformCursor(VROverlayHandle_t ulOverlayHandle, HmdVector2_t* pvHotspot); /// Gets cursor hotspot/transform for the specified overlay
3583 	EVROverlayError ShowOverlay(VROverlayHandle_t ulOverlayHandle); /// Shows the VR overlay.  For dashboard overlays, only the Dashboard Manager is allowed to call this.
3584 	EVROverlayError HideOverlay(VROverlayHandle_t ulOverlayHandle); /// Hides the VR overlay.  For dashboard overlays, only the Dashboard Manager is allowed to call this.
3585 	bool IsOverlayVisible(VROverlayHandle_t ulOverlayHandle); /// Returns true if the overlay is visible.
3586 	EVROverlayError GetTransformForOverlayCoordinates(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t* pmatTransform); /// Get the transform in 3d space associated with a specific 2d point in the overlay's coordinate space (where 0,0 is the lower left). -Z points out of the overlay
3587 	bool PollNextOverlayEvent(VROverlayHandle_t ulOverlayHandle, VREvent_t* pEvent, uint uncbVREvent); /// Returns true and fills the event with the next event on the overlay's event queue, if there is one.  If there are no events this method returns false. uncbVREvent should be the size in bytes of the VREvent_t struct
3588 	EVROverlayError GetOverlayInputMethod(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod* peInputMethod); /// Returns the current input settings for the specified overlay.
3589 	EVROverlayError SetOverlayInputMethod(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod eInputMethod); /// Sets the input settings for the specified overlay.
3590 	EVROverlayError GetOverlayMouseScale(VROverlayHandle_t ulOverlayHandle, HmdVector2_t* pvecMouseScale); /// Gets the mouse scaling factor that is used for mouse events. The actual texture may be a different size, but this is typically the size of the underlying UI in pixels.
3591 	EVROverlayError SetOverlayMouseScale(VROverlayHandle_t ulOverlayHandle, const(HmdVector2_t)* pvecMouseScale); /// Sets the mouse scaling factor that is used for mouse events. The actual texture may be a different size, but this is typically the size of the underlying UI in pixels (not in world space).
3592 	bool ComputeOverlayIntersection(VROverlayHandle_t ulOverlayHandle, const(VROverlayIntersectionParams_t)* pParams, VROverlayIntersectionResults_t* pResults); /// Computes the overlay-space pixel coordinates of where the ray intersects the overlay with the specified settings. Returns false if there is no intersection.
3593 	bool IsHoverTargetOverlay(VROverlayHandle_t ulOverlayHandle); /// Returns true if the specified overlay is the hover target. An overlay is the hover target when it is the last overlay "moused over"  by the virtual mouse pointer
3594 	EVROverlayError SetOverlayIntersectionMask(VROverlayHandle_t ulOverlayHandle, VROverlayIntersectionMaskPrimitive_t* pMaskPrimitives, uint unNumMaskPrimitives, uint unPrimitiveSize); /// Sets a list of primitives to be used for controller ray intersection typically the size of the underlying UI in pixels (not in world space).
3595 	EVROverlayError TriggerLaserMouseHapticVibration(VROverlayHandle_t ulOverlayHandle, float fDurationSeconds, float fFrequency, float fAmplitude); /// Triggers a haptic event on the laser mouse controller for the specified overlay
3596 	EVROverlayError SetOverlayCursor(VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t ulCursorHandle); /// Sets the cursor to use for the specified overlay. This will be drawn instead of the generic blob when the laser mouse is pointed at the specified overlay
3597 	EVROverlayError SetOverlayCursorPositionOverride(VROverlayHandle_t ulOverlayHandle, const(HmdVector2_t)* pvCursor); /// Sets the override cursor position to use for this overlay in overlay mouse coordinates. This position will be used to draw the cursor instead of whatever the laser mouse cursor position is.
3598 	EVROverlayError ClearOverlayCursorPositionOverride(VROverlayHandle_t ulOverlayHandle); /// Clears the override cursor position for this overlay
3599 	/// Texture to draw for the overlay. This function can only be called by the overlay's creator or renderer process (see SetOverlayRenderingPid) .
3600 	/// OpenGL dirty state: glBindTexture
3601 	EVROverlayError SetOverlayTexture(VROverlayHandle_t ulOverlayHandle, const(Texture_t)* pTexture);
3602 	EVROverlayError ClearOverlayTexture(VROverlayHandle_t ulOverlayHandle); /// Use this to tell the overlay system to release the texture set for this overlay.
3603 	EVROverlayError SetOverlayRaw(VROverlayHandle_t ulOverlayHandle, void* pvBuffer, uint unWidth, uint unHeight, uint unBytesPerPixel); /// Separate interface for providing the data as a stream of bytes, but there is an upper bound on data that can be sent. This function can only be called by the overlay's renderer process.
3604 	/// Separate interface for providing the image through a filename: can be png or jpg, and should not be bigger than 1920x1080.
3605 	/// This function can only be called by the overlay's renderer process
3606 	EVROverlayError SetOverlayFromFile(VROverlayHandle_t ulOverlayHandle, const(char)* pchFilePath);
3607 	/// Get the native texture handle/device for an overlay you have created. On windows this handle will be a ID3D11ShaderResourceView with a ID3D11Texture2D bound.
3608 	/// The texture will always be sized to match the backing texture you supplied in SetOverlayTexture above.
3609 	/// You MUST call ReleaseNativeOverlayHandle() with pNativeTextureHandle once you are done with this texture.
3610 	/// pNativeTextureHandle is an OUTPUT, it will be a pointer to a ID3D11ShaderResourceView *. pNativeTextureRef is an INPUT and should be a ID3D11Resource *. The device used by pNativeTextureRef will be used to bind pNativeTextureHandle.
3611 	EVROverlayError GetOverlayTexture(VROverlayHandle_t ulOverlayHandle, void** pNativeTextureHandle, void* pNativeTextureRef, uint* pWidth, uint* pHeight, uint* pNativeFormat, ETextureType* pAPIType, EColorSpace* pColorSpace, VRTextureBounds_t* pTextureBounds);
3612 	EVROverlayError ReleaseNativeOverlayHandle(VROverlayHandle_t ulOverlayHandle, void* pNativeTextureHandle); /// Release the pNativeTextureHandle provided from the GetOverlayTexture call, this allows the system to free the underlying GPU resources for this object, so only do it once you stop rendering this texture.
3613 	EVROverlayError GetOverlayTextureSize(VROverlayHandle_t ulOverlayHandle, uint* pWidth, uint* pHeight); /// Get the size of the overlay texture
3614 	EVROverlayError CreateDashboardOverlay(const(char)* pchOverlayKey, const(char)* pchOverlayFriendlyName, VROverlayHandle_t* pMainHandle, VROverlayHandle_t* pThumbnailHandle); /// Creates a dashboard overlay and returns its handle
3615 	bool IsDashboardVisible(); /// Returns true if the dashboard is visible
3616 	bool IsActiveDashboardOverlay(VROverlayHandle_t ulOverlayHandle); /// returns true if the dashboard is visible and the specified overlay is the active system Overlay
3617 	EVROverlayError SetDashboardOverlaySceneProcess(VROverlayHandle_t ulOverlayHandle, uint unProcessId); /// Sets the dashboard overlay to only appear when the specified process ID has scene focus
3618 	EVROverlayError GetDashboardOverlaySceneProcess(VROverlayHandle_t ulOverlayHandle, uint* punProcessId); /// Gets the process ID that this dashboard overlay requires to have scene focus
3619 	void ShowDashboard(const(char)* pchOverlayToShow); /// Shows the dashboard.
3620 	TrackedDeviceIndex_t GetPrimaryDashboardDevice(); /// Returns the tracked device that has the laser pointer in the dashboard
3621 	EVROverlayError ShowKeyboard(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, uint unFlags, const(char)* pchDescription, uint unCharMax, const(char)* pchExistingText, ulong uUserValue); /// Show the virtual keyboard to accept input. In most cases, you should pass KeyboardFlag_Modal to enable modal overlay behavior on the keyboard itself. See EKeyboardFlags for more.
3622 	EVROverlayError ShowKeyboardForOverlay(VROverlayHandle_t ulOverlayHandle, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, uint unFlags, const(char)* pchDescription, uint unCharMax, const(char)* pchExistingText, ulong uUserValue); /// Show the virtual keyboard to accept input for an overlay. In most cases, you should pass KeyboardFlag_Modal to enable modal overlay behavior on the keyboard itself. See EKeyboardFlags for more.
3623 	uint GetKeyboardText(char* pchText, uint cchText); /// Get the text that was entered into the text input
3624 	void HideKeyboard(); /// Hide the virtual keyboard
3625 	void SetKeyboardTransformAbsolute(ETrackingUniverseOrigin eTrackingOrigin, const(HmdMatrix34_t)* pmatTrackingOriginToKeyboardTransform); /// Set the position of the keyboard in world space
3626 	void SetKeyboardPositionForOverlay(VROverlayHandle_t ulOverlayHandle, HmdRect2_t avoidRect); /// Set the position of the keyboard in overlay space by telling it to avoid a rectangle in the overlay. Rectangle coords have (0,0) in the bottom left *
3627 	VRMessageOverlayResponse ShowMessageOverlay(const(char)* pchText, const(char)* pchCaption, const(char)* pchButton0Text, const(char)* pchButton1Text, const(char)* pchButton2Text, const(char)* pchButton3Text); /// Show the message overlay. This will block and return you a result.
3628 	void CloseMessageOverlay(); /// If the calling process owns the overlay and it's open, this will close it.
3629 }
3630 
3631 ///
3632 abstract class IVROverlayView
3633 {
3634 	/// Acquire an OverlayView_t from an overlay handle
3635 	/// The overlay view can be used to sample the contents directly by a native API. The contents of the OverlayView_t will remain unchanged through the lifetime of the OverlayView_t.
3636 	/// The caller acquires read privileges over the OverlayView_t, but should not write to it.
3637 	/// AcquireOverlayView() may be called on the same ulOverlayHandle multiple times to refresh the image contents. In this case the caller is strongly encouraged to re-use the same pOverlayView for all re-acquisition calls.
3638 	/// If the producer has not yet queued an image, AcquireOverlayView will return success, and the Texture_t will have the expected ETextureType. However, the Texture_t->handle will be nullptr. Once the producer generates the first overlay frame, Texture_t->handle will become a valid handle.
3639 	EVROverlayError AcquireOverlayView(VROverlayHandle_t ulOverlayHandle, VRNativeDevice_t* pNativeDevice, VROverlayView_t* pOverlayView, uint unOverlayViewSize);
3640 	/// Release an acquired OverlayView_t
3641 	/// Denotes that pOverlayView will no longer require access to the resources it acquired in all previous calls to AcquireOverlayView().
3642 	/// All OverlayView_t*'s provided to AcquireOverlayView() as pOverlayViews must be passed into ReleaseOverlayView() in order for the underlying GPU resources to be freed.
3643 	EVROverlayError ReleaseOverlayView(VROverlayView_t* pOverlayView);
3644 	void PostOverlayEvent(VROverlayHandle_t ulOverlayHandle, const(VREvent_t)* pvrEvent); /// Posts an overlay event
3645 	bool IsViewingPermitted(VROverlayHandle_t ulOverlayHandle); /// Determines whether this process is permitted to view an overlay's content.
3646 }
3647 
3648 ///
3649 abstract class IVRHeadsetView
3650 {
3651 	void SetHeadsetViewSize(uint nWidth, uint nHeight); /// Sets the resolution in pixels to render the headset view. These values are clamped to k_unHeadsetViewMaxWidth and k_unHeadsetViewMaxHeight respectively. For cropped views, the rendered output will be fit to aspect ratio defined by the the specified dimensions. For uncropped views, the caller should use GetHeadsetViewAspectRation to adjust the requested render size to avoid squashing or stretching, and then apply letterboxing to compensate when displaying the results.
3652 	void GetHeadsetViewSize(uint* pnWidth, uint* pnHeight); /// Gets the current resolution used to render the headset view.
3653 	void SetHeadsetViewMode(HeadsetViewMode_t eHeadsetViewMode); /// Set the mode used to render the headset view.
3654 	HeadsetViewMode_t GetHeadsetViewMode(); /// Get the current mode used to render the headset view.
3655 	void SetHeadsetViewCropped(bool bCropped); /// Set whether or not the headset view should be rendered cropped to hide the hidden area mesh or not.
3656 	bool GetHeadsetViewCropped(); /// Get the current cropping status of the headset view.
3657 	float GetHeadsetViewAspectRatio(); /// Get the aspect ratio (width:height) of the uncropped headset view (accounting for the current set mode).
3658 	void SetHeadsetViewBlendRange(float flStartPct, float flEndPct); /// Set the range [0..1] that the headset view blends across the stereo overlapped area in cropped both mode.
3659 	void GetHeadsetViewBlendRange(float* pStartPct, float* pEndPct); /// Get the current range [0..1] that the headset view blends across the stereo overlapped area in cropped both mode.
3660 }
3661 
3662 ///
3663 abstract class IVRRenderModels
3664 {
3665 	/// Loads and returns a render model for use in the application. pchRenderModelName should be a render model name from the Prop_RenderModelName_String property or an absolute path name to a render model on disk.
3666 	/// The resulting render model is valid until VR_Shutdown() is called or until FreeRenderModel() is called. When the  application is finished with the render model it should call FreeRenderModel() to free the memory associated with the model.
3667 	/// The method returns VRRenderModelError_Loading while the render model is still being loaded. The method returns VRRenderModelError_None once loaded successfully, otherwise will return an error.
3668 	EVRRenderModelError LoadRenderModel_Async(const(char)* pchRenderModelName, RenderModel_t** ppRenderModel);
3669 	/// Frees a previously returned render model
3670 	/// It is safe to call this on a null ptr.
3671 	void FreeRenderModel(RenderModel_t* pRenderModel);
3672 	EVRRenderModelError LoadTexture_Async(TextureID_t textureId, RenderModel_TextureMap_t** ppTexture); /// Loads and returns a texture for use in the application.
3673 	/// Frees a previously returned texture
3674 	/// It is safe to call this on a null ptr.
3675 	void FreeTexture(RenderModel_TextureMap_t* pTexture);
3676 	EVRRenderModelError LoadTextureD3D11_Async(TextureID_t textureId, void* pD3D11Device, void** ppD3D11Texture2D); /// Creates a D3D11 texture and loads data into it.
3677 	EVRRenderModelError LoadIntoTextureD3D11_Async(TextureID_t textureId, void* pDstTexture); /// Helper function to copy the bits into an existing texture.
3678 	void FreeTextureD3D11(void* pD3D11Texture2D); /// Use this to free textures created with LoadTextureD3D11_Async instead of calling Release on them.
3679 	/// Use this to get the names of available render models.  Index does not correlate to a tracked device index, but is only used for iterating over all available render models.  If the index is out of range, this function will return 0.
3680 	/// Otherwise, it will return the size of the buffer required for the name.
3681 	uint GetRenderModelName(uint unRenderModelIndex, char* pchRenderModelName, uint unRenderModelNameLen);
3682 	uint GetRenderModelCount(); /// Returns the number of available render models.
3683 	/// Returns the number of components of the specified render model. Components are useful when client application wish to draw, label, or otherwise interact with components of tracked objects. Examples controller components:
3684 	///   renderable things such as triggers, buttons
3685 	///   non-renderable things which include coordinate systems such as 'tip', 'base', a neutral controller agnostic hand-pose
3686 	///   If all controller components are enumerated and rendered, it will be equivalent to drawing the traditional render model
3687 	///   Returns 0 if components not supported, >0 otherwise
3688 	uint GetComponentCount(const(char)* pchRenderModelName);
3689 	/// Use this to get the names of available components.  Index does not correlate to a tracked device index, but is only used for iterating over all available components.  If the index is out of range, this function will return 0.
3690 	/// Otherwise, it will return the size of the buffer required for the name.
3691 	uint GetComponentName(const(char)* pchRenderModelName, uint unComponentIndex, char* pchComponentName, uint unComponentNameLen);
3692 	/// Get the button mask for all buttons associated with this component
3693 	/// If no buttons (or axes) are associated with this component, return 0
3694 	/// Note: multiple components may be associated with the same button. Ex: two grip buttons on a single controller.
3695 	/// Note: A single component may be associated with multiple buttons. Ex: A trackpad which also provides "D-pad" functionality
3696 	ulong GetComponentButtonMask(const(char)* pchRenderModelName, const(char)* pchComponentName);
3697 	/// Use this to get the render model name for the specified rendermode/component combination, to be passed to LoadRenderModel.
3698 	/// If the component name is out of range, this function will return 0.
3699 	/// Otherwise, it will return the size of the buffer required for the name.
3700 	uint GetComponentRenderModelName(const(char)* pchRenderModelName, const(char)* pchComponentName, char* pchComponentRenderModelName, uint unComponentRenderModelNameLen);
3701 	/// Use this to query information about the component, as a function of the controller state.
3702 	/// For dynamic controller components (ex: trigger) values will reflect component motions
3703 	/// For static components this will return a consistent value independent of the VRControllerState_t
3704 	/// If the pchRenderModelName or pchComponentName is invalid, this will return false (and transforms will be set to identity).
3705 	/// Otherwise, return true
3706 	/// Note: For dynamic objects, visibility may be dynamic. (I.e., true/false will be returned based on controller state and controller mode state )
3707 	bool GetComponentStateForDevicePath(const(char)* pchRenderModelName, const(char)* pchComponentName, VRInputValueHandle_t devicePath, const(RenderModel_ControllerMode_State_t)* pState, RenderModel_ComponentState_t* pComponentState);
3708 	bool GetComponentState(const(char)* pchRenderModelName, const(char)* pchComponentName, const(VRControllerState_t)* pControllerState, const(RenderModel_ControllerMode_State_t)* pState, RenderModel_ComponentState_t* pComponentState); /// This version of GetComponentState takes a controller state block instead of an action origin. This function is deprecated. You should use the new input system and GetComponentStateForDevicePath instead.
3709 	bool RenderModelHasComponent(const(char)* pchRenderModelName, const(char)* pchComponentName); /// Returns true if the render model has a component with the specified name
3710 	uint GetRenderModelThumbnailURL(const(char)* pchRenderModelName, char* pchThumbnailURL, uint unThumbnailURLLen, EVRRenderModelError* peError); /// Returns the URL of the thumbnail image for this rendermodel
3711 	uint GetRenderModelOriginalPath(const(char)* pchRenderModelName, char* pchOriginalPath, uint unOriginalPathLen, EVRRenderModelError* peError); /// Provides a render model path that will load the unskinned model if the model name provided has been replace by the user. If the model hasn't been replaced the path value will still be a valid path to load the model. Pass this to LoadRenderModel_Async, etc. to load the model.
3712 	const(char)* GetRenderModelErrorNameFromEnum(EVRRenderModelError error); /// Returns a string for a render model error
3713 }
3714 
3715 ///
3716 abstract class IVRNotifications
3717 {
3718 	/// Create a notification and enqueue it to be shown to the user. An overlay handle is required to create a notification, as otherwise it would be impossible for a user to act on it. To create a two-line notification, use a line break ('
3719 	/// ') to split the text into two lines. The pImage argument may be NULL, in which case the specified overlay's icon will be used instead.
3720 	EVRNotificationError CreateNotification(VROverlayHandle_t ulOverlayHandle, ulong ulUserValue, EVRNotificationType type, const(char)* pchText, EVRNotificationStyle style, const(NotificationBitmap_t)* pImage, VRNotificationId* pNotificationId);
3721 	EVRNotificationError RemoveNotification(VRNotificationId notificationId); /// Destroy a notification, hiding it first if it currently shown to the user.
3722 }
3723 
3724 ///
3725 abstract class IVRSettings
3726 {
3727 	const(char)* GetSettingsErrorNameFromEnum(EVRSettingsError eError); ///
3728 	void SetBool(const(char)* pchSection, const(char)* pchSettingsKey, bool bValue, EVRSettingsError* peError); ///
3729 	void SetInt32(const(char)* pchSection, const(char)* pchSettingsKey, int nValue, EVRSettingsError* peError); ///
3730 	void SetFloat(const(char)* pchSection, const(char)* pchSettingsKey, float flValue, EVRSettingsError* peError); ///
3731 	void SetString(const(char)* pchSection, const(char)* pchSettingsKey, const(char)* pchValue, EVRSettingsError* peError); ///
3732 	bool GetBool(const(char)* pchSection, const(char)* pchSettingsKey, EVRSettingsError* peError); /// Users of the system need to provide a proper default in default.vrsettings in the resources/settings/ directory of either the runtime or the driver_xxx directory. Otherwise the default will be false, 0, 0.0 or ""
3733 	int GetInt32(const(char)* pchSection, const(char)* pchSettingsKey, EVRSettingsError* peError); ///
3734 	float GetFloat(const(char)* pchSection, const(char)* pchSettingsKey, EVRSettingsError* peError); ///
3735 	void GetString(const(char)* pchSection, const(char)* pchSettingsKey, char* pchValue, uint unValueLen, EVRSettingsError* peError); ///
3736 	void RemoveSection(const(char)* pchSection, EVRSettingsError* peError); ///
3737 	void RemoveKeyInSection(const(char)* pchSection, const(char)* pchSettingsKey, EVRSettingsError* peError); ///
3738 }
3739 
3740 ///
3741 abstract class IVRScreenshots
3742 {
3743 	/// Request a screenshot of the requested type. A request of the VRScreenshotType_Stereo type will always work. Other types will depend on the underlying application support.
3744 	///  The first file name is for the preview image and should be a regular screenshot (ideally from the left eye). The second is the VR screenshot in the correct format. They should be in the same aspect ratio.  Formats per type: VRScreenshotType_Mono: the VR filename is ignored (can be nullptr), this is a normal flat single shot. VRScreenshotType_Stereo:  The VR image should be a side-by-side with the left eye image on the left. VRScreenshotType_Cubemap: The VR image should be six square images composited horizontally.
3745 	///  VRScreenshotType_StereoPanorama: above/below with left eye panorama being the above image.  Image is typically square with the panorama being 2x horizontal.
3746 	///   Note that the VR dashboard will call this function when the user presses the screenshot binding (currently System Button + Trigger).  If Steam is running, the destination file names will be in %TEMP% and will be copied into Steam's screenshot library for the running application once SubmitScreenshot() is called.
3747 	///  If Steam is not running, the paths will be in the user's documents folder under DocumentsSteamVRScreenshots. Other VR applications can call this to initiate a screenshot outside of user control.
3748 	///  The destination file names do not need an extension, will be replaced with the correct one for the format which is currently .png.
3749 	EVRScreenshotError RequestScreenshot(ScreenshotHandle_t* pOutScreenshotHandle, EVRScreenshotType type, const(char)* pchPreviewFilename, const(char)* pchVRFilename);
3750 	/// Called by the running VR application to indicate that it wishes to be in charge of screenshots.  If the application does not call this, the Compositor will only support VRScreenshotType_Stereo screenshots that will be captured without notification to the running app.
3751 	///  Once hooked your application will receive a VREvent_RequestScreenshot event when the user presses the buttons to take a screenshot. */
3752 	EVRScreenshotError HookScreenshot(const(EVRScreenshotType)* pSupportedTypes, int numTypes);
3753 	EVRScreenshotType GetScreenshotPropertyType(ScreenshotHandle_t screenshotHandle, EVRScreenshotError* pError); /// When your application receives a VREvent_RequestScreenshot event, call these functions to get the details of the screenshot request. */
3754 	uint GetScreenshotPropertyFilename(ScreenshotHandle_t screenshotHandle, EVRScreenshotPropertyFilenames filenameType, char* pchFilename, uint cchFilename, EVRScreenshotError* pError); /// Get the filename for the preview or vr image (see vr::EScreenshotPropertyFilenames).  The return value is the size of the string.   */
3755 	EVRScreenshotError UpdateScreenshotProgress(ScreenshotHandle_t screenshotHandle, float flProgress); /// Call this if the application is taking the screen shot will take more than a few ms processing. This will result in an overlay being presented that shows a completion bar. */
3756 	/// Tells the compositor to take an internal screenshot of type VRScreenshotType_Stereo. It will take the current submitted scene textures of the running application and write them into the preview image and a side-by-side file for the VR image.
3757 	///  This is similar to request screenshot, but doesn't ever talk to the application, just takes the shot and submits. */
3758 	EVRScreenshotError TakeStereoScreenshot(ScreenshotHandle_t* pOutScreenshotHandle, const(char)* pchPreviewFilename, const(char)* pchVRFilename);
3759 	/// Submit the completed screenshot.  If Steam is running this will call into the Steam client and upload the screenshot to the screenshots section of the library for the running application.  If Steam is not running, this function will display a notification to the user that the screenshot was taken. The paths should be full paths with extensions.
3760 	///  File paths should be absolute including extensions. screenshotHandle can be k_unScreenshotHandleInvalid if this was a new shot taking by the app to be saved and not initiated by a user (achievement earned or something) */
3761 	EVRScreenshotError SubmitScreenshot(ScreenshotHandle_t screenshotHandle, EVRScreenshotType type, const(char)* pchSourcePreviewFilename, const(char)* pchSourceVRFilename);
3762 }
3763 
3764 ///
3765 abstract class IVRResources
3766 {
3767 	/// Loads the specified resource into the provided buffer if large enough.
3768 	/// Returns the size in bytes of the buffer required to hold the specified resource.
3769 	uint LoadSharedResource(const(char)* pchResourceName, char* pchBuffer, uint unBufferLen);
3770 	/// Provides the full path to the specified resource. Resource names can include named directories for drivers and other things, and this resolves all of those and returns the actual physical path.
3771 	/// pchResourceTypeDirectory is the subdirectory of resources to look in.
3772 	uint GetResourceFullPath(const(char)* pchResourceName, const(char)* pchResourceTypeDirectory, char* pchPathBuffer, uint unBufferLen);
3773 }
3774 
3775 ///
3776 abstract class IVRDriverManager
3777 {
3778 	uint GetDriverCount(); ///
3779 	uint GetDriverName(DriverId_t nDriver, char* pchValue, uint unBufferSize); /// Returns the length of the number of bytes necessary to hold this string including the trailing null.
3780 	DriverHandle_t GetDriverHandle(const(char)* pchDriverName); ///
3781 	bool IsEnabled(DriverId_t nDriver); ///
3782 }
3783 
3784 ///
3785 abstract class IVRInput
3786 {
3787 	EVRInputError SetActionManifestPath(const(char)* pchActionManifestPath); /// Sets the path to the action manifest JSON file that is used by this application. If this information was set on the Steam partner site, calls to this function are ignored. If the Steam partner site setting and the path provided by this call are different, VRInputError_MismatchedActionManifest is returned.  This call must be made before the first call to UpdateActionState or IVRSystem::PollNextEvent.
3788 	EVRInputError GetActionSetHandle(const(char)* pchActionSetName, VRActionSetHandle_t* pHandle); /// Returns a handle for an action set. This handle is used for all performance-sensitive calls.
3789 	EVRInputError GetActionHandle(const(char)* pchActionName, VRActionHandle_t* pHandle); /// Returns a handle for an action. This handle is used for all performance-sensitive calls.
3790 	EVRInputError GetInputSourceHandle(const(char)* pchInputSourcePath, VRInputValueHandle_t* pHandle); /// Returns a handle for any path in the input system. E.g. /user/hand/right
3791 	EVRInputError UpdateActionState(VRActiveActionSet_t* pSets, uint unSizeOfVRSelectedActionSet_t, uint unSetCount); /// Reads the current state into all actions. After this call, the results of Get*Action calls  will be the same until the next call to UpdateActionState.
3792 	EVRInputError GetDigitalActionData(VRActionHandle_t action, InputDigitalActionData_t* pActionData, uint unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); /// Reads the state of a digital action given its handle. This will return VRInputError_WrongType if the type of action is something other than digital
3793 	EVRInputError GetAnalogActionData(VRActionHandle_t action, InputAnalogActionData_t* pActionData, uint unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); /// Reads the state of an analog action given its handle. This will return VRInputError_WrongType if the type of action is something other than analog
3794 	EVRInputError GetPoseActionDataRelativeToNow(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, InputPoseActionData_t* pActionData, uint unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); /// Reads the state of a pose action given its handle for the number of seconds relative to now. This will generally be called with negative times from the fUpdateTime fields in other actions.
3795 	EVRInputError GetPoseActionDataForNextFrame(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, InputPoseActionData_t* pActionData, uint unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); /// Reads the state of a pose action given its handle. The returned values will match the values returned by the last call to IVRCompositor::WaitGetPoses().
3796 	EVRInputError GetSkeletalActionData(VRActionHandle_t action, InputSkeletalActionData_t* pActionData, uint unActionDataSize); /// Reads the state of a skeletal action given its handle.
3797 	EVRInputError GetDominantHand(ETrackedControllerRole* peDominantHand); /// Returns the current dominant hand for the user for this application. This function will only return success for applications which include "supports_dominant_hand_setting": true in their action manifests. The dominant hand will only change after a call to UpdateActionState, and the action data returned after that point will use the new dominant hand.
3798 	EVRInputError SetDominantHand(ETrackedControllerRole eDominantHand); /// Sets the dominant hand for the user for this application.
3799 	EVRInputError GetBoneCount(VRActionHandle_t action, uint* pBoneCount); /// Reads the number of bones in skeleton associated with the given action
3800 	EVRInputError GetBoneHierarchy(VRActionHandle_t action, BoneIndex_t* pParentIndices, uint unIndexArayCount); /// Fills the given array with the index of each bone's parent in the skeleton associated with the given action
3801 	EVRInputError GetBoneName(VRActionHandle_t action, BoneIndex_t nBoneIndex, char* pchBoneName, uint unNameBufferSize); /// Fills the given buffer with the name of the bone at the given index in the skeleton associated with the given action
3802 	EVRInputError GetSkeletalReferenceTransforms(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalReferencePose eReferencePose, VRBoneTransform_t* pTransformArray, uint unTransformArrayCount); /// Fills the given buffer with the transforms for a specific static skeletal reference pose
3803 	EVRInputError GetSkeletalTrackingLevel(VRActionHandle_t action, EVRSkeletalTrackingLevel* pSkeletalTrackingLevel); /// Reads the level of accuracy to which the controller is able to track the user to recreate a skeletal pose
3804 	EVRInputError GetSkeletalBoneData(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, VRBoneTransform_t* pTransformArray, uint unTransformArrayCount); /// Reads the state of the skeletal bone data associated with this action and copies it into the given buffer.
3805 	EVRInputError GetSkeletalSummaryData(VRActionHandle_t action, EVRSummaryType eSummaryType, VRSkeletalSummaryData_t* pSkeletalSummaryData); /// Reads summary information about the current pose of the skeleton associated with the given action.  
3806 	EVRInputError GetSkeletalBoneDataCompressed(VRActionHandle_t action, EVRSkeletalMotionRange eMotionRange, void* pvCompressedData, uint unCompressedSize, uint* punRequiredCompressedSize); /// Reads the state of the skeletal bone data in a compressed form that is suitable for sending over the network. The required buffer size will never exceed ( sizeof(VR_BoneTransform_t)*boneCount + 2). Usually the size will be much smaller.
3807 	EVRInputError DecompressSkeletalBoneData(const(void)* pvCompressedBuffer, uint unCompressedBufferSize, EVRSkeletalTransformSpace eTransformSpace, VRBoneTransform_t* pTransformArray, uint unTransformArrayCount); /// Turns a compressed buffer from GetSkeletalBoneDataCompressed and turns it back into a bone transform array.
3808 	EVRInputError TriggerHapticVibrationAction(VRActionHandle_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, VRInputValueHandle_t ulRestrictToDevice); /// Triggers a haptic event as described by the specified action
3809 	EVRInputError GetActionOrigins(VRActionSetHandle_t actionSetHandle, VRActionHandle_t digitalActionHandle, VRInputValueHandle_t* originsOut, uint originOutCount); /// Retrieve origin handles for an action
3810 	EVRInputError GetOriginLocalizedName(VRInputValueHandle_t origin, char* pchNameArray, uint unNameArraySize, int unStringSectionsToInclude); /// Retrieves the name of the origin in the current language. unStringSectionsToInclude is a bitfield of values in EVRInputStringBits that allows the application to specify which parts of the origin's information it wants a string for.
3811 	EVRInputError GetOriginTrackedDeviceInfo(VRInputValueHandle_t origin, InputOriginInfo_t* pOriginInfo, uint unOriginInfoSize); /// Retrieves useful information for the origin of this action
3812 	EVRInputError GetActionBindingInfo(VRActionHandle_t action, InputBindingInfo_t* pOriginInfo, uint unBindingInfoSize, uint unBindingInfoCount, uint* punReturnedBindingInfoCount); /// Retrieves useful information about the bindings for an action
3813 	EVRInputError ShowActionOrigins(VRActionSetHandle_t actionSetHandle, VRActionHandle_t ulActionHandle); /// Shows the current binding for the action in-headset
3814 	EVRInputError ShowBindingsForActionSet(VRActiveActionSet_t* pSets, uint unSizeOfVRSelectedActionSet_t, uint unSetCount, VRInputValueHandle_t originToHighlight); /// Shows the current binding all the actions in the specified action sets
3815 	EVRInputError GetComponentStateForBinding(const(char)* pchRenderModelName, const(char)* pchComponentName, const(InputBindingInfo_t)* pOriginInfo, uint unBindingInfoSize, uint unBindingInfoCount, RenderModel_ComponentState_t* pComponentState); /// Use this to query what action on the component returned by GetOriginTrackedDeviceInfo would trigger this binding.
3816 	bool IsUsingLegacyInput(); /// Legacy Input
3817 	EVRInputError OpenBindingUI(const(char)* pchAppKey, VRActionSetHandle_t ulActionSetHandle, VRInputValueHandle_t ulDeviceHandle, bool bShowOnDesktop); /// Opens the binding user interface. If no app key is provided it will use the key from the calling process. If no set is provided it will open to the root of the app binding page.
3818 	EVRInputError GetBindingVariant(VRInputValueHandle_t ulDevicePath, char* pchVariantArray, uint unVariantArraySize); /// Returns the variant set in the current bindings. If the binding doesn't include a variant setting, this function  will return an empty string
3819 }
3820 
3821 ///
3822 abstract class IVRIOBuffer
3823 {
3824 	EIOBufferError Open(const(char)* pchPath, EIOBufferMode mode, uint unElementSize, uint unElements, IOBufferHandle_t* pulBuffer); /// opens an existing or creates a new IOBuffer of unSize bytes
3825 	EIOBufferError Close(IOBufferHandle_t ulBuffer); /// closes a previously opened or created buffer
3826 	EIOBufferError Read(IOBufferHandle_t ulBuffer, void* pDst, uint unBytes, uint* punRead); /// reads up to unBytes from buffer into *pDst, returning number of bytes read in *punRead
3827 	EIOBufferError Write(IOBufferHandle_t ulBuffer, void* pSrc, uint unBytes); /// writes unBytes of data from *pSrc into a buffer.
3828 	PropertyContainerHandle_t PropertyContainer(IOBufferHandle_t ulBuffer); /// retrieves the property container of an buffer.
3829 	bool HasReaders(IOBufferHandle_t ulBuffer); /// inexpensively checks for readers to allow writers to fast-fail potentially expensive copies and writes.
3830 }
3831 
3832 ///
3833 abstract class IVRSpatialAnchors
3834 {
3835 	EVRSpatialAnchorError CreateSpatialAnchorFromDescriptor(const(char)* pchDescriptor, SpatialAnchorHandle_t* pHandleOut); /// Returns a handle for an spatial anchor described by "descriptor".  On success, pHandle will contain a handle valid for this session.  Caller can wait for an event or occasionally poll GetSpatialAnchorPose() to find the virtual coordinate associated with this anchor.
3836 	/// Returns a handle for an new spatial anchor at pPose.  On success, pHandle will contain a handle valid for this session.  Caller can wait for an event or occasionally poll GetSpatialAnchorDescriptor() to find the permanent descriptor for this pose. The result of GetSpatialAnchorPose() may evolve from this initial position if the driver chooses to update it.
3837 	///  The anchor will be associated with the driver that provides unDeviceIndex, and the driver may use that specific device as a hint for how to best create the anchor.
3838 	///  The eOrigin must match whatever tracking origin you are working in (seated/standing/raw). This should be called when the user is close to (and ideally looking at/interacting with) the target physical location.  At that moment, the driver will have the most information about how to recover that physical point in the future, and the quality of the anchor (when the descriptor is re-used) will be highest. The caller may decide to apply offsets from this initial pose, but is advised to stay relatively close to the  original pose location for highest fidelity.
3839 	EVRSpatialAnchorError CreateSpatialAnchorFromPose(TrackedDeviceIndex_t unDeviceIndex, ETrackingUniverseOrigin eOrigin, SpatialAnchorPose_t* pPose, SpatialAnchorHandle_t* pHandleOut);
3840 	EVRSpatialAnchorError GetSpatialAnchorPose(SpatialAnchorHandle_t unHandle, ETrackingUniverseOrigin eOrigin, SpatialAnchorPose_t* pPoseOut); /// Get the pose for a given handle.  This is intended to be cheap enough to call every frame (or fairly often) so that the driver can refine this position when it has more information available.
3841 	/// Get the descriptor for a given handle.  This will be empty for handles where the driver has not yet built a descriptor.  It will be the application-supplied descriptor for previously saved anchors that the application is requesting poses for.  If the driver has called UpdateSpatialAnchorDescriptor() already in this session, it will be the descriptor provided by the driver.
3842 	///  Returns true if the descriptor fits into the buffer, else false.  Buffer size should be at least k_unMaxSpatialAnchorDescriptorSize.
3843 	EVRSpatialAnchorError GetSpatialAnchorDescriptor(SpatialAnchorHandle_t unHandle, char* pchDescriptorOut, uint* punDescriptorBufferLenInOut);
3844 }
3845 
3846 ///
3847 abstract class IVRDebug
3848 {
3849 	/// Create a vr profiler discrete event (point) 
3850 	/// The event will be associated with the message provided in pchMessage, and the current time will be used as the event timestamp.
3851 	EVRDebugError EmitVrProfilerEvent(const(char)* pchMessage);
3852 	/// Create an vr profiler duration event (line) 
3853 	/// The current time will be used as the timestamp for the start of the line. On success, pHandleOut will contain a handle valid for terminating this event.
3854 	EVRDebugError BeginVrProfilerEvent(VrProfilerEventHandle_t* pHandleOut);
3855 	/// Terminate a vr profiler event 
3856 	/// The event associated with hHandle will be considered completed when this method is called. The current time will be used assocaited to the termination time of the event, and pchMessage will be used as the event title.
3857 	EVRDebugError FinishVrProfilerEvent(VrProfilerEventHandle_t hHandle, const(char)* pchMessage);
3858 	uint DriverDebugRequest(TrackedDeviceIndex_t unDeviceIndex, const(char)* pchRequest, char* pchResponseBuffer, uint unResponseBufferSize); /// Sends a request to the driver for the specified device and returns the response. The maximum response size is 32k, but this method can be called with a smaller buffer. If the response exceeds the size of the buffer, it is truncated. The size of the response including its terminating null is returned.
3859 }
3860