Mercurial > sdl-ios-xcode
annotate src/joystick/win32/SDL_mmjoystick.c @ 3294:470d0a416aa7
Fixed bug #714
fuzzyTew@gmail.com 2009-03-14 15:18:45 PDT
patch to change HAVE_ICONV to HAVE_ICONV_H
There are two separate iconv checks in configure -- one for the header file and
one for the library. include/SDL_stdinc.h uses the library define to see
whether or not it should reference the types defined in the header, which
naturally breaks if the library exists and the header does not.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 21 Sep 2009 11:04:01 +0000 |
parents | 99210400e8b9 |
children | 3c1b39d0d1a6 |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
2859 | 3 Copyright (C) 1997-2009 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1135
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
0 | 7 License as published by the Free Software Foundation; either |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1135
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
0 | 9 |
10 This library is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1135
diff
changeset
|
13 Lesser General Public License for more details. |
0 | 14 |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1135
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1135
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1135
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 18 |
19 Sam Lantinga | |
252
e8157fcb3114
Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
165
diff
changeset
|
20 slouken@libsdl.org |
0 | 21 */ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
22 #include "SDL_config.h" |
0 | 23 |
1635
92947e3a18db
Make sure code is only compiled if the appropriate subsystem is enabled
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
24 #ifdef SDL_JOYSTICK_WINMM |
92947e3a18db
Make sure code is only compiled if the appropriate subsystem is enabled
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
25 |
0 | 26 /* Win32 MultiMedia Joystick driver, contributed by Andrei de A. Formiga */ |
27 | |
1433
bb6839704ed6
SDL_windows.h is no longer necessary
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
28 #define WIN32_LEAN_AND_MEAN |
bb6839704ed6
SDL_windows.h is no longer necessary
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
29 #include <windows.h> |
1358
c71e05b4dc2e
More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
30 #include <mmsystem.h> |
c71e05b4dc2e
More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
31 #include <regstr.h> |
c71e05b4dc2e
More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
32 |
1330
450721ad5436
It's now possible to build SDL without any C runtime at all on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
1312
diff
changeset
|
33 #include "SDL_events.h" |
0 | 34 #include "SDL_joystick.h" |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
35 #include "../SDL_sysjoystick.h" |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
36 #include "../SDL_joystick_c.h" |
0 | 37 |
531
8450e66651ea
Fixed joystick detection problem on Windows XP (thanks Maciej!)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
38 #define MAX_JOYSTICKS 16 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
39 #define MAX_AXES 6 /* each joystick can have up to 6 axes */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
40 #define MAX_BUTTONS 32 /* and 32 buttons */ |
0 | 41 #define AXIS_MIN -32768 /* minimum value for axis coordinate */ |
42 #define AXIS_MAX 32767 /* maximum value for axis coordinate */ | |
834
d37179d10ccc
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
43 /* limit axis to 256 possible positions to filter out noise */ |
d37179d10ccc
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
44 #define JOY_AXIS_THRESHOLD (((AXIS_MAX)-(AXIS_MIN))/256) |
0 | 45 #define JOY_BUTTON_FLAG(n) (1<<n) |
46 | |
47 | |
48 /* array to hold joystick ID values */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
49 static UINT SYS_JoystickID[MAX_JOYSTICKS]; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
50 static JOYCAPS SYS_Joystick[MAX_JOYSTICKS]; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
51 static char *SYS_JoystickName[MAX_JOYSTICKS]; |
0 | 52 |
53 /* The private structure used to keep track of a joystick */ | |
54 struct joystick_hwdata | |
55 { | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
56 /* joystick ID */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
57 UINT id; |
0 | 58 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
59 /* values used to translate device-specific coordinates into |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
60 SDL-standard ranges */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
61 struct _transaxis |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
62 { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
63 int offset; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
64 float scale; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
65 } transaxis[6]; |
0 | 66 }; |
67 | |
68 /* Convert a win32 Multimedia API return code to a text message */ | |
69 static void SetMMerror(char *function, int code); | |
70 | |
71 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
72 static char * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
73 GetJoystickName(int index, const char *szRegKey) |
937
1e6366bde299
Date: Tue, 27 Jul 2004 17:14:00 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
834
diff
changeset
|
74 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
75 /* added 7/24/2004 by Eckhard Stolberg */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
76 /* |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
77 see if there is a joystick for the current |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
78 index (1-16) listed in the registry |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
79 */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
80 char *name = NULL; |
2176
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
81 HKEY hTopKey; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
82 HKEY hKey; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
83 DWORD regsize; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
84 LONG regresult; |
2176
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
85 char regkey[256]; |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
86 char regvalue[256]; |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
87 char regname[256]; |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
88 |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
89 SDL_snprintf(regkey, SDL_arraysize(regkey), "%s\\%s\\%s", |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
90 REGSTR_PATH_JOYCONFIG, szRegKey, REGSTR_KEY_JOYCURR); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
91 hTopKey = HKEY_LOCAL_MACHINE; |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
92 regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
93 if (regresult != ERROR_SUCCESS) { |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
94 hTopKey = HKEY_CURRENT_USER; |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
95 regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
96 } |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
97 if (regresult != ERROR_SUCCESS) { |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
98 return NULL; |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
99 } |
937
1e6366bde299
Date: Tue, 27 Jul 2004 17:14:00 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
834
diff
changeset
|
100 |
2176
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
101 /* find the registry key name for the joystick's properties */ |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
102 regsize = sizeof(regname); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
103 SDL_snprintf(regvalue, SDL_arraysize(regvalue), "Joystick%d%s", index + 1, |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
104 REGSTR_VAL_JOYOEMNAME); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
105 regresult = |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
106 RegQueryValueExA(hKey, regvalue, 0, 0, (LPBYTE) regname, ®size); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
107 RegCloseKey(hKey); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
108 |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
109 if (regresult != ERROR_SUCCESS) { |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
110 return NULL; |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
111 } |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
112 |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
113 /* open that registry key */ |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
114 SDL_snprintf(regkey, SDL_arraysize(regkey), "%s\\%s", REGSTR_PATH_JOYOEM, |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
115 regname); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
116 regresult = RegOpenKeyExA(hTopKey, regkey, 0, KEY_READ, &hKey); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
117 if (regresult != ERROR_SUCCESS) { |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
118 return NULL; |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
119 } |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
120 |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
121 /* find the size for the OEM name text */ |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
122 regsize = sizeof(regvalue); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
123 regresult = |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
124 RegQueryValueExA(hKey, REGSTR_VAL_JOYOEMNAME, 0, 0, NULL, ®size); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
125 if (regresult == ERROR_SUCCESS) { |
2176
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
126 /* allocate enough memory for the OEM name text ... */ |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
127 name = (char *) SDL_malloc(regsize); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
128 if (name) { |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
129 /* ... and read it from the registry */ |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
130 regresult = RegQueryValueExA(hKey, |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
131 REGSTR_VAL_JOYOEMNAME, 0, 0, |
2176
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
132 (LPBYTE) name, ®size); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
133 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
134 } |
2176
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
135 RegCloseKey(hKey); |
cbe06fa842cd
Fixed joystick name detection - merged from revision 3226 on SDL 1.2 branch
Sam Lantinga <slouken@libsdl.org>
parents:
2061
diff
changeset
|
136 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
137 return (name); |
937
1e6366bde299
Date: Tue, 27 Jul 2004 17:14:00 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
834
diff
changeset
|
138 } |
1e6366bde299
Date: Tue, 27 Jul 2004 17:14:00 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
834
diff
changeset
|
139 |
0 | 140 /* Function to scan the system for joysticks. |
141 * This function should set SDL_numjoysticks to the number of available | |
142 * joysticks. Joystick 0 should be the system default joystick. | |
143 * It should return 0, or -1 on an unrecoverable fatal error. | |
144 */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
145 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
146 SDL_SYS_JoystickInit(void) |
0 | 147 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
148 int i; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
149 int maxdevs; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
150 int numdevs; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
151 JOYINFOEX joyinfo; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
152 JOYCAPS joycaps; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
153 MMRESULT result; |
0 | 154 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
155 /* Reset the joystick ID & name mapping tables */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
156 for (i = 0; i < MAX_JOYSTICKS; ++i) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
157 SYS_JoystickID[i] = 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
158 SYS_JoystickName[i] = NULL; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
159 } |
531
8450e66651ea
Fixed joystick detection problem on Windows XP (thanks Maciej!)
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
160 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
161 /* Loop over all potential joystick devices */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
162 numdevs = 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
163 maxdevs = joyGetNumDevs(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
164 for (i = JOYSTICKID1; i < maxdevs && numdevs < MAX_JOYSTICKS; ++i) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
165 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
166 joyinfo.dwSize = sizeof(joyinfo); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
167 joyinfo.dwFlags = JOY_RETURNALL; |
2061
6051761b5934
Win32 joystick fix, ported from 1.2 branch r2887:2888. (Thanks, Ondrej!)
Ryan C. Gordon <icculus@icculus.org>
parents:
1895
diff
changeset
|
168 result = joyGetPosEx(i, &joyinfo); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
169 if (result == JOYERR_NOERROR) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
170 result = joyGetDevCaps(i, &joycaps, sizeof(joycaps)); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
171 if (result == JOYERR_NOERROR) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
172 SYS_JoystickID[numdevs] = i; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
173 SYS_Joystick[numdevs] = joycaps; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
174 SYS_JoystickName[numdevs] = |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
175 GetJoystickName(i, joycaps.szRegKey); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
176 numdevs++; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
177 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
178 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
179 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
180 return (numdevs); |
0 | 181 } |
182 | |
183 /* Function to get the device-dependent name of a joystick */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
184 const char * |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
185 SDL_SYS_JoystickName(int index) |
0 | 186 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
187 if (SYS_JoystickName[index] != NULL) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
188 return (SYS_JoystickName[index]); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
189 } else { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
190 return (SYS_Joystick[index].szPname); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
191 } |
0 | 192 } |
193 | |
194 /* Function to open a joystick for use. | |
195 The joystick to open is specified by the index field of the joystick. | |
196 This should fill the nbuttons and naxes fields of the joystick structure. | |
197 It returns 0, or -1 if there is an error. | |
198 */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
199 int |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
200 SDL_SYS_JoystickOpen(SDL_Joystick * joystick) |
0 | 201 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
202 int index, i; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
203 int caps_flags[MAX_AXES - 2] = |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
204 { JOYCAPS_HASZ, JOYCAPS_HASR, JOYCAPS_HASU, JOYCAPS_HASV }; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
205 int axis_min[MAX_AXES], axis_max[MAX_AXES]; |
0 | 206 |
207 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
208 /* shortcut */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
209 index = joystick->index; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
210 axis_min[0] = SYS_Joystick[index].wXmin; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
211 axis_max[0] = SYS_Joystick[index].wXmax; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
212 axis_min[1] = SYS_Joystick[index].wYmin; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
213 axis_max[1] = SYS_Joystick[index].wYmax; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
214 axis_min[2] = SYS_Joystick[index].wZmin; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
215 axis_max[2] = SYS_Joystick[index].wZmax; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
216 axis_min[3] = SYS_Joystick[index].wRmin; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
217 axis_max[3] = SYS_Joystick[index].wRmax; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
218 axis_min[4] = SYS_Joystick[index].wUmin; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
219 axis_max[4] = SYS_Joystick[index].wUmax; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
220 axis_min[5] = SYS_Joystick[index].wVmin; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
221 axis_max[5] = SYS_Joystick[index].wVmax; |
0 | 222 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
223 /* allocate memory for system specific hardware data */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
224 joystick->hwdata = |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
225 (struct joystick_hwdata *) SDL_malloc(sizeof(*joystick->hwdata)); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
226 if (joystick->hwdata == NULL) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
227 SDL_OutOfMemory(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
228 return (-1); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
229 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
230 SDL_memset(joystick->hwdata, 0, sizeof(*joystick->hwdata)); |
0 | 231 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
232 /* set hardware data */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
233 joystick->hwdata->id = SYS_JoystickID[index]; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
234 for (i = 0; i < MAX_AXES; ++i) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
235 if ((i < 2) || (SYS_Joystick[index].wCaps & caps_flags[i - 2])) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
236 joystick->hwdata->transaxis[i].offset = AXIS_MIN - axis_min[i]; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
237 joystick->hwdata->transaxis[i].scale = |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
238 (float) (AXIS_MAX - AXIS_MIN) / (axis_max[i] - axis_min[i]); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
239 } else { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
240 joystick->hwdata->transaxis[i].offset = 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
241 joystick->hwdata->transaxis[i].scale = 1.0; /* Just in case */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
242 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
243 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
244 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
245 /* fill nbuttons, naxes, and nhats fields */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
246 joystick->nbuttons = SYS_Joystick[index].wNumButtons; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
247 joystick->naxes = SYS_Joystick[index].wNumAxes; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
248 if (SYS_Joystick[index].wCaps & JOYCAPS_HASPOV) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
249 joystick->nhats = 1; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
250 } else { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
251 joystick->nhats = 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
252 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
253 return (0); |
0 | 254 } |
255 | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
256 static Uint8 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
257 TranslatePOV(DWORD value) |
0 | 258 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
259 Uint8 pos; |
0 | 260 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
261 pos = SDL_HAT_CENTERED; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
262 if (value != JOY_POVCENTERED) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
263 if ((value > JOY_POVLEFT) || (value < JOY_POVRIGHT)) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
264 pos |= SDL_HAT_UP; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
265 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
266 if ((value > JOY_POVFORWARD) && (value < JOY_POVBACKWARD)) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
267 pos |= SDL_HAT_RIGHT; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
268 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
269 if ((value > JOY_POVRIGHT) && (value < JOY_POVLEFT)) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
270 pos |= SDL_HAT_DOWN; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
271 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
272 if (value > JOY_POVBACKWARD) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
273 pos |= SDL_HAT_LEFT; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
274 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
275 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
276 return (pos); |
0 | 277 } |
278 | |
279 /* Function to update the state of a joystick - called as a device poll. | |
280 * This function shouldn't update the joystick structure directly, | |
281 * but instead should call SDL_PrivateJoystick*() to deliver events | |
282 * and update joystick device state. | |
283 */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
284 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
285 SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) |
0 | 286 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
287 MMRESULT result; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
288 int i; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
289 DWORD flags[MAX_AXES] = { JOY_RETURNX, JOY_RETURNY, JOY_RETURNZ, |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
290 JOY_RETURNR, JOY_RETURNU, JOY_RETURNV |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
291 }; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
292 DWORD pos[MAX_AXES]; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
293 struct _transaxis *transaxis; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
294 int value, change; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
295 JOYINFOEX joyinfo; |
0 | 296 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
297 joyinfo.dwSize = sizeof(joyinfo); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
298 joyinfo.dwFlags = JOY_RETURNALL | JOY_RETURNPOVCTS; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
299 if (!joystick->hats) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
300 joyinfo.dwFlags &= ~(JOY_RETURNPOV | JOY_RETURNPOVCTS); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
301 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
302 result = joyGetPosEx(joystick->hwdata->id, &joyinfo); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
303 if (result != JOYERR_NOERROR) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
304 SetMMerror("joyGetPosEx", result); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
305 return; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
306 } |
0 | 307 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
308 /* joystick motion events */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
309 pos[0] = joyinfo.dwXpos; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
310 pos[1] = joyinfo.dwYpos; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
311 pos[2] = joyinfo.dwZpos; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
312 pos[3] = joyinfo.dwRpos; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
313 pos[4] = joyinfo.dwUpos; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
314 pos[5] = joyinfo.dwVpos; |
0 | 315 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
316 transaxis = joystick->hwdata->transaxis; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
317 for (i = 0; i < joystick->naxes; i++) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
318 if (joyinfo.dwFlags & flags[i]) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
319 value = |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
320 (int) (((float) pos[i] + |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
321 transaxis[i].offset) * transaxis[i].scale); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
322 change = (value - joystick->axes[i]); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
323 if ((change < -JOY_AXIS_THRESHOLD) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
324 || (change > JOY_AXIS_THRESHOLD)) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
325 SDL_PrivateJoystickAxis(joystick, (Uint8) i, (Sint16) value); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
326 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
327 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
328 } |
0 | 329 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
330 /* joystick button events */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
331 if (joyinfo.dwFlags & JOY_RETURNBUTTONS) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
332 for (i = 0; i < joystick->nbuttons; ++i) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
333 if (joyinfo.dwButtons & JOY_BUTTON_FLAG(i)) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
334 if (!joystick->buttons[i]) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
335 SDL_PrivateJoystickButton(joystick, (Uint8) i, |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
336 SDL_PRESSED); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
337 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
338 } else { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
339 if (joystick->buttons[i]) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
340 SDL_PrivateJoystickButton(joystick, (Uint8) i, |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
341 SDL_RELEASED); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
342 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
343 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
344 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
345 } |
0 | 346 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
347 /* joystick hat events */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
348 if (joyinfo.dwFlags & JOY_RETURNPOV) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
349 Uint8 pos; |
0 | 350 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
351 pos = TranslatePOV(joyinfo.dwPOV); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
352 if (pos != joystick->hats[0]) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
353 SDL_PrivateJoystickHat(joystick, 0, pos); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
354 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
355 } |
0 | 356 } |
357 | |
358 /* Function to close a joystick after use */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
359 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
360 SDL_SYS_JoystickClose(SDL_Joystick * joystick) |
0 | 361 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
362 if (joystick->hwdata != NULL) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
363 /* free system specific hardware data */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
364 SDL_free(joystick->hwdata); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
365 } |
0 | 366 } |
367 | |
368 /* Function to perform any system-specific joystick related cleanup */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
369 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
370 SDL_SYS_JoystickQuit(void) |
0 | 371 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
372 int i; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
373 for (i = 0; i < MAX_JOYSTICKS; i++) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
374 if (SYS_JoystickName[i] != NULL) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
375 SDL_free(SYS_JoystickName[i]); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
376 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
377 } |
0 | 378 } |
379 | |
380 | |
381 /* implementation functions */ | |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
382 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
383 SetMMerror(char *function, int code) |
0 | 384 { |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
385 static char *error; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
386 static char errbuf[1024]; |
0 | 387 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
388 errbuf[0] = 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
389 switch (code) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
390 case MMSYSERR_NODRIVER: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
391 error = "Joystick driver not present"; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
392 break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
393 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
394 case MMSYSERR_INVALPARAM: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
395 case JOYERR_PARMS: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
396 error = "Invalid parameter(s)"; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
397 break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
398 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
399 case MMSYSERR_BADDEVICEID: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
400 error = "Bad device ID"; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
401 break; |
0 | 402 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
403 case JOYERR_UNPLUGGED: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
404 error = "Joystick not attached"; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
405 break; |
0 | 406 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
407 case JOYERR_NOCANDO: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
408 error = "Can't capture joystick input"; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
409 break; |
0 | 410 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
411 default: |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
412 SDL_snprintf(errbuf, SDL_arraysize(errbuf), |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
413 "%s: Unknown Multimedia system error: 0x%x", |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
414 function, code); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
415 break; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
416 } |
0 | 417 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
418 if (!errbuf[0]) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
419 SDL_snprintf(errbuf, SDL_arraysize(errbuf), "%s: %s", function, |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
420 error); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
421 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
422 SDL_SetError("%s", errbuf); |
0 | 423 } |
1635
92947e3a18db
Make sure code is only compiled if the appropriate subsystem is enabled
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
424 |
92947e3a18db
Make sure code is only compiled if the appropriate subsystem is enabled
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
425 #endif /* SDL_JOYSTICK_WINMM */ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1748
diff
changeset
|
426 /* vi: set ts=4 sw=4 expandtab: */ |