master
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7#ifndef _JOYSTICKAPI_H_
8#define _JOYSTICKAPI_H_
9
10#include <apiset.h>
11#include <apisetcconv.h>
12
13#include <mmsyscom.h>
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
20
21#ifndef MMNOJOY
22
23#define JOYERR_NOERROR (0)
24#define JOYERR_PARMS (JOYERR_BASE+5)
25#define JOYERR_NOCANDO (JOYERR_BASE+6)
26#define JOYERR_UNPLUGGED (JOYERR_BASE+7)
27
28#define JOY_BUTTON1 0x0001
29#define JOY_BUTTON2 0x0002
30#define JOY_BUTTON3 0x0004
31#define JOY_BUTTON4 0x0008
32#define JOY_BUTTON1CHG 0x0100
33#define JOY_BUTTON2CHG 0x0200
34#define JOY_BUTTON3CHG 0x0400
35#define JOY_BUTTON4CHG 0x0800
36
37#define JOY_BUTTON5 __MSABI_LONG(0x00000010)
38#define JOY_BUTTON6 __MSABI_LONG(0x00000020)
39#define JOY_BUTTON7 __MSABI_LONG(0x00000040)
40#define JOY_BUTTON8 __MSABI_LONG(0x00000080)
41#define JOY_BUTTON9 __MSABI_LONG(0x00000100)
42#define JOY_BUTTON10 __MSABI_LONG(0x00000200)
43#define JOY_BUTTON11 __MSABI_LONG(0x00000400)
44#define JOY_BUTTON12 __MSABI_LONG(0x00000800)
45#define JOY_BUTTON13 __MSABI_LONG(0x00001000)
46#define JOY_BUTTON14 __MSABI_LONG(0x00002000)
47#define JOY_BUTTON15 __MSABI_LONG(0x00004000)
48#define JOY_BUTTON16 __MSABI_LONG(0x00008000)
49#define JOY_BUTTON17 __MSABI_LONG(0x00010000)
50#define JOY_BUTTON18 __MSABI_LONG(0x00020000)
51#define JOY_BUTTON19 __MSABI_LONG(0x00040000)
52#define JOY_BUTTON20 __MSABI_LONG(0x00080000)
53#define JOY_BUTTON21 __MSABI_LONG(0x00100000)
54#define JOY_BUTTON22 __MSABI_LONG(0x00200000)
55#define JOY_BUTTON23 __MSABI_LONG(0x00400000)
56#define JOY_BUTTON24 __MSABI_LONG(0x00800000)
57#define JOY_BUTTON25 __MSABI_LONG(0x01000000)
58#define JOY_BUTTON26 __MSABI_LONG(0x02000000)
59#define JOY_BUTTON27 __MSABI_LONG(0x04000000)
60#define JOY_BUTTON28 __MSABI_LONG(0x08000000)
61#define JOY_BUTTON29 __MSABI_LONG(0x10000000)
62#define JOY_BUTTON30 __MSABI_LONG(0x20000000)
63#define JOY_BUTTON31 __MSABI_LONG(0x40000000)
64#define JOY_BUTTON32 __MSABI_LONG(0x80000000)
65
66#define JOY_POVCENTERED ((WORD)-1)
67#define JOY_POVFORWARD 0
68#define JOY_POVRIGHT 9000
69#define JOY_POVBACKWARD 18000
70#define JOY_POVLEFT 27000
71
72#define JOY_RETURNX __MSABI_LONG(0x00000001)
73#define JOY_RETURNY __MSABI_LONG(0x00000002)
74#define JOY_RETURNZ __MSABI_LONG(0x00000004)
75#define JOY_RETURNR __MSABI_LONG(0x00000008)
76#define JOY_RETURNU __MSABI_LONG(0x00000010)
77#define JOY_RETURNV __MSABI_LONG(0x00000020)
78#define JOY_RETURNPOV __MSABI_LONG(0x00000040)
79#define JOY_RETURNBUTTONS __MSABI_LONG(0x00000080)
80#define JOY_RETURNRAWDATA __MSABI_LONG(0x00000100)
81#define JOY_RETURNPOVCTS __MSABI_LONG(0x00000200)
82#define JOY_RETURNCENTERED __MSABI_LONG(0x00000400)
83#define JOY_USEDEADZONE __MSABI_LONG(0x00000800)
84#define JOY_RETURNALL (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV | JOY_RETURNBUTTONS)
85#define JOY_CAL_READALWAYS __MSABI_LONG(0x00010000)
86#define JOY_CAL_READXYONLY __MSABI_LONG(0x00020000)
87#define JOY_CAL_READ3 __MSABI_LONG(0x00040000)
88#define JOY_CAL_READ4 __MSABI_LONG(0x00080000)
89#define JOY_CAL_READXONLY __MSABI_LONG(0x00100000)
90#define JOY_CAL_READYONLY __MSABI_LONG(0x00200000)
91#define JOY_CAL_READ5 __MSABI_LONG(0x00400000)
92#define JOY_CAL_READ6 __MSABI_LONG(0x00800000)
93#define JOY_CAL_READZONLY __MSABI_LONG(0x01000000)
94#define JOY_CAL_READRONLY __MSABI_LONG(0x02000000)
95#define JOY_CAL_READUONLY __MSABI_LONG(0x04000000)
96#define JOY_CAL_READVONLY __MSABI_LONG(0x08000000)
97
98#define JOYSTICKID1 0
99#define JOYSTICKID2 1
100
101#define JOYCAPS_HASZ 0x0001
102#define JOYCAPS_HASR 0x0002
103#define JOYCAPS_HASU 0x0004
104#define JOYCAPS_HASV 0x0008
105#define JOYCAPS_HASPOV 0x0010
106#define JOYCAPS_POV4DIR 0x0020
107#define JOYCAPS_POVCTS 0x0040
108
109typedef struct tagJOYCAPSA {
110 WORD wMid;
111 WORD wPid;
112 CHAR szPname[MAXPNAMELEN];
113 UINT wXmin;
114 UINT wXmax;
115 UINT wYmin;
116 UINT wYmax;
117 UINT wZmin;
118 UINT wZmax;
119 UINT wNumButtons;
120 UINT wPeriodMin;
121 UINT wPeriodMax;
122 UINT wRmin;
123 UINT wRmax;
124 UINT wUmin;
125 UINT wUmax;
126 UINT wVmin;
127 UINT wVmax;
128 UINT wCaps;
129 UINT wMaxAxes;
130 UINT wNumAxes;
131 UINT wMaxButtons;
132 CHAR szRegKey[MAXPNAMELEN];
133 CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
134} JOYCAPSA, *PJOYCAPSA, *NPJOYCAPSA, *LPJOYCAPSA;
135
136typedef struct tagJOYCAPSW {
137 WORD wMid;
138 WORD wPid;
139 WCHAR szPname[MAXPNAMELEN];
140 UINT wXmin;
141 UINT wXmax;
142 UINT wYmin;
143 UINT wYmax;
144 UINT wZmin;
145 UINT wZmax;
146 UINT wNumButtons;
147 UINT wPeriodMin;
148 UINT wPeriodMax;
149 UINT wRmin;
150 UINT wRmax;
151 UINT wUmin;
152 UINT wUmax;
153 UINT wVmin;
154 UINT wVmax;
155 UINT wCaps;
156 UINT wMaxAxes;
157 UINT wNumAxes;
158 UINT wMaxButtons;
159 WCHAR szRegKey[MAXPNAMELEN];
160 WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
161} JOYCAPSW, *PJOYCAPSW, *NPJOYCAPSW, *LPJOYCAPSW;
162
163__MINGW_TYPEDEF_AW(JOYCAPS)
164__MINGW_TYPEDEF_AW(PJOYCAPS)
165__MINGW_TYPEDEF_AW(NPJOYCAPS)
166__MINGW_TYPEDEF_AW(LPJOYCAPS)
167
168typedef struct tagJOYCAPS2A {
169 WORD wMid;
170 WORD wPid;
171 CHAR szPname[MAXPNAMELEN];
172 UINT wXmin;
173 UINT wXmax;
174 UINT wYmin;
175 UINT wYmax;
176 UINT wZmin;
177 UINT wZmax;
178 UINT wNumButtons;
179 UINT wPeriodMin;
180 UINT wPeriodMax;
181 UINT wRmin;
182 UINT wRmax;
183 UINT wUmin;
184 UINT wUmax;
185 UINT wVmin;
186 UINT wVmax;
187 UINT wCaps;
188 UINT wMaxAxes;
189 UINT wNumAxes;
190 UINT wMaxButtons;
191 CHAR szRegKey[MAXPNAMELEN];
192 CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
193 GUID ManufacturerGuid;
194 GUID ProductGuid;
195 GUID NameGuid;
196} JOYCAPS2A, *PJOYCAPS2A, *NPJOYCAPS2A, *LPJOYCAPS2A;
197
198typedef struct tagJOYCAPS2W {
199 WORD wMid;
200 WORD wPid;
201 WCHAR szPname[MAXPNAMELEN];
202 UINT wXmin;
203 UINT wXmax;
204 UINT wYmin;
205 UINT wYmax;
206 UINT wZmin;
207 UINT wZmax;
208 UINT wNumButtons;
209 UINT wPeriodMin;
210 UINT wPeriodMax;
211 UINT wRmin;
212 UINT wRmax;
213 UINT wUmin;
214 UINT wUmax;
215 UINT wVmin;
216 UINT wVmax;
217 UINT wCaps;
218 UINT wMaxAxes;
219 UINT wNumAxes;
220 UINT wMaxButtons;
221 WCHAR szRegKey[MAXPNAMELEN];
222 WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
223 GUID ManufacturerGuid;
224 GUID ProductGuid;
225 GUID NameGuid;
226} JOYCAPS2W, *PJOYCAPS2W, *NPJOYCAPS2W, *LPJOYCAPS2W;
227
228__MINGW_TYPEDEF_AW(JOYCAPS2)
229__MINGW_TYPEDEF_AW(PJOYCAPS2)
230__MINGW_TYPEDEF_AW(NPJOYCAPS2)
231__MINGW_TYPEDEF_AW(LPJOYCAPS2)
232
233typedef struct joyinfo_tag {
234 UINT wXpos;
235 UINT wYpos;
236 UINT wZpos;
237 UINT wButtons;
238} JOYINFO, *PJOYINFO, *NPJOYINFO, *LPJOYINFO;
239
240typedef struct joyinfoex_tag {
241 DWORD dwSize;
242 DWORD dwFlags;
243 DWORD dwXpos;
244 DWORD dwYpos;
245 DWORD dwZpos;
246 DWORD dwRpos;
247 DWORD dwUpos;
248 DWORD dwVpos;
249 DWORD dwButtons;
250 DWORD dwButtonNumber;
251 DWORD dwPOV;
252 DWORD dwReserved1;
253 DWORD dwReserved2;
254} JOYINFOEX, *PJOYINFOEX, *NPJOYINFOEX, *LPJOYINFOEX;
255
256WINMMAPI MMRESULT WINAPI joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji);
257
258WINMMAPI UINT WINAPI joyGetNumDevs(void);
259
260WINMMAPI MMRESULT WINAPI joyGetDevCapsA(UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc);
261WINMMAPI MMRESULT WINAPI joyGetDevCapsW(UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc);
262#define joyGetDevCaps __MINGW_NAME_AW(joyGetDevCaps)
263
264WINMMAPI MMRESULT WINAPI joyGetPos(UINT uJoyID, LPJOYINFO pji);
265WINMMAPI MMRESULT WINAPI joyGetThreshold(UINT uJoyID, LPUINT puThreshold);
266WINMMAPI MMRESULT WINAPI joyReleaseCapture(UINT uJoyID);
267WINMMAPI MMRESULT WINAPI joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, WINBOOL fChanged);
268WINMMAPI MMRESULT WINAPI joySetThreshold(UINT uJoyID, UINT uThreshold);
269
270WINMMAPI MMRESULT WINAPI joyConfigChanged(DWORD dwFlags);
271
272#endif /* ifndef MMNOJOY */
273
274#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
275
276#ifdef __cplusplus
277}
278#endif
279
280#endif /* _JOYSTICKAPI_H_ */