21 #include "../../SDL_internal.h"
23 #ifdef SDL_JOYSTICK_HAIKU
27 #include <support/String.h>
28 #include <device/Joystick.h>
34 #include "../SDL_sysjoystick.h"
35 #include "../SDL_joystick_c.h"
39 #define MAX_JOYSTICKS 16
42 static char *SDL_joyport[MAX_JOYSTICKS];
43 static char *SDL_joyname[MAX_JOYSTICKS];
59 static int HAIKU_JoystickInit(
void)
64 char name[B_OS_NAME_LENGTH];
69 SDL_memset(SDL_joyport, 0, (
sizeof SDL_joyport));
70 SDL_memset(SDL_joyname, 0, (
sizeof SDL_joyname));
76 joystick.GetControllerName(&stick_name);
87 static int HAIKU_JoystickGetCount(
void)
92 static void HAIKU_JoystickDetect(
void)
97 static const char *HAIKU_JoystickGetDeviceName(
int device_index)
99 return SDL_joyname[device_index];
102 static int HAIKU_JoystickGetDevicePlayerIndex(
int device_index)
107 static void HAIKU_JoystickSetDevicePlayerIndex(
int device_index,
int player_index)
112 static SDL_JoystickID HAIKU_JoystickGetDeviceInstanceID(
int device_index)
117 static void HAIKU_JoystickClose(SDL_Joystick *
joystick);
124 static int HAIKU_JoystickOpen(SDL_Joystick *
joystick,
int device_index)
129 joystick->instance_id = device_index;
136 stick =
new BJoystick;
140 if (stick->Open(SDL_joyport[device_index]) == B_ERROR) {
146 stick->EnableCalibration();
149 joystick->nbuttons = stick->CountButtons();
150 joystick->naxes = stick->CountAxes();
151 joystick->nhats = stick->CountHats();
153 joystick->hwdata->new_axes = (int16 *)
155 joystick->hwdata->new_hats = (uint8 *)
171 static void HAIKU_JoystickUpdate(SDL_Joystick *
joystick)
173 static const Uint8 hat_map[9] = {
198 stick->GetAxisValues(
axes);
199 stick->GetHatValues(
hats);
200 buttons = stick->ButtonValues();
220 static void HAIKU_JoystickClose(SDL_Joystick *
joystick)
232 static void HAIKU_JoystickQuit(
void)
239 SDL_joyport[0] =
NULL;
244 SDL_joyname[0] =
NULL;
251 const char *
name = HAIKU_JoystickGetDeviceName( device_index );
257 static int HAIKU_JoystickRumble(SDL_Joystick *
joystick,
Uint16 low_frequency_rumble,
Uint16 high_frequency_rumble)
263 static int HAIKU_JoystickRumbleTriggers(SDL_Joystick *
joystick,
Uint16 left_rumble,
Uint16 right_rumble)
292 HAIKU_JoystickGetCount,
293 HAIKU_JoystickDetect,
294 HAIKU_JoystickGetDeviceName,
295 HAIKU_JoystickGetDevicePlayerIndex,
296 HAIKU_JoystickSetDevicePlayerIndex,
297 HAIKU_JoystickGetDeviceGUID,
298 HAIKU_JoystickGetDeviceInstanceID,
300 HAIKU_JoystickRumble,
301 HAIKU_JoystickRumbleTriggers,
302 HAIKU_JoystickHasLED,
303 HAIKU_JoystickSetLED,
304 HAIKU_JoystickSetSensorsEnabled,
305 HAIKU_JoystickUpdate,
308 HAIKU_JoystickGetGamepadMapping
#define SDL_OutOfMemory()
#define SDL_Unsupported()
int SDL_PrivateJoystickHat(SDL_Joystick *joystick, Uint8 hat, Uint8 value)
int SDL_PrivateJoystickAxis(SDL_Joystick *joystick, Uint8 axis, Sint16 value)
int SDL_PrivateJoystickButton(SDL_Joystick *joystick, Uint8 button, Uint8 state)
char * SDL_CreateJoystickName(Uint16 vendor, Uint16 product, const char *vendor_name, const char *product_name)
#define SDL_HAT_RIGHTDOWN
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLuint const GLchar * name
SDL_JoystickDriver SDL_HAIKU_JoystickDriver
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
static SDL_Joystick * joystick