2 * Copyright 2021 RĂ©mi Bernon for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #pragma winrt ns_prefix
24 import
"inspectable.idl";
25 import
"asyncinfo.idl";
26 import
"eventtoken.idl";
27 import
"windowscontracts.idl";
28 import
"windows.foundation.idl";
29 import
"windows.foundation.numerics.idl";
32 namespace Windows.Gaming.Input.ForceFeedback
{
33 typedef enum ForceFeedbackEffectAxes ForceFeedbackEffectAxes
;
34 typedef enum ForceFeedbackEffectState ForceFeedbackEffectState
;
35 typedef enum ForceFeedbackLoadEffectResult ForceFeedbackLoadEffectResult
;
36 typedef enum PeriodicForceEffectKind PeriodicForceEffectKind
;
37 typedef enum ConditionForceEffectKind ConditionForceEffectKind
;
38 interface IForceFeedbackEffect
;
39 interface IPeriodicForceEffect
;
40 interface IPeriodicForceEffectFactory
;
41 interface IConditionForceEffect
;
42 interface IConditionForceEffectFactory
;
43 interface IConstantForceEffect
;
44 interface IRampForceEffect
;
45 runtimeclass ForceFeedbackMotor
;
46 runtimeclass PeriodicForceEffect
;
47 runtimeclass ConditionForceEffect
;
48 runtimeclass ConstantForceEffect
;
49 runtimeclass RampForceEffect
;
52 interface Windows.Foundation.AsyncOperationCompletedHandler
<Windows.Gaming.Input.ForceFeedback.ForceFeedbackLoadEffectResult
>;
53 interface Windows.Foundation.IAsyncOperation
<Windows.Gaming.Input.ForceFeedback.ForceFeedbackLoadEffectResult
>;
54 interface Windows.Foundation.Collections.IIterator
<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor
*>;
55 interface Windows.Foundation.Collections.IIterable
<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor
*>;
56 interface Windows.Foundation.Collections.IVectorView
<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor
*>;
57 interface Windows.Foundation.Collections.IVector
<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor
*>;
61 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
64 enum ForceFeedbackEffectAxes
72 [contract
(Windows.Foundation.UniversalApiContract
, 3.0)]
73 enum ForceFeedbackEffectState
81 [contract
(Windows.Foundation.UniversalApiContract
, 3.0)]
82 enum ForceFeedbackLoadEffectResult
85 EffectStorageFull
= 1,
86 EffectNotSupported
= 2
89 [contract
(Windows.Foundation.UniversalApiContract
, 3.0)]
90 enum PeriodicForceEffectKind
99 [contract
(Windows.Foundation.UniversalApiContract
, 3.0)]
100 enum ConditionForceEffectKind
109 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
110 uuid(a17fba0c
-2ae4
-48c2
-8063-eabd0777cb89
)
112 interface IForceFeedbackEffect
: IInspectable
114 [propget] HRESULT Gain
([out, retval] DOUBLE *value
);
115 [propput] HRESULT Gain
([in] DOUBLE value
);
116 [propget] HRESULT State
([out, retval] Windows.Gaming.Input.ForceFeedback.ForceFeedbackEffectState
*value
);
122 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
123 exclusiveto
(Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor
),
124 uuid(8d3d417c
-a5ea
-4516-8026-2b00f74ef6e5
)
126 interface IForceFeedbackMotor
: IInspectable
128 [propget] HRESULT AreEffectsPaused
([out, retval] boolean *value
);
129 [propget] HRESULT MasterGain
([out, retval] DOUBLE *value
);
130 [propput] HRESULT MasterGain
([in] DOUBLE value
);
131 [propget] HRESULT IsEnabled
([out, retval] boolean *value
);
132 [propget] HRESULT SupportedAxes
([out, retval] Windows.Gaming.Input.ForceFeedback.ForceFeedbackEffectAxes
*value
);
133 HRESULT LoadEffectAsync
([in] Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
*effect
,
134 [out, retval] Windows.Foundation.IAsyncOperation
<Windows.Gaming.Input.ForceFeedback.ForceFeedbackLoadEffectResult
> **async_op
);
135 HRESULT PauseAllEffects
();
136 HRESULT ResumeAllEffects
();
137 HRESULT StopAllEffects
();
138 HRESULT TryDisableAsync
([out, retval] Windows.Foundation.IAsyncOperation
<boolean> **async_op
);
139 HRESULT TryEnableAsync
([out, retval] Windows.Foundation.IAsyncOperation
<boolean> **async_op
);
140 HRESULT TryResetAsync
([out, retval] Windows.Foundation.IAsyncOperation
<boolean> **async_op
);
141 HRESULT TryUnloadEffectAsync
([in] Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
*effect
,
142 [out, retval] Windows.Foundation.IAsyncOperation
<boolean> **async_op
);
146 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
147 exclusiveto
(Windows.Gaming.Input.ForceFeedback.PeriodicForceEffect
),
148 uuid(5c5138d7
-fc75
-4d52
-9a0a
-efe4cab5fe64
)
150 interface IPeriodicForceEffect
: IInspectable
151 requires Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
153 [propget] HRESULT Kind
([out, retval] Windows.Gaming.Input.ForceFeedback.PeriodicForceEffectKind
*value
);
154 HRESULT SetParameters
([in] Windows.Foundation.Numerics.Vector3 vector
, [in] FLOAT frequency
, [in] FLOAT phase
,
155 [in] FLOAT bias
, [in] Windows.Foundation.TimeSpan duration
);
156 HRESULT SetParametersWithEnvelope
([in] Windows.Foundation.Numerics.Vector3 vector
, [in] FLOAT frequency
, [in] FLOAT phase
,
157 [in] FLOAT bias
, [in] FLOAT attack_gain
, [in] FLOAT sustain_gain
, [in] FLOAT release_gain
,
158 [in] Windows.Foundation.TimeSpan start_delay
, [in] Windows.Foundation.TimeSpan attack_duration
,
159 [in] Windows.Foundation.TimeSpan sustain_duration
, [in] Windows.Foundation.TimeSpan release_duration
,
160 [in] UINT32 repeat_count
);
164 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
165 exclusiveto
(Windows.Gaming.Input.ForceFeedback.PeriodicForceEffect
),
166 uuid(6f62eb1a
-9851-477b
-b318
-35ecaa15070f
)
168 interface IPeriodicForceEffectFactory
: IInspectable
170 HRESULT CreateInstance
([in] Windows.Gaming.Input.ForceFeedback.PeriodicForceEffectKind kind
,
171 [out, retval] Windows.Gaming.Input.ForceFeedback.PeriodicForceEffect
**value
);
175 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
176 exclusiveto
(Windows.Gaming.Input.ForceFeedback.ConditionForceEffect
),
177 uuid(32d1ea68
-3695-4e69
-85c0
-cd1944189140
)
179 interface IConditionForceEffect
: IInspectable
180 requires Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
182 [propget] HRESULT Kind
([out, retval] Windows.Gaming.Input.ForceFeedback.ConditionForceEffectKind
*value
);
183 HRESULT SetParameters
([in] Windows.Foundation.Numerics.Vector3 direction
, [in] FLOAT positive_coeff
,
184 [in] FLOAT negative_coeff
, [in] FLOAT max_positive_magnitude
, [in] FLOAT max_negative_magnitude
,
185 [in] FLOAT deadzone
, [in] FLOAT bias
);
189 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
190 exclusiveto
(Windows.Gaming.Input.ForceFeedback.ConditionForceEffect
),
191 uuid(91a99264
-1810-4eb6
-a773
-bfd3b8cddbab
)
193 interface IConditionForceEffectFactory
: IInspectable
195 HRESULT CreateInstance
([in] Windows.Gaming.Input.ForceFeedback.ConditionForceEffectKind kind
,
196 [out, retval] Windows.Gaming.Input.ForceFeedback.ConditionForceEffect
**value
);
200 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
201 exclusiveto
(Windows.Gaming.Input.ForceFeedback.ConstantForceEffect
),
202 uuid(9bfa0140
-f3c7
-415c
-b068
-0f068734bce0
)
204 interface IConstantForceEffect
: IInspectable
205 requires Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
207 HRESULT SetParameters
([in] Windows.Foundation.Numerics.Vector3 vector
, [in] Windows.Foundation.TimeSpan duration
);
208 HRESULT SetParametersWithEnvelope
([in] Windows.Foundation.Numerics.Vector3 vector
, [in] FLOAT attack_gain
,
209 [in] FLOAT sustain_gain
, [in] FLOAT release_gain
, [in] Windows.Foundation.TimeSpan start_delay
,
210 [in] Windows.Foundation.TimeSpan attack_duration
, [in] Windows.Foundation.TimeSpan sustain_duration
,
211 [in] Windows.Foundation.TimeSpan release_duration
, [in] UINT32 repeat_count
);
215 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
216 exclusiveto
(Windows.Gaming.Input.ForceFeedback.RampForceEffect
),
217 uuid(f1f81259
-1ca6
-4080-b56d
-b43f3354d052
)
219 interface IRampForceEffect
: IInspectable
220 requires Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
222 HRESULT SetParameters
([in] Windows.Foundation.Numerics.Vector3 start_vector
, [in] Windows.Foundation.Numerics.Vector3 end_vector
,
223 [in] Windows.Foundation.TimeSpan duration
);
224 HRESULT SetParametersWithEnvelope
([in] Windows.Foundation.Numerics.Vector3 start_vector
, [in] Windows.Foundation.Numerics.Vector3 end_vector
,
225 [in] FLOAT attack_gain
, [in] FLOAT sustain_gain
, [in] FLOAT release_gain
, [in] Windows.Foundation.TimeSpan start_delay
,
226 [in] Windows.Foundation.TimeSpan attack_duration
, [in] Windows.Foundation.TimeSpan sustain_duration
,
227 [in] Windows.Foundation.TimeSpan release_duration
, [in] UINT32 repeat_count
);
231 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
232 marshaling_behavior
(agile
),
235 runtimeclass ForceFeedbackMotor
237 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackMotor
;
241 activatable
(Windows.Gaming.Input.ForceFeedback.IPeriodicForceEffectFactory
, Windows.Foundation.UniversalApiContract
, 3.0),
242 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
243 marshaling_behavior
(agile
),
246 runtimeclass PeriodicForceEffect
248 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
;
249 interface Windows.Gaming.Input.ForceFeedback.IPeriodicForceEffect
;
253 activatable
(Windows.Gaming.Input.ForceFeedback.IConditionForceEffectFactory
, Windows.Foundation.UniversalApiContract
, 3.0),
254 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
255 marshaling_behavior
(agile
),
258 runtimeclass ConditionForceEffect
260 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
;
261 interface Windows.Gaming.Input.ForceFeedback.IConditionForceEffect
;
265 activatable
(Windows.Foundation.UniversalApiContract
, 3.0),
266 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
267 marshaling_behavior
(agile
),
270 runtimeclass ConstantForceEffect
272 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
;
273 interface Windows.Gaming.Input.ForceFeedback.IConstantForceEffect
;
277 activatable
(Windows.Foundation.UniversalApiContract
, 3.0),
278 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
279 marshaling_behavior
(agile
),
282 runtimeclass RampForceEffect
284 [default] interface Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect
;
285 interface Windows.Gaming.Input.ForceFeedback.IRampForceEffect
;