mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-28 20:09:38 +08:00
Use SDL_bool where appropriate in SDL events
This involved changing button state from Uint8 to SDL_bool, and made SDL_PRESSED and SDL_RELEASED unnecessary. Fixes https://github.com/libsdl-org/SDL/issues/10069
This commit is contained in:
@@ -3614,6 +3614,14 @@ typedef SDL_JoystickGUID, SDL_GUID;
|
|||||||
- SDL_size_add_overflow
|
- SDL_size_add_overflow
|
||||||
+ SDL_size_add_check_overflow
|
+ SDL_size_add_check_overflow
|
||||||
(...)
|
(...)
|
||||||
|
@@
|
||||||
|
@@
|
||||||
|
- SDL_PRESSED
|
||||||
|
+ SDL_TRUE
|
||||||
|
@@
|
||||||
|
@@
|
||||||
|
- SDL_RELEASED
|
||||||
|
+ SDL_FALSE
|
||||||
|
|
||||||
// This should be the last rule in the file, since it works on SDL3 functions and previous rules may have renamed old functions.
|
// This should be the last rule in the file, since it works on SDL3 functions and previous rules may have renamed old functions.
|
||||||
@ bool_return_type @
|
@ bool_return_type @
|
||||||
|
|||||||
@@ -360,6 +360,8 @@ The following functions have been removed:
|
|||||||
|
|
||||||
## SDL_events.h
|
## SDL_events.h
|
||||||
|
|
||||||
|
SDL_PRESSED and SDL_RELEASED have been removed. For the most part you can replace uses of these with SDL_TRUE and SDL_FALSE respectively. Events which had a field `state` to represent these values have had those fields changed to SDL_bool `down`, e.g. `event.key.state` is now `event.key.down`.
|
||||||
|
|
||||||
The timestamp member of the SDL_Event structure now represents nanoseconds, and is populated with SDL_GetTicksNS()
|
The timestamp member of the SDL_Event structure now represents nanoseconds, and is populated with SDL_GetTicksNS()
|
||||||
|
|
||||||
The timestamp_us member of the sensor events has been renamed sensor_timestamp and now represents nanoseconds. This value is filled in from the hardware, if available, and may not be synchronized with values returned from SDL_GetTicksNS().
|
The timestamp_us member of the sensor events has been renamed sensor_timestamp and now represents nanoseconds. This value is filled in from the hardware, if available, and may not be synchronized with values returned from SDL_GetTicksNS().
|
||||||
@@ -596,6 +598,8 @@ SDL_bool SDL_IsJoystickNVIDIASHIELDController(Uint16 vendor_id, Uint16 product_i
|
|||||||
|
|
||||||
The inputType and outputType fields of SDL_GamepadBinding have been renamed input_type and output_type.
|
The inputType and outputType fields of SDL_GamepadBinding have been renamed input_type and output_type.
|
||||||
|
|
||||||
|
SDL_GetGamepadTouchpadFinger() takes a pointer to SDL_bool for the finger state instead of a pointer to Uint8.
|
||||||
|
|
||||||
The following enums have been renamed:
|
The following enums have been renamed:
|
||||||
* SDL_GameControllerAxis => SDL_GamepadAxis
|
* SDL_GameControllerAxis => SDL_GamepadAxis
|
||||||
* SDL_GameControllerBindType => SDL_GamepadBindingType
|
* SDL_GameControllerBindType => SDL_GamepadBindingType
|
||||||
@@ -1002,6 +1006,8 @@ The text input state hase been changed to be window-specific. SDL_StartTextInput
|
|||||||
|
|
||||||
SDL_GetDefaultKeyFromScancode(), SDL_GetKeyFromScancode(), and SDL_GetScancodeFromKey() take an SDL_Keymod parameter and use that to provide the correct result based on keyboard modifier state.
|
SDL_GetDefaultKeyFromScancode(), SDL_GetKeyFromScancode(), and SDL_GetScancodeFromKey() take an SDL_Keymod parameter and use that to provide the correct result based on keyboard modifier state.
|
||||||
|
|
||||||
|
SDL_GetKeyboardState() returns a pointer to SDL_bool instead of Uint8.
|
||||||
|
|
||||||
The following functions have been renamed:
|
The following functions have been renamed:
|
||||||
* SDL_IsScreenKeyboardShown() => SDL_ScreenKeyboardShown()
|
* SDL_IsScreenKeyboardShown() => SDL_ScreenKeyboardShown()
|
||||||
* SDL_IsTextInputActive() => SDL_TextInputActive()
|
* SDL_IsTextInputActive() => SDL_TextInputActive()
|
||||||
|
|||||||
@@ -52,25 +52,6 @@ extern "C" {
|
|||||||
|
|
||||||
/* General keyboard/mouse/pen state definitions */
|
/* General keyboard/mouse/pen state definitions */
|
||||||
|
|
||||||
/**
|
|
||||||
* A value that signifies a button is no longer pressed.
|
|
||||||
*
|
|
||||||
* \since This macro is available since SDL 3.0.0.
|
|
||||||
*
|
|
||||||
* \sa SDL_PRESSED
|
|
||||||
*/
|
|
||||||
#define SDL_RELEASED 0
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A value that signifies a button has been pressed down.
|
|
||||||
*
|
|
||||||
* \since This macro is available since SDL 3.0.0.
|
|
||||||
*
|
|
||||||
* \sa SDL_RELEASED
|
|
||||||
*/
|
|
||||||
#define SDL_PRESSED 1
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The types of events that can be delivered.
|
* The types of events that can be delivered.
|
||||||
*
|
*
|
||||||
@@ -346,8 +327,8 @@ typedef struct SDL_KeyboardEvent
|
|||||||
SDL_Keycode key; /**< SDL virtual key code */
|
SDL_Keycode key; /**< SDL virtual key code */
|
||||||
SDL_Keymod mod; /**< current key modifiers */
|
SDL_Keymod mod; /**< current key modifiers */
|
||||||
Uint16 raw; /**< The platform dependent scancode for this event */
|
Uint16 raw; /**< The platform dependent scancode for this event */
|
||||||
Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
|
SDL_bool down; /**< SDL_TRUE if the key is pressed */
|
||||||
Uint8 repeat; /**< Non-zero if this is a key repeat */
|
SDL_bool repeat; /**< SDL_TRUE if this is a key repeat */
|
||||||
} SDL_KeyboardEvent;
|
} SDL_KeyboardEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -455,7 +436,7 @@ typedef struct SDL_MouseButtonEvent
|
|||||||
SDL_WindowID windowID; /**< The window with mouse focus, if any */
|
SDL_WindowID windowID; /**< The window with mouse focus, if any */
|
||||||
SDL_MouseID which; /**< The mouse instance id, SDL_TOUCH_MOUSEID */
|
SDL_MouseID which; /**< The mouse instance id, SDL_TOUCH_MOUSEID */
|
||||||
Uint8 button; /**< The mouse button index */
|
Uint8 button; /**< The mouse button index */
|
||||||
Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
|
SDL_bool down; /**< SDL_TRUE if the button is pressed */
|
||||||
Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */
|
Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */
|
||||||
Uint8 padding;
|
Uint8 padding;
|
||||||
float x; /**< X coordinate, relative to window */
|
float x; /**< X coordinate, relative to window */
|
||||||
@@ -554,7 +535,7 @@ typedef struct SDL_JoyButtonEvent
|
|||||||
Uint64 timestamp; /**< In nanoseconds, populated using SDL_GetTicksNS() */
|
Uint64 timestamp; /**< In nanoseconds, populated using SDL_GetTicksNS() */
|
||||||
SDL_JoystickID which; /**< The joystick instance id */
|
SDL_JoystickID which; /**< The joystick instance id */
|
||||||
Uint8 button; /**< The joystick button index */
|
Uint8 button; /**< The joystick button index */
|
||||||
Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
|
SDL_bool down; /**< SDL_TRUE if the button is pressed */
|
||||||
Uint8 padding1;
|
Uint8 padding1;
|
||||||
Uint8 padding2;
|
Uint8 padding2;
|
||||||
} SDL_JoyButtonEvent;
|
} SDL_JoyButtonEvent;
|
||||||
@@ -619,7 +600,7 @@ typedef struct SDL_GamepadButtonEvent
|
|||||||
Uint64 timestamp; /**< In nanoseconds, populated using SDL_GetTicksNS() */
|
Uint64 timestamp; /**< In nanoseconds, populated using SDL_GetTicksNS() */
|
||||||
SDL_JoystickID which; /**< The joystick instance id */
|
SDL_JoystickID which; /**< The joystick instance id */
|
||||||
Uint8 button; /**< The gamepad button (SDL_GamepadButton) */
|
Uint8 button; /**< The gamepad button (SDL_GamepadButton) */
|
||||||
Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
|
SDL_bool down; /**< SDL_TRUE if the button is pressed */
|
||||||
Uint8 padding1;
|
Uint8 padding1;
|
||||||
Uint8 padding2;
|
Uint8 padding2;
|
||||||
} SDL_GamepadButtonEvent;
|
} SDL_GamepadButtonEvent;
|
||||||
@@ -683,7 +664,7 @@ typedef struct SDL_AudioDeviceEvent
|
|||||||
Uint32 reserved;
|
Uint32 reserved;
|
||||||
Uint64 timestamp; /**< In nanoseconds, populated using SDL_GetTicksNS() */
|
Uint64 timestamp; /**< In nanoseconds, populated using SDL_GetTicksNS() */
|
||||||
SDL_AudioDeviceID which; /**< SDL_AudioDeviceID for the device being added or removed or changing */
|
SDL_AudioDeviceID which; /**< SDL_AudioDeviceID for the device being added or removed or changing */
|
||||||
Uint8 recording; /**< zero if a playback device, non-zero if a recording device. */
|
SDL_bool recording; /**< SDL_FALSE if a playback device, SDL_TRUE if a recording device. */
|
||||||
Uint8 padding1;
|
Uint8 padding1;
|
||||||
Uint8 padding2;
|
Uint8 padding2;
|
||||||
Uint8 padding3;
|
Uint8 padding3;
|
||||||
@@ -787,8 +768,8 @@ typedef struct SDL_PenTouchEvent
|
|||||||
SDL_PenInputFlags pen_state; /**< Complete pen input state at time of event */
|
SDL_PenInputFlags pen_state; /**< Complete pen input state at time of event */
|
||||||
float x; /**< X position of pen on tablet */
|
float x; /**< X position of pen on tablet */
|
||||||
float y; /**< Y position of pen on tablet */
|
float y; /**< Y position of pen on tablet */
|
||||||
Uint8 eraser; /**< Non-zero if eraser end is used (not all pens support this). */
|
SDL_bool eraser; /**< SDL_TRUE if eraser end is used (not all pens support this). */
|
||||||
Uint8 state; /**< SDL_PRESSED (pen is touching) or SDL_RELEASED (pen is lifted off) */
|
SDL_bool down; /**< SDL_TRUE if the pen is touching or SDL_FALSE if the pen is lifted off */
|
||||||
} SDL_PenTouchEvent;
|
} SDL_PenTouchEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -810,7 +791,7 @@ typedef struct SDL_PenButtonEvent
|
|||||||
float x; /**< X position of pen on tablet */
|
float x; /**< X position of pen on tablet */
|
||||||
float y; /**< Y position of pen on tablet */
|
float y; /**< Y position of pen on tablet */
|
||||||
Uint8 button; /**< The pen button index (first button is 1). */
|
Uint8 button; /**< The pen button index (first button is 1). */
|
||||||
Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
|
SDL_bool down; /**< SDL_TRUE if the button is pressed */
|
||||||
} SDL_PenButtonEvent;
|
} SDL_PenButtonEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1184,15 +1184,14 @@ extern SDL_DECLSPEC SDL_bool SDLCALL SDL_GamepadHasButton(SDL_Gamepad *gamepad,
|
|||||||
*
|
*
|
||||||
* \param gamepad a gamepad.
|
* \param gamepad a gamepad.
|
||||||
* \param button a button index (one of the SDL_GamepadButton values).
|
* \param button a button index (one of the SDL_GamepadButton values).
|
||||||
* \returns 1 for pressed state or 0 for not pressed state or failure; call
|
* \returns SDL_TRUE if the button is pressed, SDL_FALSE otherwise.
|
||||||
* SDL_GetError() for more information.
|
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_GamepadHasButton
|
* \sa SDL_GamepadHasButton
|
||||||
* \sa SDL_GetGamepadAxis
|
* \sa SDL_GetGamepadAxis
|
||||||
*/
|
*/
|
||||||
extern SDL_DECLSPEC Uint8 SDLCALL SDL_GetGamepadButton(SDL_Gamepad *gamepad, SDL_GamepadButton button);
|
extern SDL_DECLSPEC SDL_bool SDLCALL SDL_GetGamepadButton(SDL_Gamepad *gamepad, SDL_GamepadButton button);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the label of a button on a gamepad.
|
* Get the label of a button on a gamepad.
|
||||||
@@ -1253,12 +1252,12 @@ extern SDL_DECLSPEC int SDLCALL SDL_GetNumGamepadTouchpadFingers(SDL_Gamepad *ga
|
|||||||
* \param gamepad a gamepad.
|
* \param gamepad a gamepad.
|
||||||
* \param touchpad a touchpad.
|
* \param touchpad a touchpad.
|
||||||
* \param finger a finger.
|
* \param finger a finger.
|
||||||
* \param state filled with state.
|
* \param down a pointer filled with SDL_TRUE if the finger is down, SDL_FALSE otherwise, may be NULL.
|
||||||
* \param x filled with x position, normalized 0 to 1, with the origin in the
|
* \param x a pointer filled with the x position, normalized 0 to 1, with the origin in the
|
||||||
* upper left.
|
* upper left, may be NULL.
|
||||||
* \param y filled with y position, normalized 0 to 1, with the origin in the
|
* \param y a pointer filled with the y position, normalized 0 to 1, with the origin in the
|
||||||
* upper left.
|
* upper left, may be NULL.
|
||||||
* \param pressure filled with pressure value.
|
* \param pressure a pointer filled with pressure value, may be NULL.
|
||||||
* \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
|
* \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
|
||||||
* for more information.
|
* for more information.
|
||||||
*
|
*
|
||||||
@@ -1266,7 +1265,7 @@ extern SDL_DECLSPEC int SDLCALL SDL_GetNumGamepadTouchpadFingers(SDL_Gamepad *ga
|
|||||||
*
|
*
|
||||||
* \sa SDL_GetNumGamepadTouchpadFingers
|
* \sa SDL_GetNumGamepadTouchpadFingers
|
||||||
*/
|
*/
|
||||||
extern SDL_DECLSPEC SDL_bool SDLCALL SDL_GetGamepadTouchpadFinger(SDL_Gamepad *gamepad, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure);
|
extern SDL_DECLSPEC SDL_bool SDLCALL SDL_GetGamepadTouchpadFinger(SDL_Gamepad *gamepad, int touchpad, int finger, SDL_bool *down, float *x, float *y, float *pressure);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return whether a gamepad has a particular sensor.
|
* Return whether a gamepad has a particular sensor.
|
||||||
|
|||||||
@@ -558,13 +558,13 @@ extern SDL_DECLSPEC SDL_bool SDLCALL SDL_SetJoystickVirtualBall(SDL_Joystick *jo
|
|||||||
*
|
*
|
||||||
* \param joystick the virtual joystick on which to set state.
|
* \param joystick the virtual joystick on which to set state.
|
||||||
* \param button the index of the button on the virtual joystick to update.
|
* \param button the index of the button on the virtual joystick to update.
|
||||||
* \param value the new value for the specified button.
|
* \param down SDL_TRUE if the button is pressed, SDL_FALSE otherwise.
|
||||||
* \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
|
* \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
|
||||||
* for more information.
|
* for more information.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern SDL_DECLSPEC SDL_bool SDLCALL SDL_SetJoystickVirtualButton(SDL_Joystick *joystick, int button, Uint8 value);
|
extern SDL_DECLSPEC SDL_bool SDLCALL SDL_SetJoystickVirtualButton(SDL_Joystick *joystick, int button, SDL_bool down);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the state of a hat on an opened virtual joystick.
|
* Set the state of a hat on an opened virtual joystick.
|
||||||
@@ -598,7 +598,7 @@ extern SDL_DECLSPEC SDL_bool SDLCALL SDL_SetJoystickVirtualHat(SDL_Joystick *joy
|
|||||||
* \param touchpad the index of the touchpad on the virtual joystick to
|
* \param touchpad the index of the touchpad on the virtual joystick to
|
||||||
* update.
|
* update.
|
||||||
* \param finger the index of the finger on the touchpad to set.
|
* \param finger the index of the finger on the touchpad to set.
|
||||||
* \param state `SDL_PRESSED` if the finger is pressed, `SDL_RELEASED` if the
|
* \param down SDL_TRUE if the finger is pressed, SDL_FALSE if the
|
||||||
* finger is released.
|
* finger is released.
|
||||||
* \param x the x coordinate of the finger on the touchpad, normalized 0 to 1,
|
* \param x the x coordinate of the finger on the touchpad, normalized 0 to 1,
|
||||||
* with the origin in the upper left.
|
* with the origin in the upper left.
|
||||||
@@ -610,7 +610,7 @@ extern SDL_DECLSPEC SDL_bool SDLCALL SDL_SetJoystickVirtualHat(SDL_Joystick *joy
|
|||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*/
|
*/
|
||||||
extern SDL_DECLSPEC SDL_bool SDLCALL SDL_SetJoystickVirtualTouchpad(SDL_Joystick *joystick, int touchpad, int finger, Uint8 state, float x, float y, float pressure);
|
extern SDL_DECLSPEC SDL_bool SDLCALL SDL_SetJoystickVirtualTouchpad(SDL_Joystick *joystick, int touchpad, int finger, SDL_bool down, float x, float y, float pressure);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a sensor update for an opened virtual joystick.
|
* Send a sensor update for an opened virtual joystick.
|
||||||
@@ -1065,13 +1065,13 @@ extern SDL_DECLSPEC Uint8 SDLCALL SDL_GetJoystickHat(SDL_Joystick *joystick, int
|
|||||||
* \param joystick an SDL_Joystick structure containing joystick information.
|
* \param joystick an SDL_Joystick structure containing joystick information.
|
||||||
* \param button the button index to get the state from; indices start at
|
* \param button the button index to get the state from; indices start at
|
||||||
* index 0.
|
* index 0.
|
||||||
* \returns 1 if the specified button is pressed, 0 otherwise.
|
* \returns SDL_TRUE if the button is pressed, SDL_FALSE otherwise.
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 3.0.0.
|
* \since This function is available since SDL 3.0.0.
|
||||||
*
|
*
|
||||||
* \sa SDL_GetNumJoystickButtons
|
* \sa SDL_GetNumJoystickButtons
|
||||||
*/
|
*/
|
||||||
extern SDL_DECLSPEC Uint8 SDLCALL SDL_GetJoystickButton(SDL_Joystick *joystick, int button);
|
extern SDL_DECLSPEC SDL_bool SDLCALL SDL_GetJoystickButton(SDL_Joystick *joystick, int button);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start a rumble effect.
|
* Start a rumble effect.
|
||||||
|
|||||||
@@ -119,8 +119,8 @@ extern SDL_DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
|
|||||||
* valid for the whole lifetime of the application and should not be freed by
|
* valid for the whole lifetime of the application and should not be freed by
|
||||||
* the caller.
|
* the caller.
|
||||||
*
|
*
|
||||||
* A array element with a value of 1 means that the key is pressed and a value
|
* A array element with a value of SDL_TRUE means that the key is pressed and a value
|
||||||
* of 0 means that it is not. Indexes into this array are obtained by using
|
* of SDL_FALSE means that it is not. Indexes into this array are obtained by using
|
||||||
* SDL_Scancode values.
|
* SDL_Scancode values.
|
||||||
*
|
*
|
||||||
* Use SDL_PumpEvents() to update the state array.
|
* Use SDL_PumpEvents() to update the state array.
|
||||||
@@ -141,7 +141,7 @@ extern SDL_DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
|
|||||||
* \sa SDL_PumpEvents
|
* \sa SDL_PumpEvents
|
||||||
* \sa SDL_ResetKeyboard
|
* \sa SDL_ResetKeyboard
|
||||||
*/
|
*/
|
||||||
extern SDL_DECLSPEC const Uint8 * SDLCALL SDL_GetKeyboardState(int *numkeys);
|
extern SDL_DECLSPEC const SDL_bool * SDLCALL SDL_GetKeyboardState(int *numkeys);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the state of the keyboard.
|
* Clear the state of the keyboard.
|
||||||
|
|||||||
@@ -2474,7 +2474,7 @@ void SDL_UpdateAudio(void)
|
|||||||
SDL_zero(event);
|
SDL_zero(event);
|
||||||
event.type = i->type;
|
event.type = i->type;
|
||||||
event.adevice.which = (Uint32) i->devid;
|
event.adevice.which = (Uint32) i->devid;
|
||||||
event.adevice.recording = (i->devid & (1<<0)) ? 0 : 1; // bit #0 of devid is set for playback devices and unset for recording.
|
event.adevice.recording = ((i->devid & (1<<0)) != 0); // bit #0 of devid is set for playback devices and unset for recording.
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
}
|
}
|
||||||
SDL_free(i);
|
SDL_free(i);
|
||||||
|
|||||||
@@ -264,15 +264,16 @@ class SDL_BLooper : public BLooper
|
|||||||
{
|
{
|
||||||
SDL_Window *win;
|
SDL_Window *win;
|
||||||
int32 winID;
|
int32 winID;
|
||||||
int32 button, state; // left/middle/right, pressed/released
|
int32 button;
|
||||||
|
bool down;
|
||||||
if (
|
if (
|
||||||
!_GetWinID(msg, &winID) ||
|
!_GetWinID(msg, &winID) ||
|
||||||
msg->FindInt32("button-id", &button) != B_OK ||
|
msg->FindInt32("button-id", &button) != B_OK ||
|
||||||
msg->FindInt32("button-state", &state) != B_OK) {
|
msg->FindBool("button-down", &down) != B_OK) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
win = GetSDLWindow(winID);
|
win = GetSDLWindow(winID);
|
||||||
SDL_SendMouseButton(0, win, SDL_DEFAULT_MOUSE_ID, state, button);
|
SDL_SendMouseButton(0, win, SDL_DEFAULT_MOUSE_ID, button, down);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _HandleMouseWheel(BMessage *msg)
|
void _HandleMouseWheel(BMessage *msg)
|
||||||
@@ -294,18 +295,19 @@ class SDL_BLooper : public BLooper
|
|||||||
{
|
{
|
||||||
SDL_Window *win;
|
SDL_Window *win;
|
||||||
int32 winID;
|
int32 winID;
|
||||||
int32 scancode, state; // scancode, pressed/released
|
int32 scancode;
|
||||||
|
bool down;
|
||||||
if (
|
if (
|
||||||
!_GetWinID(msg, &winID) ||
|
!_GetWinID(msg, &winID) ||
|
||||||
msg->FindInt32("key-state", &state) != B_OK ||
|
msg->FindInt32("key-scancode", &scancode) != B_OK ||
|
||||||
msg->FindInt32("key-scancode", &scancode) != B_OK) {
|
msg->FindBool("key-down", &down) != B_OK) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SendKeyboardKey(0, SDL_DEFAULT_KEYBOARD_ID, scancode, HAIKU_GetScancodeFromBeKey(scancode), state);
|
SDL_SendKeyboardKey(0, SDL_DEFAULT_KEYBOARD_ID, scancode, HAIKU_GetScancodeFromBeKey(scancode), down);
|
||||||
|
|
||||||
win = GetSDLWindow(winID);
|
win = GetSDLWindow(winID);
|
||||||
if (state == SDL_PRESSED && SDL_TextInputActive(win)) {
|
if (down && SDL_TextInputActive(win)) {
|
||||||
const int8 *keyUtf8;
|
const int8 *keyUtf8;
|
||||||
ssize_t count;
|
ssize_t count;
|
||||||
if (msg->FindData("key-utf8", B_INT8_TYPE, (const void **)&keyUtf8, &count) == B_OK) {
|
if (msg->FindData("key-utf8", B_INT8_TYPE, (const void **)&keyUtf8, &count) == B_OK) {
|
||||||
|
|||||||
@@ -347,11 +347,7 @@ void SDL_EVDEV_Poll(void)
|
|||||||
case EV_KEY:
|
case EV_KEY:
|
||||||
if (event->code >= BTN_MOUSE && event->code < BTN_MOUSE + SDL_arraysize(EVDEV_MouseButtons)) {
|
if (event->code >= BTN_MOUSE && event->code < BTN_MOUSE + SDL_arraysize(EVDEV_MouseButtons)) {
|
||||||
mouse_button = event->code - BTN_MOUSE;
|
mouse_button = event->code - BTN_MOUSE;
|
||||||
if (event->value == 0) {
|
SDL_SendMouseButton(SDL_EVDEV_GetEventTimestamp(event), mouse->focus, (SDL_MouseID)item->fd, EVDEV_MouseButtons[mouse_button], (event->value != 0));
|
||||||
SDL_SendMouseButton(SDL_EVDEV_GetEventTimestamp(event), mouse->focus, (SDL_MouseID)item->fd, SDL_RELEASED, EVDEV_MouseButtons[mouse_button]);
|
|
||||||
} else if (event->value == 1) {
|
|
||||||
SDL_SendMouseButton(SDL_EVDEV_GetEventTimestamp(event), mouse->focus, (SDL_MouseID)item->fd, SDL_PRESSED, EVDEV_MouseButtons[mouse_button]);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,9 +369,9 @@ void SDL_EVDEV_Poll(void)
|
|||||||
// Probably keyboard
|
// Probably keyboard
|
||||||
scancode = SDL_EVDEV_translate_keycode(event->code);
|
scancode = SDL_EVDEV_translate_keycode(event->code);
|
||||||
if (event->value == 0) {
|
if (event->value == 0) {
|
||||||
SDL_SendKeyboardKey(SDL_EVDEV_GetEventTimestamp(event), (SDL_KeyboardID)item->fd, event->code, scancode, SDL_RELEASED);
|
SDL_SendKeyboardKey(SDL_EVDEV_GetEventTimestamp(event), (SDL_KeyboardID)item->fd, event->code, scancode, false);
|
||||||
} else if (event->value == 1 || event->value == 2 /* key repeated */) {
|
} else if (event->value == 1 || event->value == 2 /* key repeated */) {
|
||||||
SDL_SendKeyboardKey(SDL_EVDEV_GetEventTimestamp(event), (SDL_KeyboardID)item->fd, event->code, scancode, SDL_PRESSED);
|
SDL_SendKeyboardKey(SDL_EVDEV_GetEventTimestamp(event), (SDL_KeyboardID)item->fd, event->code, scancode, true);
|
||||||
}
|
}
|
||||||
SDL_EVDEV_kbd_keycode(_this->kbd, event->code, event->value);
|
SDL_EVDEV_kbd_keycode(_this->kbd, event->code, event->value);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -379,11 +379,11 @@ void SDL_Fcitx_Reset(void)
|
|||||||
FcitxClientICCallMethod(&fcitx_client, "Reset");
|
FcitxClientICCallMethod(&fcitx_client, "Reset");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDL_Fcitx_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, Uint8 state)
|
bool SDL_Fcitx_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, bool down)
|
||||||
{
|
{
|
||||||
Uint32 mod_state = Fcitx_ModState();
|
Uint32 mod_state = Fcitx_ModState();
|
||||||
Uint32 handled = false;
|
Uint32 handled = false;
|
||||||
Uint32 is_release = (state == SDL_RELEASED);
|
Uint32 is_release = !down;
|
||||||
Uint32 event_time = 0;
|
Uint32 event_time = 0;
|
||||||
|
|
||||||
if (!fcitx_client.ic_path) {
|
if (!fcitx_client.ic_path) {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ extern bool SDL_Fcitx_Init(void);
|
|||||||
extern void SDL_Fcitx_Quit(void);
|
extern void SDL_Fcitx_Quit(void);
|
||||||
extern void SDL_Fcitx_SetFocus(bool focused);
|
extern void SDL_Fcitx_SetFocus(bool focused);
|
||||||
extern void SDL_Fcitx_Reset(void);
|
extern void SDL_Fcitx_Reset(void);
|
||||||
extern bool SDL_Fcitx_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, Uint8 state);
|
extern bool SDL_Fcitx_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, bool down);
|
||||||
extern void SDL_Fcitx_UpdateTextInputArea(SDL_Window *window);
|
extern void SDL_Fcitx_UpdateTextInputArea(SDL_Window *window);
|
||||||
extern void SDL_Fcitx_PumpEvents(void);
|
extern void SDL_Fcitx_PumpEvents(void);
|
||||||
|
|
||||||
|
|||||||
@@ -660,7 +660,7 @@ void SDL_IBus_Reset(void)
|
|||||||
IBus_SimpleMessage("Reset");
|
IBus_SimpleMessage("Reset");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDL_IBus_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, Uint8 state)
|
bool SDL_IBus_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, bool down)
|
||||||
{
|
{
|
||||||
Uint32 result = 0;
|
Uint32 result = 0;
|
||||||
SDL_DBusContext *dbus = SDL_DBus_GetContext();
|
SDL_DBusContext *dbus = SDL_DBus_GetContext();
|
||||||
@@ -668,7 +668,7 @@ bool SDL_IBus_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, Uint8 state)
|
|||||||
if (IBus_CheckConnection(dbus)) {
|
if (IBus_CheckConnection(dbus)) {
|
||||||
Uint32 mods = IBus_ModState();
|
Uint32 mods = IBus_ModState();
|
||||||
Uint32 ibus_keycode = keycode - 8;
|
Uint32 ibus_keycode = keycode - 8;
|
||||||
if (state == SDL_RELEASED) {
|
if (!down) {
|
||||||
mods |= (1 << 30); // IBUS_RELEASE_MASK
|
mods |= (1 << 30); // IBUS_RELEASE_MASK
|
||||||
}
|
}
|
||||||
if (!SDL_DBus_CallMethodOnConnection(ibus_conn, ibus_service, input_ctx_path, ibus_input_interface, "ProcessKeyEvent",
|
if (!SDL_DBus_CallMethodOnConnection(ibus_conn, ibus_service, input_ctx_path, ibus_input_interface, "ProcessKeyEvent",
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ extern void SDL_IBus_Reset(void);
|
|||||||
/* Sends a keypress event to IBus, returns true if IBus used this event to
|
/* Sends a keypress event to IBus, returns true if IBus used this event to
|
||||||
update its candidate list or change input methods. PumpEvents should be
|
update its candidate list or change input methods. PumpEvents should be
|
||||||
called some time after this, to receive the TextInput / TextEditing event back. */
|
called some time after this, to receive the TextInput / TextEditing event back. */
|
||||||
extern bool SDL_IBus_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, Uint8 state);
|
extern bool SDL_IBus_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, bool down);
|
||||||
|
|
||||||
/* Update the position of IBus' candidate list. If rect is NULL then this will
|
/* Update the position of IBus' candidate list. If rect is NULL then this will
|
||||||
just reposition it relative to the focused window's new position. */
|
just reposition it relative to the focused window's new position. */
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ typedef bool (*SDL_IME_Init_t)(void);
|
|||||||
typedef void (*SDL_IME_Quit_t)(void);
|
typedef void (*SDL_IME_Quit_t)(void);
|
||||||
typedef void (*SDL_IME_SetFocus_t)(bool);
|
typedef void (*SDL_IME_SetFocus_t)(bool);
|
||||||
typedef void (*SDL_IME_Reset_t)(void);
|
typedef void (*SDL_IME_Reset_t)(void);
|
||||||
typedef bool (*SDL_IME_ProcessKeyEvent_t)(Uint32, Uint32, Uint8 state);
|
typedef bool (*SDL_IME_ProcessKeyEvent_t)(Uint32, Uint32, bool down);
|
||||||
typedef void (*SDL_IME_UpdateTextInputArea_t)(SDL_Window *window);
|
typedef void (*SDL_IME_UpdateTextInputArea_t)(SDL_Window *window);
|
||||||
typedef void (*SDL_IME_PumpEvents_t)(void);
|
typedef void (*SDL_IME_PumpEvents_t)(void);
|
||||||
|
|
||||||
@@ -126,10 +126,10 @@ void SDL_IME_Reset(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDL_IME_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, Uint8 state)
|
bool SDL_IME_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, bool down)
|
||||||
{
|
{
|
||||||
if (SDL_IME_ProcessKeyEvent_Real) {
|
if (SDL_IME_ProcessKeyEvent_Real) {
|
||||||
return SDL_IME_ProcessKeyEvent_Real(keysym, keycode, state);
|
return SDL_IME_ProcessKeyEvent_Real(keysym, keycode, down);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ extern bool SDL_IME_Init(void);
|
|||||||
extern void SDL_IME_Quit(void);
|
extern void SDL_IME_Quit(void);
|
||||||
extern void SDL_IME_SetFocus(bool focused);
|
extern void SDL_IME_SetFocus(bool focused);
|
||||||
extern void SDL_IME_Reset(void);
|
extern void SDL_IME_Reset(void);
|
||||||
extern bool SDL_IME_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, Uint8 state);
|
extern bool SDL_IME_ProcessKeyEvent(Uint32 keysym, Uint32 keycode, bool down);
|
||||||
extern void SDL_IME_UpdateTextInputArea(SDL_Window *window);
|
extern void SDL_IME_UpdateTextInputArea(SDL_Window *window);
|
||||||
extern void SDL_IME_PumpEvents(void);
|
extern void SDL_IME_PumpEvents(void);
|
||||||
|
|
||||||
|
|||||||
@@ -560,22 +560,22 @@ static void Translate_to_keycode(SDL_WSCONS_input_data *input, int type, keysym_
|
|||||||
switch (keyDesc.command) {
|
switch (keyDesc.command) {
|
||||||
case KS_Cmd_ScrollBack:
|
case KS_Cmd_ScrollBack:
|
||||||
{
|
{
|
||||||
SDL_SendKeyboardKey(0, input->keyboardID, 0, SDL_SCANCODE_PAGEUP, type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendKeyboardKey(0, input->keyboardID, 0, SDL_SCANCODE_PAGEUP, (type == WSCONS_EVENT_KEY_DOWN));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case KS_Cmd_ScrollFwd:
|
case KS_Cmd_ScrollFwd:
|
||||||
{
|
{
|
||||||
SDL_SendKeyboardKey(0, input->keyboardID, 0, SDL_SCANCODE_PAGEDOWN, type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendKeyboardKey(0, input->keyboardID, 0, SDL_SCANCODE_PAGEDOWN, (type == WSCONS_EVENT_KEY_DOWN));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = 0; i < sizeof(conversion_table) / sizeof(struct wscons_keycode_to_SDL); i++) {
|
for (i = 0; i < sizeof(conversion_table) / sizeof(struct wscons_keycode_to_SDL); i++) {
|
||||||
if (conversion_table[i].sourcekey == group[0]) {
|
if (conversion_table[i].sourcekey == group[0]) {
|
||||||
SDL_SendKeyboardKey(0, input->keyboardID, group[0], conversion_table[i].targetKey, type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendKeyboardKey(0, input->keyboardID, group[0], conversion_table[i].targetKey, (type == WSCONS_EVENT_KEY_DOWN));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_SendKeyboardKey(0, input->keyboardID, group[0], SDL_SCANCODE_UNKNOWN, type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendKeyboardKey(0, input->keyboardID, group[0], SDL_SCANCODE_UNKNOWN, (type == WSCONS_EVENT_KEY_DOWN));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateKeyboard(SDL_WSCONS_input_data *input)
|
static void updateKeyboard(SDL_WSCONS_input_data *input)
|
||||||
@@ -809,13 +809,13 @@ static void updateKeyboard(SDL_WSCONS_input_data *input)
|
|||||||
} break;
|
} break;
|
||||||
case WSCONS_EVENT_ALL_KEYS_UP:
|
case WSCONS_EVENT_ALL_KEYS_UP:
|
||||||
for (i = 0; i < SDL_NUM_SCANCODES; i++) {
|
for (i = 0; i < SDL_NUM_SCANCODES; i++) {
|
||||||
SDL_SendKeyboardKey(0, input->keyboardID, 0, (SDL_Scancode)i, SDL_RELEASED);
|
SDL_SendKeyboardKey(0, input->keyboardID, 0, (SDL_Scancode)i, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input->type == WSKBD_TYPE_USB && events[i].value <= 0xE7)
|
if (input->type == WSKBD_TYPE_USB && events[i].value <= 0xE7)
|
||||||
SDL_SendKeyboardKey(0, input->keyboardID, 0, (SDL_Scancode)events[i].value, type == WSCONS_EVENT_KEY_DOWN ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendKeyboardKey(0, input->keyboardID, 0, (SDL_Scancode)events[i].value, (type == WSCONS_EVENT_KEY_DOWN));
|
||||||
else
|
else
|
||||||
Translate_to_keycode(input, type, events[i].value);
|
Translate_to_keycode(input, type, events[i].value);
|
||||||
|
|
||||||
|
|||||||
@@ -79,13 +79,13 @@ void updateMouse(SDL_WSCONS_mouse_input_data *input)
|
|||||||
{
|
{
|
||||||
switch (events[i].value) {
|
switch (events[i].value) {
|
||||||
case 0: // Left Mouse Button.
|
case 0: // Left Mouse Button.
|
||||||
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_PRESSED, SDL_BUTTON_LEFT);
|
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_BUTTON_LEFT, true);
|
||||||
break;
|
break;
|
||||||
case 1: // Middle Mouse Button.
|
case 1: // Middle Mouse Button.
|
||||||
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_PRESSED, SDL_BUTTON_MIDDLE);
|
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_BUTTON_MIDDLE, true);
|
||||||
break;
|
break;
|
||||||
case 2: // Right Mouse Button.
|
case 2: // Right Mouse Button.
|
||||||
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_PRESSED, SDL_BUTTON_RIGHT);
|
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_BUTTON_RIGHT, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@@ -93,13 +93,13 @@ void updateMouse(SDL_WSCONS_mouse_input_data *input)
|
|||||||
{
|
{
|
||||||
switch (events[i].value) {
|
switch (events[i].value) {
|
||||||
case 0: // Left Mouse Button.
|
case 0: // Left Mouse Button.
|
||||||
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_RELEASED, SDL_BUTTON_LEFT);
|
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_BUTTON_LEFT, false);
|
||||||
break;
|
break;
|
||||||
case 1: // Middle Mouse Button.
|
case 1: // Middle Mouse Button.
|
||||||
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_RELEASED, SDL_BUTTON_MIDDLE);
|
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_BUTTON_MIDDLE, false);
|
||||||
break;
|
break;
|
||||||
case 2: // Right Mouse Button.
|
case 2: // Right Mouse Button.
|
||||||
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_RELEASED, SDL_BUTTON_RIGHT);
|
SDL_SendMouseButton(0, mouse->focus, input->mouseID, SDL_BUTTON_RIGHT, false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ SDL_DYNAPI_PROC(const char*,SDL_GetGamepadAppleSFSymbolsNameForButton,(SDL_Gamep
|
|||||||
SDL_DYNAPI_PROC(Sint16,SDL_GetGamepadAxis,(SDL_Gamepad *a, SDL_GamepadAxis b),(a,b),return)
|
SDL_DYNAPI_PROC(Sint16,SDL_GetGamepadAxis,(SDL_Gamepad *a, SDL_GamepadAxis b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_GamepadAxis,SDL_GetGamepadAxisFromString,(const char *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_GamepadAxis,SDL_GetGamepadAxisFromString,(const char *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_GamepadBinding**,SDL_GetGamepadBindings,(SDL_Gamepad *a, int *b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_GamepadBinding**,SDL_GetGamepadBindings,(SDL_Gamepad *a, int *b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(Uint8,SDL_GetGamepadButton,(SDL_Gamepad *a, SDL_GamepadButton b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_GetGamepadButton,(SDL_Gamepad *a, SDL_GamepadButton b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_GamepadButton,SDL_GetGamepadButtonFromString,(const char *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_GamepadButton,SDL_GetGamepadButtonFromString,(const char *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_GamepadButtonLabel,SDL_GetGamepadButtonLabel,(SDL_Gamepad *a, SDL_GamepadButton b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_GamepadButtonLabel,SDL_GetGamepadButtonLabel,(SDL_Gamepad *a, SDL_GamepadButton b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_GamepadButtonLabel,SDL_GetGamepadButtonLabelForType,(SDL_GamepadType a, SDL_GamepadButton b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_GamepadButtonLabel,SDL_GetGamepadButtonLabelForType,(SDL_GamepadType a, SDL_GamepadButton b),(a,b),return)
|
||||||
@@ -361,7 +361,7 @@ SDL_DYNAPI_PROC(Uint64,SDL_GetGamepadSteamHandle,(SDL_Gamepad *a),(a),return)
|
|||||||
SDL_DYNAPI_PROC(const char*,SDL_GetGamepadStringForAxis,(SDL_GamepadAxis a),(a),return)
|
SDL_DYNAPI_PROC(const char*,SDL_GetGamepadStringForAxis,(SDL_GamepadAxis a),(a),return)
|
||||||
SDL_DYNAPI_PROC(const char*,SDL_GetGamepadStringForButton,(SDL_GamepadButton a),(a),return)
|
SDL_DYNAPI_PROC(const char*,SDL_GetGamepadStringForButton,(SDL_GamepadButton a),(a),return)
|
||||||
SDL_DYNAPI_PROC(const char*,SDL_GetGamepadStringForType,(SDL_GamepadType a),(a),return)
|
SDL_DYNAPI_PROC(const char*,SDL_GetGamepadStringForType,(SDL_GamepadType a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_GetGamepadTouchpadFinger,(SDL_Gamepad *a, int b, int c, Uint8 *d, float *e, float *f, float *g),(a,b,c,d,e,f,g),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_GetGamepadTouchpadFinger,(SDL_Gamepad *a, int b, int c, SDL_bool *d, float *e, float *f, float *g),(a,b,c,d,e,f,g),return)
|
||||||
SDL_DYNAPI_PROC(SDL_GamepadType,SDL_GetGamepadType,(SDL_Gamepad *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_GamepadType,SDL_GetGamepadType,(SDL_Gamepad *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_GamepadType,SDL_GetGamepadTypeForID,(SDL_JoystickID a),(a),return)
|
SDL_DYNAPI_PROC(SDL_GamepadType,SDL_GetGamepadTypeForID,(SDL_JoystickID a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_GamepadType,SDL_GetGamepadTypeFromString,(const char *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_GamepadType,SDL_GetGamepadTypeFromString,(const char *a),(a),return)
|
||||||
@@ -386,7 +386,7 @@ SDL_DYNAPI_PROC(SDL_IOStatus,SDL_GetIOStatus,(SDL_IOStream *a),(a),return)
|
|||||||
SDL_DYNAPI_PROC(Sint16,SDL_GetJoystickAxis,(SDL_Joystick *a, int b),(a,b),return)
|
SDL_DYNAPI_PROC(Sint16,SDL_GetJoystickAxis,(SDL_Joystick *a, int b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_GetJoystickAxisInitialState,(SDL_Joystick *a, int b, Sint16 *c),(a,b,c),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_GetJoystickAxisInitialState,(SDL_Joystick *a, int b, Sint16 *c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_GetJoystickBall,(SDL_Joystick *a, int b, int *c, int *d),(a,b,c,d),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_GetJoystickBall,(SDL_Joystick *a, int b, int *c, int *d),(a,b,c,d),return)
|
||||||
SDL_DYNAPI_PROC(Uint8,SDL_GetJoystickButton,(SDL_Joystick *a, int b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_GetJoystickButton,(SDL_Joystick *a, int b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_JoystickConnectionState,SDL_GetJoystickConnectionState,(SDL_Joystick *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_JoystickConnectionState,SDL_GetJoystickConnectionState,(SDL_Joystick *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(Uint16,SDL_GetJoystickFirmwareVersion,(SDL_Joystick *a),(a),return)
|
SDL_DYNAPI_PROC(Uint16,SDL_GetJoystickFirmwareVersion,(SDL_Joystick *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_Joystick*,SDL_GetJoystickFromID,(SDL_JoystickID a),(a),return)
|
SDL_DYNAPI_PROC(SDL_Joystick*,SDL_GetJoystickFromID,(SDL_JoystickID a),(a),return)
|
||||||
@@ -419,7 +419,7 @@ SDL_DYNAPI_PROC(SDL_Keycode,SDL_GetKeyFromScancode,(SDL_Scancode a, SDL_Keymod b
|
|||||||
SDL_DYNAPI_PROC(const char*,SDL_GetKeyName,(SDL_Keycode a),(a),return)
|
SDL_DYNAPI_PROC(const char*,SDL_GetKeyName,(SDL_Keycode a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_Window*,SDL_GetKeyboardFocus,(void),(),return)
|
SDL_DYNAPI_PROC(SDL_Window*,SDL_GetKeyboardFocus,(void),(),return)
|
||||||
SDL_DYNAPI_PROC(const char*,SDL_GetKeyboardNameForID,(SDL_KeyboardID a),(a),return)
|
SDL_DYNAPI_PROC(const char*,SDL_GetKeyboardNameForID,(SDL_KeyboardID a),(a),return)
|
||||||
SDL_DYNAPI_PROC(const Uint8*,SDL_GetKeyboardState,(int *a),(a),return)
|
SDL_DYNAPI_PROC(const SDL_bool*,SDL_GetKeyboardState,(int *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(SDL_KeyboardID*,SDL_GetKeyboards,(int *a),(a),return)
|
SDL_DYNAPI_PROC(SDL_KeyboardID*,SDL_GetKeyboards,(int *a),(a),return)
|
||||||
SDL_DYNAPI_PROC(void,SDL_GetLogOutputFunction,(SDL_LogOutputFunction *a, void **b),(a,b),)
|
SDL_DYNAPI_PROC(void,SDL_GetLogOutputFunction,(SDL_LogOutputFunction *a, void **b),(a,b),)
|
||||||
SDL_DYNAPI_PROC(SDL_LogPriority,SDL_GetLogPriority,(int a),(a),return)
|
SDL_DYNAPI_PROC(SDL_LogPriority,SDL_GetLogPriority,(int a),(a),return)
|
||||||
@@ -832,9 +832,9 @@ SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickLED,(SDL_Joystick *a, Uint8 b, Uint8 c,
|
|||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickPlayerIndex,(SDL_Joystick *a, int b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickPlayerIndex,(SDL_Joystick *a, int b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualAxis,(SDL_Joystick *a, int b, Sint16 c),(a,b,c),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualAxis,(SDL_Joystick *a, int b, Sint16 c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualBall,(SDL_Joystick *a, int b, Sint16 c, Sint16 d),(a,b,c,d),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualBall,(SDL_Joystick *a, int b, Sint16 c, Sint16 d),(a,b,c,d),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualButton,(SDL_Joystick *a, int b, Uint8 c),(a,b,c),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualButton,(SDL_Joystick *a, int b, SDL_bool c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualHat,(SDL_Joystick *a, int b, Uint8 c),(a,b,c),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualHat,(SDL_Joystick *a, int b, Uint8 c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualTouchpad,(SDL_Joystick *a, int b, int c, Uint8 d, float e, float f, float g),(a,b,c,d,e,f,g),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_SetJoystickVirtualTouchpad,(SDL_Joystick *a, int b, int c, SDL_bool d, float e, float f, float g),(a,b,c,d,e,f,g),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_SetLinuxThreadPriority,(Sint64 a, int b),(a,b),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_SetLinuxThreadPriority,(Sint64 a, int b),(a,b),return)
|
||||||
SDL_DYNAPI_PROC(SDL_bool,SDL_SetLinuxThreadPriorityAndPolicy,(Sint64 a, int b, int c),(a,b,c),return)
|
SDL_DYNAPI_PROC(SDL_bool,SDL_SetLinuxThreadPriorityAndPolicy,(Sint64 a, int b, int c),(a,b,c),return)
|
||||||
SDL_DYNAPI_PROC(void,SDL_SetLogOutputFunction,(SDL_LogOutputFunction a, void *b),(a,b),)
|
SDL_DYNAPI_PROC(void,SDL_SetLogOutputFunction,(SDL_LogOutputFunction a, void *b),(a,b),)
|
||||||
|
|||||||
@@ -512,7 +512,7 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
#define PRINT_KEY_EVENT(event) \
|
#define PRINT_KEY_EVENT(event) \
|
||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u state=%s repeat=%s scancode=%u keycode=%u mod=0x%x)", \
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u state=%s repeat=%s scancode=%u keycode=%u mod=0x%x)", \
|
||||||
(uint)event->key.timestamp, (uint)event->key.windowID, (uint)event->key.which, \
|
(uint)event->key.timestamp, (uint)event->key.windowID, (uint)event->key.which, \
|
||||||
event->key.state == SDL_PRESSED ? "pressed" : "released", \
|
event->key.down ? "pressed" : "released", \
|
||||||
event->key.repeat ? "true" : "false", \
|
event->key.repeat ? "true" : "false", \
|
||||||
(uint)event->key.scancode, \
|
(uint)event->key.scancode, \
|
||||||
(uint)event->key.key, \
|
(uint)event->key.key, \
|
||||||
@@ -562,7 +562,7 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u button=%u state=%s clicks=%u x=%g y=%g)", \
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u button=%u state=%s clicks=%u x=%g y=%g)", \
|
||||||
(uint)event->button.timestamp, (uint)event->button.windowID, \
|
(uint)event->button.timestamp, (uint)event->button.windowID, \
|
||||||
(uint)event->button.which, (uint)event->button.button, \
|
(uint)event->button.which, (uint)event->button.button, \
|
||||||
event->button.state == SDL_PRESSED ? "pressed" : "released", \
|
event->button.down ? "pressed" : "released", \
|
||||||
(uint)event->button.clicks, event->button.x, event->button.y)
|
(uint)event->button.clicks, event->button.x, event->button.y)
|
||||||
SDL_EVENT_CASE(SDL_EVENT_MOUSE_BUTTON_DOWN)
|
SDL_EVENT_CASE(SDL_EVENT_MOUSE_BUTTON_DOWN)
|
||||||
PRINT_MBUTTON_EVENT(event);
|
PRINT_MBUTTON_EVENT(event);
|
||||||
@@ -600,7 +600,7 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
#define PRINT_JBUTTON_EVENT(event) \
|
#define PRINT_JBUTTON_EVENT(event) \
|
||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u which=%d button=%u state=%s)", \
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u which=%d button=%u state=%s)", \
|
||||||
(uint)event->jbutton.timestamp, (int)event->jbutton.which, \
|
(uint)event->jbutton.timestamp, (int)event->jbutton.which, \
|
||||||
(uint)event->jbutton.button, event->jbutton.state == SDL_PRESSED ? "pressed" : "released")
|
(uint)event->jbutton.button, event->jbutton.down ? "pressed" : "released")
|
||||||
SDL_EVENT_CASE(SDL_EVENT_JOYSTICK_BUTTON_DOWN)
|
SDL_EVENT_CASE(SDL_EVENT_JOYSTICK_BUTTON_DOWN)
|
||||||
PRINT_JBUTTON_EVENT(event);
|
PRINT_JBUTTON_EVENT(event);
|
||||||
break;
|
break;
|
||||||
@@ -636,7 +636,7 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
#define PRINT_CBUTTON_EVENT(event) \
|
#define PRINT_CBUTTON_EVENT(event) \
|
||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u which=%d button=%u state=%s)", \
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u which=%d button=%u state=%s)", \
|
||||||
(uint)event->gbutton.timestamp, (int)event->gbutton.which, \
|
(uint)event->gbutton.timestamp, (int)event->gbutton.which, \
|
||||||
(uint)event->gbutton.button, event->gbutton.state == SDL_PRESSED ? "pressed" : "released")
|
(uint)event->gbutton.button, event->gbutton.down ? "pressed" : "released")
|
||||||
SDL_EVENT_CASE(SDL_EVENT_GAMEPAD_BUTTON_DOWN)
|
SDL_EVENT_CASE(SDL_EVENT_GAMEPAD_BUTTON_DOWN)
|
||||||
PRINT_CBUTTON_EVENT(event);
|
PRINT_CBUTTON_EVENT(event);
|
||||||
break;
|
break;
|
||||||
@@ -704,7 +704,7 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
#define PRINT_PTOUCH_EVENT(event) \
|
#define PRINT_PTOUCH_EVENT(event) \
|
||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u pen_state=%u x=%g y=%g eraser=%s state=%s)", \
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u pen_state=%u x=%g y=%g eraser=%s state=%s)", \
|
||||||
(uint)event->ptouch.timestamp, (uint)event->ptouch.windowID, (uint)event->ptouch.which, (uint)event->ptouch.pen_state, event->ptouch.x, event->ptouch.y, \
|
(uint)event->ptouch.timestamp, (uint)event->ptouch.windowID, (uint)event->ptouch.which, (uint)event->ptouch.pen_state, event->ptouch.x, event->ptouch.y, \
|
||||||
event->ptouch.eraser ? "yes" : "no", event->ptouch.state == SDL_PRESSED ? "down" : "up");
|
event->ptouch.eraser ? "yes" : "no", event->ptouch.down ? "down" : "up");
|
||||||
SDL_EVENT_CASE(SDL_EVENT_PEN_DOWN)
|
SDL_EVENT_CASE(SDL_EVENT_PEN_DOWN)
|
||||||
PRINT_PTOUCH_EVENT(event);
|
PRINT_PTOUCH_EVENT(event);
|
||||||
break;
|
break;
|
||||||
@@ -738,7 +738,7 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
#define PRINT_PBUTTON_EVENT(event) \
|
#define PRINT_PBUTTON_EVENT(event) \
|
||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u pen_state=%u x=%g y=%g button=%u state=%s)", \
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u windowid=%u which=%u pen_state=%u x=%g y=%g button=%u state=%s)", \
|
||||||
(uint)event->pbutton.timestamp, (uint)event->pbutton.windowID, (uint)event->pbutton.which, (uint)event->pbutton.pen_state, event->pbutton.x, event->pbutton.y, \
|
(uint)event->pbutton.timestamp, (uint)event->pbutton.windowID, (uint)event->pbutton.which, (uint)event->pbutton.pen_state, event->pbutton.x, event->pbutton.y, \
|
||||||
(uint)event->pbutton.button, event->pbutton.state == SDL_PRESSED ? "down" : "up");
|
(uint)event->pbutton.button, event->pbutton.down ? "down" : "up");
|
||||||
SDL_EVENT_CASE(SDL_EVENT_PEN_BUTTON_DOWN)
|
SDL_EVENT_CASE(SDL_EVENT_PEN_BUTTON_DOWN)
|
||||||
PRINT_PBUTTON_EVENT(event);
|
PRINT_PBUTTON_EVENT(event);
|
||||||
break;
|
break;
|
||||||
|
|||||||
+26
-34
@@ -54,7 +54,7 @@ typedef struct SDL_Keyboard
|
|||||||
SDL_Window *focus;
|
SDL_Window *focus;
|
||||||
SDL_Keymod modstate;
|
SDL_Keymod modstate;
|
||||||
Uint8 keysource[SDL_NUM_SCANCODES];
|
Uint8 keysource[SDL_NUM_SCANCODES];
|
||||||
Uint8 keystate[SDL_NUM_SCANCODES];
|
SDL_bool keystate[SDL_NUM_SCANCODES];
|
||||||
SDL_Keymap *keymap;
|
SDL_Keymap *keymap;
|
||||||
bool french_numbers;
|
bool french_numbers;
|
||||||
bool latin_letters;
|
bool latin_letters;
|
||||||
@@ -220,8 +220,8 @@ void SDL_ResetKeyboard(void)
|
|||||||
printf("Resetting keyboard\n");
|
printf("Resetting keyboard\n");
|
||||||
#endif
|
#endif
|
||||||
for (scancode = SDL_SCANCODE_UNKNOWN; scancode < SDL_NUM_SCANCODES; ++scancode) {
|
for (scancode = SDL_SCANCODE_UNKNOWN; scancode < SDL_NUM_SCANCODES; ++scancode) {
|
||||||
if (keyboard->keystate[scancode] == SDL_PRESSED) {
|
if (keyboard->keystate[scancode]) {
|
||||||
SDL_SendKeyboardKey(0, SDL_GLOBAL_KEYBOARD_ID, 0, (SDL_Scancode)scancode, SDL_RELEASED);
|
SDL_SendKeyboardKey(0, SDL_GLOBAL_KEYBOARD_ID, 0, (SDL_Scancode)scancode, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -490,36 +490,29 @@ SDL_Scancode SDL_GetScancodeFromKey(SDL_Keycode key, SDL_Keymod *modstate)
|
|||||||
return SDL_GetKeymapScancode(keyboard->keymap, key, modstate);
|
return SDL_GetKeymapScancode(keyboard->keymap, key, modstate);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool SDL_SendKeyboardKeyInternal(Uint64 timestamp, Uint32 flags, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, Uint8 state)
|
static bool SDL_SendKeyboardKeyInternal(Uint64 timestamp, Uint32 flags, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, bool down)
|
||||||
{
|
{
|
||||||
SDL_Keyboard *keyboard = &SDL_keyboard;
|
SDL_Keyboard *keyboard = &SDL_keyboard;
|
||||||
bool posted = false;
|
bool posted = false;
|
||||||
SDL_Keycode keycode = SDLK_UNKNOWN;
|
SDL_Keycode keycode = SDLK_UNKNOWN;
|
||||||
Uint32 type;
|
Uint32 type;
|
||||||
Uint8 repeat = false;
|
bool repeat = false;
|
||||||
const Uint8 source = flags & KEYBOARD_SOURCE_MASK;
|
const Uint8 source = flags & KEYBOARD_SOURCE_MASK;
|
||||||
|
|
||||||
#ifdef DEBUG_KEYBOARD
|
#ifdef DEBUG_KEYBOARD
|
||||||
printf("The '%s' key has been %s\n", SDL_GetScancodeName(scancode),
|
printf("The '%s' key has been %s\n", SDL_GetScancodeName(scancode), down ? "pressed" : "released");
|
||||||
state == SDL_PRESSED ? "pressed" : "released");
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Figure out what type of event this is
|
// Figure out what type of event this is
|
||||||
switch (state) {
|
if (down) {
|
||||||
case SDL_PRESSED:
|
|
||||||
type = SDL_EVENT_KEY_DOWN;
|
type = SDL_EVENT_KEY_DOWN;
|
||||||
break;
|
} else {
|
||||||
case SDL_RELEASED:
|
|
||||||
type = SDL_EVENT_KEY_UP;
|
type = SDL_EVENT_KEY_UP;
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Invalid state -- bail
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scancode > SDL_SCANCODE_UNKNOWN && scancode < SDL_NUM_SCANCODES) {
|
if (scancode > SDL_SCANCODE_UNKNOWN && scancode < SDL_NUM_SCANCODES) {
|
||||||
// Drop events that don't change state
|
// Drop events that don't change state
|
||||||
if (state) {
|
if (down) {
|
||||||
if (keyboard->keystate[scancode]) {
|
if (keyboard->keystate[scancode]) {
|
||||||
if (!(keyboard->keysource[scancode] & source)) {
|
if (!(keyboard->keysource[scancode] & source)) {
|
||||||
keyboard->keysource[scancode] |= source;
|
keyboard->keysource[scancode] |= source;
|
||||||
@@ -536,7 +529,7 @@ static bool SDL_SendKeyboardKeyInternal(Uint64 timestamp, Uint32 flags, SDL_Keyb
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update internal keyboard state
|
// Update internal keyboard state
|
||||||
keyboard->keystate[scancode] = state;
|
keyboard->keystate[scancode] = down;
|
||||||
|
|
||||||
keycode = SDL_GetKeyFromScancode(scancode, keyboard->modstate, true);
|
keycode = SDL_GetKeyFromScancode(scancode, keyboard->modstate, true);
|
||||||
|
|
||||||
@@ -616,7 +609,7 @@ static bool SDL_SendKeyboardKeyInternal(Uint64 timestamp, Uint32 flags, SDL_Keyb
|
|||||||
event.key.key = keycode;
|
event.key.key = keycode;
|
||||||
event.key.mod = keyboard->modstate;
|
event.key.mod = keyboard->modstate;
|
||||||
event.key.raw = (Uint16)rawcode;
|
event.key.raw = (Uint16)rawcode;
|
||||||
event.key.state = state;
|
event.key.down = down;
|
||||||
event.key.repeat = repeat;
|
event.key.repeat = repeat;
|
||||||
event.key.windowID = keyboard->focus ? keyboard->focus->id : 0;
|
event.key.windowID = keyboard->focus ? keyboard->focus->id : 0;
|
||||||
event.key.which = keyboardID;
|
event.key.which = keyboardID;
|
||||||
@@ -626,8 +619,7 @@ static bool SDL_SendKeyboardKeyInternal(Uint64 timestamp, Uint32 flags, SDL_Keyb
|
|||||||
/* If the keyboard is grabbed and the grabbed window is in full-screen,
|
/* If the keyboard is grabbed and the grabbed window is in full-screen,
|
||||||
minimize the window when we receive Alt+Tab, unless the application
|
minimize the window when we receive Alt+Tab, unless the application
|
||||||
has explicitly opted out of this behavior. */
|
has explicitly opted out of this behavior. */
|
||||||
if (keycode == SDLK_TAB &&
|
if (keycode == SDLK_TAB && down &&
|
||||||
state == SDL_PRESSED &&
|
|
||||||
(keyboard->modstate & SDL_KMOD_ALT) &&
|
(keyboard->modstate & SDL_KMOD_ALT) &&
|
||||||
keyboard->focus &&
|
keyboard->focus &&
|
||||||
(keyboard->focus->flags & SDL_WINDOW_KEYBOARD_GRABBED) &&
|
(keyboard->focus->flags & SDL_WINDOW_KEYBOARD_GRABBED) &&
|
||||||
@@ -655,42 +647,42 @@ void SDL_SendKeyboardUnicodeKey(Uint64 timestamp, Uint32 ch)
|
|||||||
|
|
||||||
if (modstate & SDL_KMOD_SHIFT) {
|
if (modstate & SDL_KMOD_SHIFT) {
|
||||||
// If the character uses shift, press shift down
|
// If the character uses shift, press shift down
|
||||||
SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_VIRTUAL, SDL_GLOBAL_KEYBOARD_ID, 0, SDL_SCANCODE_LSHIFT, SDL_PRESSED);
|
SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_VIRTUAL, SDL_GLOBAL_KEYBOARD_ID, 0, SDL_SCANCODE_LSHIFT, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send a keydown and keyup for the character
|
// Send a keydown and keyup for the character
|
||||||
SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_VIRTUAL, SDL_GLOBAL_KEYBOARD_ID, 0, scancode, SDL_PRESSED);
|
SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_VIRTUAL, SDL_GLOBAL_KEYBOARD_ID, 0, scancode, true);
|
||||||
SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_VIRTUAL, SDL_GLOBAL_KEYBOARD_ID, 0, scancode, SDL_RELEASED);
|
SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_VIRTUAL, SDL_GLOBAL_KEYBOARD_ID, 0, scancode, false);
|
||||||
|
|
||||||
if (modstate & SDL_KMOD_SHIFT) {
|
if (modstate & SDL_KMOD_SHIFT) {
|
||||||
// If the character uses shift, release shift
|
// If the character uses shift, release shift
|
||||||
SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_VIRTUAL, SDL_GLOBAL_KEYBOARD_ID, 0, SDL_SCANCODE_LSHIFT, SDL_RELEASED);
|
SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_VIRTUAL, SDL_GLOBAL_KEYBOARD_ID, 0, SDL_SCANCODE_LSHIFT, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDL_SendKeyboardKey(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, Uint8 state)
|
bool SDL_SendKeyboardKey(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, bool down)
|
||||||
{
|
{
|
||||||
return SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_HARDWARE, keyboardID, rawcode, scancode, state);
|
return SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_HARDWARE, keyboardID, rawcode, scancode, down);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDL_SendKeyboardKeyAndKeycode(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, SDL_Keycode keycode, Uint8 state)
|
bool SDL_SendKeyboardKeyAndKeycode(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, SDL_Keycode keycode, bool down)
|
||||||
{
|
{
|
||||||
if (state == SDL_PRESSED) {
|
if (down) {
|
||||||
// Make sure we have this keycode in our keymap
|
// Make sure we have this keycode in our keymap
|
||||||
SetKeymapEntry(scancode, SDL_GetModState(), keycode);
|
SetKeymapEntry(scancode, SDL_GetModState(), keycode);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_HARDWARE, keyboardID, rawcode, scancode, state);
|
return SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_HARDWARE, keyboardID, rawcode, scancode, down);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDL_SendKeyboardKeyIgnoreModifiers(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, Uint8 state)
|
bool SDL_SendKeyboardKeyIgnoreModifiers(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, bool down)
|
||||||
{
|
{
|
||||||
return SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_HARDWARE | KEYBOARD_IGNOREMODIFIERS, keyboardID, rawcode, scancode, state);
|
return SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_HARDWARE | KEYBOARD_IGNOREMODIFIERS, keyboardID, rawcode, scancode, down);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDL_SendKeyboardKeyAutoRelease(Uint64 timestamp, SDL_Scancode scancode)
|
bool SDL_SendKeyboardKeyAutoRelease(Uint64 timestamp, SDL_Scancode scancode)
|
||||||
{
|
{
|
||||||
return SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_AUTORELEASE, SDL_GLOBAL_KEYBOARD_ID, 0, scancode, SDL_PRESSED);
|
return SDL_SendKeyboardKeyInternal(timestamp, KEYBOARD_AUTORELEASE, SDL_GLOBAL_KEYBOARD_ID, 0, scancode, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_ReleaseAutoReleaseKeys(void)
|
void SDL_ReleaseAutoReleaseKeys(void)
|
||||||
@@ -701,7 +693,7 @@ void SDL_ReleaseAutoReleaseKeys(void)
|
|||||||
if (keyboard->autorelease_pending) {
|
if (keyboard->autorelease_pending) {
|
||||||
for (scancode = SDL_SCANCODE_UNKNOWN; scancode < SDL_NUM_SCANCODES; ++scancode) {
|
for (scancode = SDL_SCANCODE_UNKNOWN; scancode < SDL_NUM_SCANCODES; ++scancode) {
|
||||||
if (keyboard->keysource[scancode] == KEYBOARD_AUTORELEASE) {
|
if (keyboard->keysource[scancode] == KEYBOARD_AUTORELEASE) {
|
||||||
SDL_SendKeyboardKeyInternal(0, KEYBOARD_AUTORELEASE, SDL_GLOBAL_KEYBOARD_ID, 0, (SDL_Scancode)scancode, SDL_RELEASED);
|
SDL_SendKeyboardKeyInternal(0, KEYBOARD_AUTORELEASE, SDL_GLOBAL_KEYBOARD_ID, 0, (SDL_Scancode)scancode, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
keyboard->autorelease_pending = false;
|
keyboard->autorelease_pending = false;
|
||||||
@@ -871,7 +863,7 @@ void SDL_QuitKeyboard(void)
|
|||||||
SDL_KeycodeOptionsChanged, &SDL_keyboard);
|
SDL_KeycodeOptionsChanged, &SDL_keyboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Uint8 *SDL_GetKeyboardState(int *numkeys)
|
const SDL_bool *SDL_GetKeyboardState(int *numkeys)
|
||||||
{
|
{
|
||||||
SDL_Keyboard *keyboard = &SDL_keyboard;
|
SDL_Keyboard *keyboard = &SDL_keyboard;
|
||||||
|
|
||||||
|
|||||||
@@ -55,13 +55,13 @@ extern bool SDL_SetKeyboardFocus(SDL_Window *window);
|
|||||||
extern void SDL_SendKeyboardUnicodeKey(Uint64 timestamp, Uint32 ch);
|
extern void SDL_SendKeyboardUnicodeKey(Uint64 timestamp, Uint32 ch);
|
||||||
|
|
||||||
// Send a keyboard key event
|
// Send a keyboard key event
|
||||||
extern bool SDL_SendKeyboardKey(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, Uint8 state);
|
extern bool SDL_SendKeyboardKey(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, bool down);
|
||||||
extern bool SDL_SendKeyboardKeyIgnoreModifiers(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, Uint8 state);
|
extern bool SDL_SendKeyboardKeyIgnoreModifiers(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, bool down);
|
||||||
extern bool SDL_SendKeyboardKeyAutoRelease(Uint64 timestamp, SDL_Scancode scancode);
|
extern bool SDL_SendKeyboardKeyAutoRelease(Uint64 timestamp, SDL_Scancode scancode);
|
||||||
|
|
||||||
/* This is for platforms that don't know the keymap but can report scancode and keycode directly.
|
/* This is for platforms that don't know the keymap but can report scancode and keycode directly.
|
||||||
Most platforms should prefer to optionally call SDL_SetKeymap and then use SDL_SendKeyboardKey. */
|
Most platforms should prefer to optionally call SDL_SetKeymap and then use SDL_SendKeyboardKey. */
|
||||||
extern bool SDL_SendKeyboardKeyAndKeycode(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, SDL_Keycode keycode, Uint8 state);
|
extern bool SDL_SendKeyboardKeyAndKeycode(Uint64 timestamp, SDL_KeyboardID keyboardID, int rawcode, SDL_Scancode scancode, SDL_Keycode keycode, bool down);
|
||||||
|
|
||||||
// Release all the autorelease keys
|
// Release all the autorelease keys
|
||||||
extern void SDL_ReleaseAutoReleaseKeys(void);
|
extern void SDL_ReleaseAutoReleaseKeys(void);
|
||||||
|
|||||||
+16
-22
@@ -486,7 +486,7 @@ void SDL_ResetMouse(void)
|
|||||||
|
|
||||||
for (i = 1; i <= sizeof(buttonState)*8; ++i) {
|
for (i = 1; i <= sizeof(buttonState)*8; ++i) {
|
||||||
if (buttonState & SDL_BUTTON(i)) {
|
if (buttonState & SDL_BUTTON(i)) {
|
||||||
SDL_SendMouseButton(0, mouse->focus, mouse->mouseID, SDL_RELEASED, i);
|
SDL_SendMouseButton(0, mouse->focus, mouse->mouseID, i, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_assert(SDL_GetMouseButtonState(mouse, SDL_GLOBAL_MOUSE_ID, false) == 0);
|
SDL_assert(SDL_GetMouseButtonState(mouse, SDL_GLOBAL_MOUSE_ID, false) == 0);
|
||||||
@@ -863,7 +863,7 @@ static void SDL_PrivateSendMouseMotion(Uint64 timestamp, SDL_Window *window, SDL
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static SDL_MouseInputSource *GetMouseInputSource(SDL_Mouse *mouse, SDL_MouseID mouseID, Uint8 state, Uint8 button)
|
static SDL_MouseInputSource *GetMouseInputSource(SDL_Mouse *mouse, SDL_MouseID mouseID, bool down, Uint8 button)
|
||||||
{
|
{
|
||||||
SDL_MouseInputSource *source, *match = NULL, *sources;
|
SDL_MouseInputSource *source, *match = NULL, *sources;
|
||||||
int i;
|
int i;
|
||||||
@@ -876,7 +876,7 @@ static SDL_MouseInputSource *GetMouseInputSource(SDL_Mouse *mouse, SDL_MouseID m
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!state && (!match || !(match->buttonstate & SDL_BUTTON(button)))) {
|
if (!down && (!match || !(match->buttonstate & SDL_BUTTON(button)))) {
|
||||||
/* This might be a button release from a transition between mouse messages and raw input.
|
/* This might be a button release from a transition between mouse messages and raw input.
|
||||||
* See if there's another mouse source that already has that button down and use that.
|
* See if there's another mouse source that already has that button down and use that.
|
||||||
*/
|
*/
|
||||||
@@ -922,7 +922,7 @@ static SDL_MouseClickState *GetMouseClickState(SDL_Mouse *mouse, Uint8 button)
|
|||||||
return &mouse->clickstate[button];
|
return &mouse->clickstate[button];
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button, int clicks)
|
static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 button, bool down, int clicks)
|
||||||
{
|
{
|
||||||
SDL_Mouse *mouse = SDL_GetMouse();
|
SDL_Mouse *mouse = SDL_GetMouse();
|
||||||
Uint32 type;
|
Uint32 type;
|
||||||
@@ -934,7 +934,7 @@ static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL
|
|||||||
mouseID = SDL_GLOBAL_MOUSE_ID;
|
mouseID = SDL_GLOBAL_MOUSE_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
source = GetMouseInputSource(mouse, mouseID, state, button);
|
source = GetMouseInputSource(mouse, mouseID, down, button);
|
||||||
if (!source) {
|
if (!source) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -943,7 +943,7 @@ static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL
|
|||||||
// SDL_HINT_MOUSE_TOUCH_EVENTS: controlling whether mouse events should generate synthetic touch events
|
// SDL_HINT_MOUSE_TOUCH_EVENTS: controlling whether mouse events should generate synthetic touch events
|
||||||
if (mouse->mouse_touch_events) {
|
if (mouse->mouse_touch_events) {
|
||||||
if (mouseID != SDL_TOUCH_MOUSEID && button == SDL_BUTTON_LEFT) {
|
if (mouseID != SDL_TOUCH_MOUSEID && button == SDL_BUTTON_LEFT) {
|
||||||
if (state == SDL_PRESSED) {
|
if (down) {
|
||||||
track_mouse_down = true;
|
track_mouse_down = true;
|
||||||
} else {
|
} else {
|
||||||
track_mouse_down = false;
|
track_mouse_down = false;
|
||||||
@@ -964,22 +964,16 @@ static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Figure out which event to perform
|
// Figure out which event to perform
|
||||||
switch (state) {
|
if (down) {
|
||||||
case SDL_PRESSED:
|
|
||||||
type = SDL_EVENT_MOUSE_BUTTON_DOWN;
|
type = SDL_EVENT_MOUSE_BUTTON_DOWN;
|
||||||
buttonstate |= SDL_BUTTON(button);
|
buttonstate |= SDL_BUTTON(button);
|
||||||
break;
|
} else {
|
||||||
case SDL_RELEASED:
|
|
||||||
type = SDL_EVENT_MOUSE_BUTTON_UP;
|
type = SDL_EVENT_MOUSE_BUTTON_UP;
|
||||||
buttonstate &= ~SDL_BUTTON(button);
|
buttonstate &= ~SDL_BUTTON(button);
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Invalid state -- bail
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// We do this after calculating buttonstate so button presses gain focus
|
// We do this after calculating buttonstate so button presses gain focus
|
||||||
if (window && state == SDL_PRESSED) {
|
if (window && down) {
|
||||||
SDL_UpdateMouseFocus(window, mouse->x, mouse->y, buttonstate, true);
|
SDL_UpdateMouseFocus(window, mouse->x, mouse->y, buttonstate, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -992,7 +986,7 @@ static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL
|
|||||||
if (clicks < 0) {
|
if (clicks < 0) {
|
||||||
SDL_MouseClickState *clickstate = GetMouseClickState(mouse, button);
|
SDL_MouseClickState *clickstate = GetMouseClickState(mouse, button);
|
||||||
if (clickstate) {
|
if (clickstate) {
|
||||||
if (state == SDL_PRESSED) {
|
if (down) {
|
||||||
Uint64 now = SDL_GetTicks();
|
Uint64 now = SDL_GetTicks();
|
||||||
|
|
||||||
if (now >= (clickstate->last_timestamp + mouse->double_click_time) ||
|
if (now >= (clickstate->last_timestamp + mouse->double_click_time) ||
|
||||||
@@ -1020,7 +1014,7 @@ static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL
|
|||||||
event.common.timestamp = timestamp;
|
event.common.timestamp = timestamp;
|
||||||
event.button.windowID = mouse->focus ? mouse->focus->id : 0;
|
event.button.windowID = mouse->focus ? mouse->focus->id : 0;
|
||||||
event.button.which = source->mouseID;
|
event.button.which = source->mouseID;
|
||||||
event.button.state = state;
|
event.button.down = down;
|
||||||
event.button.button = button;
|
event.button.button = button;
|
||||||
event.button.clicks = (Uint8)SDL_min(clicks, 255);
|
event.button.clicks = (Uint8)SDL_min(clicks, 255);
|
||||||
event.button.x = mouse->x;
|
event.button.x = mouse->x;
|
||||||
@@ -1029,7 +1023,7 @@ static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We do this after dispatching event so button releases can lose focus
|
// We do this after dispatching event so button releases can lose focus
|
||||||
if (window && state == SDL_RELEASED) {
|
if (window && !down) {
|
||||||
SDL_UpdateMouseFocus(window, mouse->x, mouse->y, buttonstate, true);
|
SDL_UpdateMouseFocus(window, mouse->x, mouse->y, buttonstate, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1039,15 +1033,15 @@ static void SDL_PrivateSendMouseButton(Uint64 timestamp, SDL_Window *window, SDL
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_SendMouseButtonClicks(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button, int clicks)
|
void SDL_SendMouseButtonClicks(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 button, bool down, int clicks)
|
||||||
{
|
{
|
||||||
clicks = SDL_max(clicks, 0);
|
clicks = SDL_max(clicks, 0);
|
||||||
SDL_PrivateSendMouseButton(timestamp, window, mouseID, state, button, clicks);
|
SDL_PrivateSendMouseButton(timestamp, window, mouseID, button, down, clicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_SendMouseButton(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button)
|
void SDL_SendMouseButton(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 button, bool down)
|
||||||
{
|
{
|
||||||
SDL_PrivateSendMouseButton(timestamp, window, mouseID, state, button, -1);
|
SDL_PrivateSendMouseButton(timestamp, window, mouseID, button, down, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_SendMouseWheel(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction)
|
void SDL_SendMouseWheel(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction)
|
||||||
|
|||||||
@@ -169,10 +169,10 @@ extern bool SDL_SetMouseSystemScale(int num_values, const float *values);
|
|||||||
extern void SDL_SendMouseMotion(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, bool relative, float x, float y);
|
extern void SDL_SendMouseMotion(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, bool relative, float x, float y);
|
||||||
|
|
||||||
// Send a mouse button event
|
// Send a mouse button event
|
||||||
extern void SDL_SendMouseButton(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button);
|
extern void SDL_SendMouseButton(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 button, bool down);
|
||||||
|
|
||||||
// Send a mouse button event with a click count
|
// Send a mouse button event with a click count
|
||||||
extern void SDL_SendMouseButtonClicks(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 state, Uint8 button, int clicks);
|
extern void SDL_SendMouseButtonClicks(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, Uint8 button, bool down, int clicks);
|
||||||
|
|
||||||
// Send a mouse wheel event
|
// Send a mouse wheel event
|
||||||
extern void SDL_SendMouseWheel(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction);
|
extern void SDL_SendMouseWheel(Uint64 timestamp, SDL_Window *window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction);
|
||||||
|
|||||||
+13
-13
@@ -309,7 +309,7 @@ void SDL_RemoveAllPenDevices(void (*callback)(SDL_PenID instance_id, void *handl
|
|||||||
SDL_UnlockRWLock(pen_device_rwlock);
|
SDL_UnlockRWLock(pen_device_rwlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, Uint8 state, Uint8 eraser)
|
void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, bool eraser, bool down)
|
||||||
{
|
{
|
||||||
bool send_event = false;
|
bool send_event = false;
|
||||||
SDL_PenInputFlags input_state = 0;
|
SDL_PenInputFlags input_state = 0;
|
||||||
@@ -327,10 +327,10 @@ void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window
|
|||||||
x = pen->x;
|
x = pen->x;
|
||||||
y = pen->y;
|
y = pen->y;
|
||||||
|
|
||||||
if (state && ((input_state & SDL_PEN_INPUT_DOWN) == 0)) {
|
if (down && ((input_state & SDL_PEN_INPUT_DOWN) == 0)) {
|
||||||
input_state |= SDL_PEN_INPUT_DOWN;
|
input_state |= SDL_PEN_INPUT_DOWN;
|
||||||
send_event = true;
|
send_event = true;
|
||||||
} else if (!state && (input_state & SDL_PEN_INPUT_DOWN)) {
|
} else if (!down && (input_state & SDL_PEN_INPUT_DOWN)) {
|
||||||
input_state &= ~SDL_PEN_INPUT_DOWN;
|
input_state &= ~SDL_PEN_INPUT_DOWN;
|
||||||
send_event = true;
|
send_event = true;
|
||||||
}
|
}
|
||||||
@@ -338,7 +338,7 @@ void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window
|
|||||||
if (eraser && ((input_state & SDL_PEN_INPUT_ERASER_TIP) == 0)) {
|
if (eraser && ((input_state & SDL_PEN_INPUT_ERASER_TIP) == 0)) {
|
||||||
input_state |= SDL_PEN_INPUT_ERASER_TIP;
|
input_state |= SDL_PEN_INPUT_ERASER_TIP;
|
||||||
send_event = true;
|
send_event = true;
|
||||||
} else if (!state && (input_state & SDL_PEN_INPUT_ERASER_TIP)) {
|
} else if (!down && (input_state & SDL_PEN_INPUT_ERASER_TIP)) {
|
||||||
input_state &= ~SDL_PEN_INPUT_ERASER_TIP;
|
input_state &= ~SDL_PEN_INPUT_ERASER_TIP;
|
||||||
send_event = true;
|
send_event = true;
|
||||||
}
|
}
|
||||||
@@ -348,7 +348,7 @@ void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window
|
|||||||
SDL_UnlockRWLock(pen_device_rwlock);
|
SDL_UnlockRWLock(pen_device_rwlock);
|
||||||
|
|
||||||
if (send_event) {
|
if (send_event) {
|
||||||
const SDL_EventType evtype = state ? SDL_EVENT_PEN_DOWN : SDL_EVENT_PEN_UP;
|
const SDL_EventType evtype = down ? SDL_EVENT_PEN_DOWN : SDL_EVENT_PEN_UP;
|
||||||
if (send_event && SDL_EventEnabled(evtype)) {
|
if (send_event && SDL_EventEnabled(evtype)) {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
SDL_zero(event);
|
SDL_zero(event);
|
||||||
@@ -359,8 +359,8 @@ void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window
|
|||||||
event.ptouch.pen_state = input_state;
|
event.ptouch.pen_state = input_state;
|
||||||
event.ptouch.x = x;
|
event.ptouch.x = x;
|
||||||
event.ptouch.y = y;
|
event.ptouch.y = y;
|
||||||
event.ptouch.eraser = eraser ? 1 : 0;
|
event.ptouch.eraser = eraser;
|
||||||
event.ptouch.state = state ? SDL_PRESSED : SDL_RELEASED;
|
event.ptouch.down = down;
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -443,7 +443,7 @@ void SDL_SendPenMotion(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_SendPenButton(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, Uint8 state, Uint8 button)
|
void SDL_SendPenButton(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, Uint8 button, bool down)
|
||||||
{
|
{
|
||||||
bool send_event = false;
|
bool send_event = false;
|
||||||
SDL_PenInputFlags input_state = 0;
|
SDL_PenInputFlags input_state = 0;
|
||||||
@@ -463,13 +463,13 @@ void SDL_SendPenButton(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window
|
|||||||
if (pen) {
|
if (pen) {
|
||||||
input_state = pen->input_state;
|
input_state = pen->input_state;
|
||||||
const Uint32 flag = (Uint32) (1u << button);
|
const Uint32 flag = (Uint32) (1u << button);
|
||||||
const Uint8 current = (input_state & flag) ? 1 : 0;
|
const bool current = ((input_state & flag) != 0);
|
||||||
x = pen->x;
|
x = pen->x;
|
||||||
y = pen->y;
|
y = pen->y;
|
||||||
if (state && !current) {
|
if (down && !current) {
|
||||||
input_state |= flag;
|
input_state |= flag;
|
||||||
send_event = true;
|
send_event = true;
|
||||||
} else if (!state && current) {
|
} else if (!down && current) {
|
||||||
input_state &= ~flag;
|
input_state &= ~flag;
|
||||||
send_event = true;
|
send_event = true;
|
||||||
}
|
}
|
||||||
@@ -478,7 +478,7 @@ void SDL_SendPenButton(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window
|
|||||||
SDL_UnlockRWLock(pen_device_rwlock);
|
SDL_UnlockRWLock(pen_device_rwlock);
|
||||||
|
|
||||||
if (send_event) {
|
if (send_event) {
|
||||||
const SDL_EventType evtype = state ? SDL_EVENT_PEN_BUTTON_DOWN : SDL_EVENT_PEN_BUTTON_UP;
|
const SDL_EventType evtype = down ? SDL_EVENT_PEN_BUTTON_DOWN : SDL_EVENT_PEN_BUTTON_UP;
|
||||||
if (SDL_EventEnabled(evtype)) {
|
if (SDL_EventEnabled(evtype)) {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
SDL_zero(event);
|
SDL_zero(event);
|
||||||
@@ -490,7 +490,7 @@ void SDL_SendPenButton(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window
|
|||||||
event.pbutton.x = x;
|
event.pbutton.x = x;
|
||||||
event.pbutton.y = y;
|
event.pbutton.y = y;
|
||||||
event.pbutton.button = button;
|
event.pbutton.button = button;
|
||||||
event.pbutton.state = state ? SDL_PRESSED : SDL_RELEASED;
|
event.pbutton.down = down;
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ extern void SDL_RemovePenDevice(Uint64 timestamp, SDL_PenID instance_id);
|
|||||||
extern void SDL_RemoveAllPenDevices(void (*callback)(SDL_PenID instance_id, void *handle, void *userdata), void *userdata);
|
extern void SDL_RemoveAllPenDevices(void (*callback)(SDL_PenID instance_id, void *handle, void *userdata), void *userdata);
|
||||||
|
|
||||||
// Backend calls this when a pen's button changes, to generate events and update state.
|
// Backend calls this when a pen's button changes, to generate events and update state.
|
||||||
extern void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, Uint8 state, Uint8 eraser);
|
extern void SDL_SendPenTouch(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, bool eraser, bool down);
|
||||||
|
|
||||||
// Backend calls this when a pen moves on the tablet, to generate events and update state.
|
// Backend calls this when a pen moves on the tablet, to generate events and update state.
|
||||||
extern void SDL_SendPenMotion(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, float x, float y);
|
extern void SDL_SendPenMotion(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, float x, float y);
|
||||||
@@ -77,7 +77,7 @@ extern void SDL_SendPenMotion(Uint64 timestamp, SDL_PenID instance_id, const SDL
|
|||||||
extern void SDL_SendPenAxis(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, SDL_PenAxis axis, float value);
|
extern void SDL_SendPenAxis(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, SDL_PenAxis axis, float value);
|
||||||
|
|
||||||
// Backend calls this when a pen's button changes, to generate events and update state.
|
// Backend calls this when a pen's button changes, to generate events and update state.
|
||||||
extern void SDL_SendPenButton(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, Uint8 state, Uint8 button);
|
extern void SDL_SendPenButton(Uint64 timestamp, SDL_PenID instance_id, const SDL_Window *window, Uint8 button, bool down);
|
||||||
|
|
||||||
// Backend can optionally use this to find the SDL_PenID for the `handle` that was passed to SDL_AddPenDevice.
|
// Backend can optionally use this to find the SDL_PenID for the `handle` that was passed to SDL_AddPenDevice.
|
||||||
extern SDL_PenID SDL_FindPenByHandle(void *handle);
|
extern SDL_PenID SDL_FindPenByHandle(void *handle);
|
||||||
|
|||||||
@@ -295,11 +295,11 @@ void SDL_SendTouch(Uint64 timestamp, SDL_TouchID id, SDL_FingerID fingerid, SDL_
|
|||||||
pos_y = (float)(window->h - 1);
|
pos_y = (float)(window->h - 1);
|
||||||
}
|
}
|
||||||
SDL_SendMouseMotion(timestamp, window, SDL_TOUCH_MOUSEID, false, pos_x, pos_y);
|
SDL_SendMouseMotion(timestamp, window, SDL_TOUCH_MOUSEID, false, pos_x, pos_y);
|
||||||
SDL_SendMouseButton(timestamp, window, SDL_TOUCH_MOUSEID, SDL_PRESSED, SDL_BUTTON_LEFT);
|
SDL_SendMouseButton(timestamp, window, SDL_TOUCH_MOUSEID, SDL_BUTTON_LEFT, true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (finger_touching == true && track_touchid == id && track_fingerid == fingerid) {
|
if (finger_touching == true && track_touchid == id && track_fingerid == fingerid) {
|
||||||
SDL_SendMouseButton(timestamp, window, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT);
|
SDL_SendMouseButton(timestamp, window, SDL_TOUCH_MOUSEID, SDL_BUTTON_LEFT, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+28
-35
@@ -154,7 +154,7 @@ static GamepadMapping_t *SDL_PrivateAddMappingForGUID(SDL_GUID jGUID, const char
|
|||||||
static void SDL_PrivateLoadButtonMapping(SDL_Gamepad *gamepad, GamepadMapping_t *pGamepadMapping);
|
static void SDL_PrivateLoadButtonMapping(SDL_Gamepad *gamepad, GamepadMapping_t *pGamepadMapping);
|
||||||
static GamepadMapping_t *SDL_PrivateGetGamepadMapping(SDL_JoystickID instance_id, bool create_mapping);
|
static GamepadMapping_t *SDL_PrivateGetGamepadMapping(SDL_JoystickID instance_id, bool create_mapping);
|
||||||
static void SDL_SendGamepadAxis(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_GamepadAxis axis, Sint16 value);
|
static void SDL_SendGamepadAxis(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_GamepadAxis axis, Sint16 value);
|
||||||
static void SDL_SendGamepadButton(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_GamepadButton button, Uint8 state);
|
static void SDL_SendGamepadButton(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_GamepadButton button, bool down);
|
||||||
|
|
||||||
static bool HasSameOutput(SDL_GamepadBinding *a, SDL_GamepadBinding *b)
|
static bool HasSameOutput(SDL_GamepadBinding *a, SDL_GamepadBinding *b)
|
||||||
{
|
{
|
||||||
@@ -174,7 +174,7 @@ static void ResetOutput(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_GamepadBindi
|
|||||||
if (bind->output_type == SDL_GAMEPAD_BINDTYPE_AXIS) {
|
if (bind->output_type == SDL_GAMEPAD_BINDTYPE_AXIS) {
|
||||||
SDL_SendGamepadAxis(timestamp, gamepad, bind->output.axis.axis, 0);
|
SDL_SendGamepadAxis(timestamp, gamepad, bind->output.axis.axis, 0);
|
||||||
} else {
|
} else {
|
||||||
SDL_SendGamepadButton(timestamp, gamepad, bind->output.button, SDL_RELEASED);
|
SDL_SendGamepadButton(timestamp, gamepad, bind->output.button, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,20 +220,20 @@ static void HandleJoystickAxis(Uint64 timestamp, SDL_Gamepad *gamepad, int axis,
|
|||||||
}
|
}
|
||||||
SDL_SendGamepadAxis(timestamp, gamepad, match->output.axis.axis, (Sint16)value);
|
SDL_SendGamepadAxis(timestamp, gamepad, match->output.axis.axis, (Sint16)value);
|
||||||
} else {
|
} else {
|
||||||
Uint8 state;
|
bool down;
|
||||||
int threshold = match->input.axis.axis_min + (match->input.axis.axis_max - match->input.axis.axis_min) / 2;
|
int threshold = match->input.axis.axis_min + (match->input.axis.axis_max - match->input.axis.axis_min) / 2;
|
||||||
if (match->input.axis.axis_max < match->input.axis.axis_min) {
|
if (match->input.axis.axis_max < match->input.axis.axis_min) {
|
||||||
state = (value <= threshold) ? SDL_PRESSED : SDL_RELEASED;
|
down = (value <= threshold);
|
||||||
} else {
|
} else {
|
||||||
state = (value >= threshold) ? SDL_PRESSED : SDL_RELEASED;
|
down = (value >= threshold);
|
||||||
}
|
}
|
||||||
SDL_SendGamepadButton(timestamp, gamepad, match->output.button, state);
|
SDL_SendGamepadButton(timestamp, gamepad, match->output.button, down);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gamepad->last_match_axis[axis] = match;
|
gamepad->last_match_axis[axis] = match;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HandleJoystickButton(Uint64 timestamp, SDL_Gamepad *gamepad, int button, Uint8 state)
|
static void HandleJoystickButton(Uint64 timestamp, SDL_Gamepad *gamepad, int button, bool down)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -244,10 +244,10 @@ static void HandleJoystickButton(Uint64 timestamp, SDL_Gamepad *gamepad, int but
|
|||||||
if (binding->input_type == SDL_GAMEPAD_BINDTYPE_BUTTON &&
|
if (binding->input_type == SDL_GAMEPAD_BINDTYPE_BUTTON &&
|
||||||
button == binding->input.button) {
|
button == binding->input.button) {
|
||||||
if (binding->output_type == SDL_GAMEPAD_BINDTYPE_AXIS) {
|
if (binding->output_type == SDL_GAMEPAD_BINDTYPE_AXIS) {
|
||||||
int value = state ? binding->output.axis.axis_max : binding->output.axis.axis_min;
|
int value = down ? binding->output.axis.axis_max : binding->output.axis.axis_min;
|
||||||
SDL_SendGamepadAxis(timestamp, gamepad, binding->output.axis.axis, (Sint16)value);
|
SDL_SendGamepadAxis(timestamp, gamepad, binding->output.axis.axis, (Sint16)value);
|
||||||
} else {
|
} else {
|
||||||
SDL_SendGamepadButton(timestamp, gamepad, binding->output.button, state);
|
SDL_SendGamepadButton(timestamp, gamepad, binding->output.button, down);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -271,7 +271,7 @@ static void HandleJoystickHat(Uint64 timestamp, SDL_Gamepad *gamepad, int hat, U
|
|||||||
if (binding->output_type == SDL_GAMEPAD_BINDTYPE_AXIS) {
|
if (binding->output_type == SDL_GAMEPAD_BINDTYPE_AXIS) {
|
||||||
SDL_SendGamepadAxis(timestamp, gamepad, binding->output.axis.axis, (Sint16)binding->output.axis.axis_max);
|
SDL_SendGamepadAxis(timestamp, gamepad, binding->output.axis.axis, (Sint16)binding->output.axis.axis_max);
|
||||||
} else {
|
} else {
|
||||||
SDL_SendGamepadButton(timestamp, gamepad, binding->output.button, SDL_PRESSED);
|
SDL_SendGamepadButton(timestamp, gamepad, binding->output.button, true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ResetOutput(timestamp, gamepad, binding);
|
ResetOutput(timestamp, gamepad, binding);
|
||||||
@@ -296,7 +296,7 @@ static void RecenterGamepad(SDL_Gamepad *gamepad)
|
|||||||
for (i = 0; i < SDL_GAMEPAD_BUTTON_MAX; ++i) {
|
for (i = 0; i < SDL_GAMEPAD_BUTTON_MAX; ++i) {
|
||||||
SDL_GamepadButton button = (SDL_GamepadButton)i;
|
SDL_GamepadButton button = (SDL_GamepadButton)i;
|
||||||
if (SDL_GetGamepadButton(gamepad, button)) {
|
if (SDL_GetGamepadButton(gamepad, button)) {
|
||||||
SDL_SendGamepadButton(timestamp, gamepad, button, SDL_RELEASED);
|
SDL_SendGamepadButton(timestamp, gamepad, button, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -386,7 +386,7 @@ static SDL_bool SDLCALL SDL_GamepadEventWatcher(void *userdata, SDL_Event *event
|
|||||||
|
|
||||||
for (gamepad = SDL_gamepads; gamepad; gamepad = gamepad->next) {
|
for (gamepad = SDL_gamepads; gamepad; gamepad = gamepad->next) {
|
||||||
if (gamepad->joystick->instance_id == event->jbutton.which) {
|
if (gamepad->joystick->instance_id == event->jbutton.which) {
|
||||||
HandleJoystickButton(event->common.timestamp, gamepad, event->jbutton.button, event->jbutton.state);
|
HandleJoystickButton(event->common.timestamp, gamepad, event->jbutton.button, event->jbutton.down);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2810,8 +2810,7 @@ Sint16 SDL_GetGamepadAxis(SDL_Gamepad *gamepad, SDL_GamepadAxis axis)
|
|||||||
value = 0;
|
value = 0;
|
||||||
}
|
}
|
||||||
} else if (binding->input_type == SDL_GAMEPAD_BINDTYPE_BUTTON) {
|
} else if (binding->input_type == SDL_GAMEPAD_BINDTYPE_BUTTON) {
|
||||||
value = SDL_GetJoystickButton(gamepad->joystick, binding->input.button);
|
if (SDL_GetJoystickButton(gamepad->joystick, binding->input.button)) {
|
||||||
if (value == SDL_PRESSED) {
|
|
||||||
value = binding->output.axis.axis_max;
|
value = binding->output.axis.axis_max;
|
||||||
}
|
}
|
||||||
} else if (binding->input_type == SDL_GAMEPAD_BINDTYPE_HAT) {
|
} else if (binding->input_type == SDL_GAMEPAD_BINDTYPE_HAT) {
|
||||||
@@ -2868,15 +2867,15 @@ SDL_bool SDL_GamepadHasButton(SDL_Gamepad *gamepad, SDL_GamepadButton button)
|
|||||||
/*
|
/*
|
||||||
* Get the current state of a button on a gamepad
|
* Get the current state of a button on a gamepad
|
||||||
*/
|
*/
|
||||||
Uint8 SDL_GetGamepadButton(SDL_Gamepad *gamepad, SDL_GamepadButton button)
|
SDL_bool SDL_GetGamepadButton(SDL_Gamepad *gamepad, SDL_GamepadButton button)
|
||||||
{
|
{
|
||||||
Uint8 result = SDL_RELEASED;
|
bool result = false;
|
||||||
|
|
||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
CHECK_GAMEPAD_MAGIC(gamepad, 0);
|
CHECK_GAMEPAD_MAGIC(gamepad, false);
|
||||||
|
|
||||||
for (i = 0; i < gamepad->num_bindings; ++i) {
|
for (i = 0; i < gamepad->num_bindings; ++i) {
|
||||||
SDL_GamepadBinding *binding = &gamepad->bindings[i];
|
SDL_GamepadBinding *binding = &gamepad->bindings[i];
|
||||||
@@ -2889,13 +2888,13 @@ Uint8 SDL_GetGamepadButton(SDL_Gamepad *gamepad, SDL_GamepadButton button)
|
|||||||
if (binding->input.axis.axis_min < binding->input.axis.axis_max) {
|
if (binding->input.axis.axis_min < binding->input.axis.axis_max) {
|
||||||
valid_input_range = (value >= binding->input.axis.axis_min && value <= binding->input.axis.axis_max);
|
valid_input_range = (value >= binding->input.axis.axis_min && value <= binding->input.axis.axis_max);
|
||||||
if (valid_input_range) {
|
if (valid_input_range) {
|
||||||
result = (value >= threshold) ? SDL_PRESSED : SDL_RELEASED;
|
result = (value >= threshold);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
valid_input_range = (value >= binding->input.axis.axis_max && value <= binding->input.axis.axis_min);
|
valid_input_range = (value >= binding->input.axis.axis_max && value <= binding->input.axis.axis_min);
|
||||||
if (valid_input_range) {
|
if (valid_input_range) {
|
||||||
result = (value <= threshold) ? SDL_PRESSED : SDL_RELEASED;
|
result = (value <= threshold);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2904,7 +2903,7 @@ Uint8 SDL_GetGamepadButton(SDL_Gamepad *gamepad, SDL_GamepadButton button)
|
|||||||
break;
|
break;
|
||||||
} else if (binding->input_type == SDL_GAMEPAD_BINDTYPE_HAT) {
|
} else if (binding->input_type == SDL_GAMEPAD_BINDTYPE_HAT) {
|
||||||
int hat_mask = SDL_GetJoystickHat(gamepad->joystick, binding->input.hat.hat);
|
int hat_mask = SDL_GetJoystickHat(gamepad->joystick, binding->input.hat.hat);
|
||||||
result = (hat_mask & binding->input.hat.hat_mask) ? SDL_PRESSED : SDL_RELEASED;
|
result = ((hat_mask & binding->input.hat.hat_mask) != 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3054,7 +3053,7 @@ int SDL_GetNumGamepadTouchpadFingers(SDL_Gamepad *gamepad, int touchpad)
|
|||||||
/**
|
/**
|
||||||
* Get the current state of a finger on a touchpad on a gamepad.
|
* Get the current state of a finger on a touchpad on a gamepad.
|
||||||
*/
|
*/
|
||||||
SDL_bool SDL_GetGamepadTouchpadFinger(SDL_Gamepad *gamepad, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure)
|
SDL_bool SDL_GetGamepadTouchpadFinger(SDL_Gamepad *gamepad, int touchpad, int finger, SDL_bool *down, float *x, float *y, float *pressure)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
@@ -3067,8 +3066,8 @@ SDL_bool SDL_GetGamepadTouchpadFinger(SDL_Gamepad *gamepad, int touchpad, int fi
|
|||||||
if (finger >= 0 && finger < touchpad_info->nfingers) {
|
if (finger >= 0 && finger < touchpad_info->nfingers) {
|
||||||
SDL_JoystickTouchpadFingerInfo *info = &touchpad_info->fingers[finger];
|
SDL_JoystickTouchpadFingerInfo *info = &touchpad_info->fingers[finger];
|
||||||
|
|
||||||
if (state) {
|
if (down) {
|
||||||
*state = info->state;
|
*down = info->down;
|
||||||
}
|
}
|
||||||
if (x) {
|
if (x) {
|
||||||
*x = info->x;
|
*x = info->x;
|
||||||
@@ -3732,7 +3731,7 @@ static void SDL_SendGamepadAxis(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SDL_SendGamepadButton(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_GamepadButton button, Uint8 state)
|
static void SDL_SendGamepadButton(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_GamepadButton button, bool down)
|
||||||
{
|
{
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
|
||||||
@@ -3742,21 +3741,15 @@ static void SDL_SendGamepadButton(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_Ga
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (state) {
|
if (down) {
|
||||||
case SDL_PRESSED:
|
|
||||||
event.type = SDL_EVENT_GAMEPAD_BUTTON_DOWN;
|
event.type = SDL_EVENT_GAMEPAD_BUTTON_DOWN;
|
||||||
break;
|
} else {
|
||||||
case SDL_RELEASED:
|
|
||||||
event.type = SDL_EVENT_GAMEPAD_BUTTON_UP;
|
event.type = SDL_EVENT_GAMEPAD_BUTTON_UP;
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Invalid state -- bail
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (button == SDL_GAMEPAD_BUTTON_GUIDE) {
|
if (button == SDL_GAMEPAD_BUTTON_GUIDE) {
|
||||||
Uint64 now = SDL_GetTicks();
|
Uint64 now = SDL_GetTicks();
|
||||||
if (state == SDL_PRESSED) {
|
if (down) {
|
||||||
gamepad->guide_button_down = now;
|
gamepad->guide_button_down = now;
|
||||||
|
|
||||||
if (gamepad->joystick->delayed_guide_button) {
|
if (gamepad->joystick->delayed_guide_button) {
|
||||||
@@ -3777,7 +3770,7 @@ static void SDL_SendGamepadButton(Uint64 timestamp, SDL_Gamepad *gamepad, SDL_Ga
|
|||||||
event.common.timestamp = timestamp;
|
event.common.timestamp = timestamp;
|
||||||
event.gbutton.which = gamepad->joystick->instance_id;
|
event.gbutton.which = gamepad->joystick->instance_id;
|
||||||
event.gbutton.button = button;
|
event.gbutton.button = button;
|
||||||
event.gbutton.state = state;
|
event.gbutton.down = down;
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3826,7 +3819,7 @@ void SDL_GamepadHandleDelayedGuideButton(SDL_Joystick *joystick)
|
|||||||
|
|
||||||
for (gamepad = SDL_gamepads; gamepad; gamepad = gamepad->next) {
|
for (gamepad = SDL_gamepads; gamepad; gamepad = gamepad->next) {
|
||||||
if (gamepad->joystick == joystick) {
|
if (gamepad->joystick == joystick) {
|
||||||
SDL_SendGamepadButton(0, gamepad, SDL_GAMEPAD_BUTTON_GUIDE, SDL_RELEASED);
|
SDL_SendGamepadButton(0, gamepad, SDL_GAMEPAD_BUTTON_GUIDE, false);
|
||||||
|
|
||||||
// Make sure we send an update complete event for this change
|
// Make sure we send an update complete event for this change
|
||||||
if (!gamepad->joystick->update_complete) {
|
if (!gamepad->joystick->update_complete) {
|
||||||
|
|||||||
+26
-33
@@ -1127,7 +1127,7 @@ SDL_Joystick *SDL_OpenJoystick(SDL_JoystickID instance_id)
|
|||||||
joystick->hats = (Uint8 *)SDL_calloc(joystick->nhats, sizeof(*joystick->hats));
|
joystick->hats = (Uint8 *)SDL_calloc(joystick->nhats, sizeof(*joystick->hats));
|
||||||
}
|
}
|
||||||
if (joystick->nbuttons > 0) {
|
if (joystick->nbuttons > 0) {
|
||||||
joystick->buttons = (Uint8 *)SDL_calloc(joystick->nbuttons, sizeof(*joystick->buttons));
|
joystick->buttons = (SDL_bool *)SDL_calloc(joystick->nbuttons, sizeof(*joystick->buttons));
|
||||||
}
|
}
|
||||||
if (((joystick->naxes > 0) && !joystick->axes) ||
|
if (((joystick->naxes > 0) && !joystick->axes) ||
|
||||||
((joystick->nballs > 0) && !joystick->balls) ||
|
((joystick->nballs > 0) && !joystick->balls) ||
|
||||||
@@ -1259,7 +1259,7 @@ SDL_bool SDL_SetJoystickVirtualBall(SDL_Joystick *joystick, int ball, Sint16 xre
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SetJoystickVirtualButton(SDL_Joystick *joystick, int button, Uint8 value)
|
SDL_bool SDL_SetJoystickVirtualButton(SDL_Joystick *joystick, int button, SDL_bool down)
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
@@ -1268,7 +1268,7 @@ SDL_bool SDL_SetJoystickVirtualButton(SDL_Joystick *joystick, int button, Uint8
|
|||||||
CHECK_JOYSTICK_MAGIC(joystick, false);
|
CHECK_JOYSTICK_MAGIC(joystick, false);
|
||||||
|
|
||||||
#ifdef SDL_JOYSTICK_VIRTUAL
|
#ifdef SDL_JOYSTICK_VIRTUAL
|
||||||
result = SDL_SetJoystickVirtualButtonInner(joystick, button, value);
|
result = SDL_SetJoystickVirtualButtonInner(joystick, button, down);
|
||||||
#else
|
#else
|
||||||
result = SDL_SetError("SDL not built with virtual-joystick support");
|
result = SDL_SetError("SDL not built with virtual-joystick support");
|
||||||
#endif
|
#endif
|
||||||
@@ -1297,7 +1297,7 @@ SDL_bool SDL_SetJoystickVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_SetJoystickVirtualTouchpad(SDL_Joystick *joystick, int touchpad, int finger, Uint8 state, float x, float y, float pressure)
|
SDL_bool SDL_SetJoystickVirtualTouchpad(SDL_Joystick *joystick, int touchpad, int finger, SDL_bool down, float x, float y, float pressure)
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
@@ -1306,7 +1306,7 @@ SDL_bool SDL_SetJoystickVirtualTouchpad(SDL_Joystick *joystick, int touchpad, in
|
|||||||
CHECK_JOYSTICK_MAGIC(joystick, false);
|
CHECK_JOYSTICK_MAGIC(joystick, false);
|
||||||
|
|
||||||
#ifdef SDL_JOYSTICK_VIRTUAL
|
#ifdef SDL_JOYSTICK_VIRTUAL
|
||||||
result = SDL_SetJoystickVirtualTouchpadInner(joystick, touchpad, finger, state, x, y, pressure);
|
result = SDL_SetJoystickVirtualTouchpadInner(joystick, touchpad, finger, down, x, y, pressure);
|
||||||
#else
|
#else
|
||||||
result = SDL_SetError("SDL not built with virtual-joystick support");
|
result = SDL_SetError("SDL not built with virtual-joystick support");
|
||||||
#endif
|
#endif
|
||||||
@@ -1528,24 +1528,23 @@ SDL_bool SDL_GetJoystickBall(SDL_Joystick *joystick, int ball, int *dx, int *dy)
|
|||||||
/*
|
/*
|
||||||
* Get the current state of a button on a joystick
|
* Get the current state of a button on a joystick
|
||||||
*/
|
*/
|
||||||
Uint8 SDL_GetJoystickButton(SDL_Joystick *joystick, int button)
|
SDL_bool SDL_GetJoystickButton(SDL_Joystick *joystick, int button)
|
||||||
{
|
{
|
||||||
Uint8 state;
|
bool down = false;
|
||||||
|
|
||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
{
|
{
|
||||||
CHECK_JOYSTICK_MAGIC(joystick, 0);
|
CHECK_JOYSTICK_MAGIC(joystick, false);
|
||||||
|
|
||||||
if (button < joystick->nbuttons) {
|
if (button < joystick->nbuttons) {
|
||||||
state = joystick->buttons[button];
|
down = joystick->buttons[button];
|
||||||
} else {
|
} else {
|
||||||
SDL_SetError("Joystick only has %d buttons", joystick->nbuttons);
|
SDL_SetError("Joystick only has %d buttons", joystick->nbuttons);
|
||||||
state = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
|
|
||||||
return state;
|
return down;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2113,7 +2112,7 @@ void SDL_PrivateJoystickForceRecentering(SDL_Joystick *joystick)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < joystick->nbuttons; i++) {
|
for (i = 0; i < joystick->nbuttons; i++) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, i, SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, i, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < joystick->nhats; i++) {
|
for (i = 0; i < joystick->nhats; i++) {
|
||||||
@@ -2124,7 +2123,7 @@ void SDL_PrivateJoystickForceRecentering(SDL_Joystick *joystick)
|
|||||||
SDL_JoystickTouchpadInfo *touchpad = &joystick->touchpads[i];
|
SDL_JoystickTouchpadInfo *touchpad = &joystick->touchpads[i];
|
||||||
|
|
||||||
for (j = 0; j < touchpad->nfingers; ++j) {
|
for (j = 0; j < touchpad->nfingers; ++j) {
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, i, j, SDL_RELEASED, 0.0f, 0.0f, 0.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, i, j, false, 0.0f, 0.0f, 0.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2297,43 +2296,37 @@ void SDL_SendJoystickHat(Uint64 timestamp, SDL_Joystick *joystick, Uint8 hat, Ui
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_SendJoystickButton(Uint64 timestamp, SDL_Joystick *joystick, Uint8 button, Uint8 state)
|
void SDL_SendJoystickButton(Uint64 timestamp, SDL_Joystick *joystick, Uint8 button, bool down)
|
||||||
{
|
{
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
|
||||||
SDL_AssertJoysticksLocked();
|
SDL_AssertJoysticksLocked();
|
||||||
|
|
||||||
switch (state) {
|
if (down) {
|
||||||
case SDL_PRESSED:
|
|
||||||
event.type = SDL_EVENT_JOYSTICK_BUTTON_DOWN;
|
event.type = SDL_EVENT_JOYSTICK_BUTTON_DOWN;
|
||||||
break;
|
} else {
|
||||||
case SDL_RELEASED:
|
|
||||||
event.type = SDL_EVENT_JOYSTICK_BUTTON_UP;
|
event.type = SDL_EVENT_JOYSTICK_BUTTON_UP;
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Invalid state -- bail
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure we're not getting garbage or duplicate events
|
// Make sure we're not getting garbage or duplicate events
|
||||||
if (button >= joystick->nbuttons) {
|
if (button >= joystick->nbuttons) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (state == joystick->buttons[button]) {
|
if (down == joystick->buttons[button]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We ignore events if we don't have keyboard focus, except for button
|
/* We ignore events if we don't have keyboard focus, except for button
|
||||||
* release. */
|
* release. */
|
||||||
if (SDL_PrivateJoystickShouldIgnoreEvent()) {
|
if (SDL_PrivateJoystickShouldIgnoreEvent()) {
|
||||||
if (state == SDL_PRESSED) {
|
if (down) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update internal joystick state
|
// Update internal joystick state
|
||||||
SDL_assert(timestamp != 0);
|
SDL_assert(timestamp != 0);
|
||||||
joystick->buttons[button] = state;
|
joystick->buttons[button] = down;
|
||||||
joystick->update_complete = timestamp;
|
joystick->update_complete = timestamp;
|
||||||
|
|
||||||
// Post the event, if desired
|
// Post the event, if desired
|
||||||
@@ -2341,7 +2334,7 @@ void SDL_SendJoystickButton(Uint64 timestamp, SDL_Joystick *joystick, Uint8 butt
|
|||||||
event.common.timestamp = timestamp;
|
event.common.timestamp = timestamp;
|
||||||
event.jbutton.which = joystick->instance_id;
|
event.jbutton.which = joystick->instance_id;
|
||||||
event.jbutton.button = button;
|
event.jbutton.button = button;
|
||||||
event.jbutton.state = state;
|
event.jbutton.down = down;
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3515,7 +3508,7 @@ SDL_PowerState SDL_GetJoystickPowerInfo(SDL_Joystick *joystick, int *percent)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_SendJoystickTouchpad(Uint64 timestamp, SDL_Joystick *joystick, int touchpad, int finger, Uint8 state, float x, float y, float pressure)
|
void SDL_SendJoystickTouchpad(Uint64 timestamp, SDL_Joystick *joystick, int touchpad, int finger, bool down, float x, float y, float pressure)
|
||||||
{
|
{
|
||||||
SDL_JoystickTouchpadInfo *touchpad_info;
|
SDL_JoystickTouchpadInfo *touchpad_info;
|
||||||
SDL_JoystickTouchpadFingerInfo *finger_info;
|
SDL_JoystickTouchpadFingerInfo *finger_info;
|
||||||
@@ -3534,7 +3527,7 @@ void SDL_SendJoystickTouchpad(Uint64 timestamp, SDL_Joystick *joystick, int touc
|
|||||||
|
|
||||||
finger_info = &touchpad_info->fingers[finger];
|
finger_info = &touchpad_info->fingers[finger];
|
||||||
|
|
||||||
if (!state) {
|
if (!down) {
|
||||||
if (x == 0.0f && y == 0.0f) {
|
if (x == 0.0f && y == 0.0f) {
|
||||||
x = finger_info->x;
|
x = finger_info->x;
|
||||||
y = finger_info->y;
|
y = finger_info->y;
|
||||||
@@ -3558,16 +3551,16 @@ void SDL_SendJoystickTouchpad(Uint64 timestamp, SDL_Joystick *joystick, int touc
|
|||||||
pressure = 1.0f;
|
pressure = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == finger_info->state) {
|
if (down == finger_info->down) {
|
||||||
if (!state ||
|
if (!down ||
|
||||||
(x == finger_info->x && y == finger_info->y && pressure == finger_info->pressure)) {
|
(x == finger_info->x && y == finger_info->y && pressure == finger_info->pressure)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == finger_info->state) {
|
if (down == finger_info->down) {
|
||||||
event_type = SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION;
|
event_type = SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION;
|
||||||
} else if (state) {
|
} else if (down) {
|
||||||
event_type = SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN;
|
event_type = SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN;
|
||||||
} else {
|
} else {
|
||||||
event_type = SDL_EVENT_GAMEPAD_TOUCHPAD_UP;
|
event_type = SDL_EVENT_GAMEPAD_TOUCHPAD_UP;
|
||||||
@@ -3582,7 +3575,7 @@ void SDL_SendJoystickTouchpad(Uint64 timestamp, SDL_Joystick *joystick, int touc
|
|||||||
|
|
||||||
// Update internal joystick state
|
// Update internal joystick state
|
||||||
SDL_assert(timestamp != 0);
|
SDL_assert(timestamp != 0);
|
||||||
finger_info->state = state;
|
finger_info->down = down;
|
||||||
finger_info->x = x;
|
finger_info->x = x;
|
||||||
finger_info->y = y;
|
finger_info->y = y;
|
||||||
finger_info->pressure = pressure;
|
finger_info->pressure = pressure;
|
||||||
|
|||||||
@@ -164,8 +164,8 @@ extern void SDL_PrivateJoystickForceRecentering(SDL_Joystick *joystick);
|
|||||||
extern void SDL_SendJoystickAxis(Uint64 timestamp, SDL_Joystick *joystick, Uint8 axis, Sint16 value);
|
extern void SDL_SendJoystickAxis(Uint64 timestamp, SDL_Joystick *joystick, Uint8 axis, Sint16 value);
|
||||||
extern void SDL_SendJoystickBall(Uint64 timestamp, SDL_Joystick *joystick, Uint8 ball, Sint16 xrel, Sint16 yrel);
|
extern void SDL_SendJoystickBall(Uint64 timestamp, SDL_Joystick *joystick, Uint8 ball, Sint16 xrel, Sint16 yrel);
|
||||||
extern void SDL_SendJoystickHat(Uint64 timestamp, SDL_Joystick *joystick, Uint8 hat, Uint8 value);
|
extern void SDL_SendJoystickHat(Uint64 timestamp, SDL_Joystick *joystick, Uint8 hat, Uint8 value);
|
||||||
extern void SDL_SendJoystickButton(Uint64 timestamp, SDL_Joystick *joystick, Uint8 button, Uint8 state);
|
extern void SDL_SendJoystickButton(Uint64 timestamp, SDL_Joystick *joystick, Uint8 button, bool down);
|
||||||
extern void SDL_SendJoystickTouchpad(Uint64 timestamp, SDL_Joystick *joystick, int touchpad, int finger, Uint8 state, float x, float y, float pressure);
|
extern void SDL_SendJoystickTouchpad(Uint64 timestamp, SDL_Joystick *joystick, int touchpad, int finger, bool down, float x, float y, float pressure);
|
||||||
extern void SDL_SendJoystickSensor(Uint64 timestamp, SDL_Joystick *joystick, SDL_SensorType type, Uint64 sensor_timestamp, const float *data, int num_values);
|
extern void SDL_SendJoystickSensor(Uint64 timestamp, SDL_Joystick *joystick, SDL_SensorType type, Uint64 sensor_timestamp, const float *data, int num_values);
|
||||||
extern void SDL_SendJoystickPowerInfo(SDL_Joystick *joystick, SDL_PowerState state, int percent);
|
extern void SDL_SendJoystickPowerInfo(SDL_Joystick *joystick, SDL_PowerState state, int percent);
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ typedef struct SDL_JoystickBallData
|
|||||||
|
|
||||||
typedef struct SDL_JoystickTouchpadFingerInfo
|
typedef struct SDL_JoystickTouchpadFingerInfo
|
||||||
{
|
{
|
||||||
Uint8 state;
|
bool down;
|
||||||
float x;
|
float x;
|
||||||
float y;
|
float y;
|
||||||
float pressure;
|
float pressure;
|
||||||
@@ -94,7 +94,7 @@ struct SDL_Joystick
|
|||||||
Uint8 *hats _guarded; // Current hat states
|
Uint8 *hats _guarded; // Current hat states
|
||||||
|
|
||||||
int nbuttons _guarded; // Number of buttons on the joystick
|
int nbuttons _guarded; // Number of buttons on the joystick
|
||||||
Uint8 *buttons _guarded; // Current button states
|
bool *buttons _guarded; // Current button states
|
||||||
|
|
||||||
int ntouchpads _guarded; // Number of touchpads on the joystick
|
int ntouchpads _guarded; // Number of touchpads on the joystick
|
||||||
SDL_JoystickTouchpadInfo *touchpads _guarded; // Current touchpad states
|
SDL_JoystickTouchpadInfo *touchpads _guarded; // Current touchpad states
|
||||||
|
|||||||
@@ -203,9 +203,9 @@ bool Android_OnPadDown(int device_id, int keycode)
|
|||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
item = JoystickByDeviceId(device_id);
|
item = JoystickByDeviceId(device_id);
|
||||||
if (item && item->joystick) {
|
if (item && item->joystick) {
|
||||||
SDL_SendJoystickButton(timestamp, item->joystick, button, SDL_PRESSED);
|
SDL_SendJoystickButton(timestamp, item->joystick, button, true);
|
||||||
} else {
|
} else {
|
||||||
SDL_SendKeyboardKey(timestamp, SDL_GLOBAL_KEYBOARD_ID, keycode, button_to_scancode(button), SDL_PRESSED);
|
SDL_SendKeyboardKey(timestamp, SDL_GLOBAL_KEYBOARD_ID, keycode, button_to_scancode(button), true);
|
||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
return true;
|
return true;
|
||||||
@@ -223,9 +223,9 @@ bool Android_OnPadUp(int device_id, int keycode)
|
|||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
item = JoystickByDeviceId(device_id);
|
item = JoystickByDeviceId(device_id);
|
||||||
if (item && item->joystick) {
|
if (item && item->joystick) {
|
||||||
SDL_SendJoystickButton(timestamp, item->joystick, button, SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, item->joystick, button, false);
|
||||||
} else {
|
} else {
|
||||||
SDL_SendKeyboardKey(timestamp, SDL_GLOBAL_KEYBOARD_ID, keycode, button_to_scancode(button), SDL_RELEASED);
|
SDL_SendKeyboardKey(timestamp, SDL_GLOBAL_KEYBOARD_ID, keycode, button_to_scancode(button), false);
|
||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
return true;
|
return true;
|
||||||
@@ -280,16 +280,20 @@ bool Android_OnHat(int device_id, int hat_id, int x, int y)
|
|||||||
dpad_delta = (dpad_state ^ item->dpad_state);
|
dpad_delta = (dpad_state ^ item->dpad_state);
|
||||||
if (dpad_delta) {
|
if (dpad_delta) {
|
||||||
if (dpad_delta & DPAD_UP_MASK) {
|
if (dpad_delta & DPAD_UP_MASK) {
|
||||||
SDL_SendJoystickButton(timestamp, item->joystick, SDL_GAMEPAD_BUTTON_DPAD_UP, (dpad_state & DPAD_UP_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
bool down = ((dpad_state & DPAD_UP_MASK) != 0);
|
||||||
|
SDL_SendJoystickButton(timestamp, item->joystick, SDL_GAMEPAD_BUTTON_DPAD_UP, down);
|
||||||
}
|
}
|
||||||
if (dpad_delta & DPAD_DOWN_MASK) {
|
if (dpad_delta & DPAD_DOWN_MASK) {
|
||||||
SDL_SendJoystickButton(timestamp, item->joystick, SDL_GAMEPAD_BUTTON_DPAD_DOWN, (dpad_state & DPAD_DOWN_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
bool down = ((dpad_state & DPAD_DOWN_MASK) != 0);
|
||||||
|
SDL_SendJoystickButton(timestamp, item->joystick, SDL_GAMEPAD_BUTTON_DPAD_DOWN, down);
|
||||||
}
|
}
|
||||||
if (dpad_delta & DPAD_LEFT_MASK) {
|
if (dpad_delta & DPAD_LEFT_MASK) {
|
||||||
SDL_SendJoystickButton(timestamp, item->joystick, SDL_GAMEPAD_BUTTON_DPAD_LEFT, (dpad_state & DPAD_LEFT_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
bool down = ((dpad_state & DPAD_LEFT_MASK) != 0);
|
||||||
|
SDL_SendJoystickButton(timestamp, item->joystick, SDL_GAMEPAD_BUTTON_DPAD_LEFT, down);
|
||||||
}
|
}
|
||||||
if (dpad_delta & DPAD_RIGHT_MASK) {
|
if (dpad_delta & DPAD_RIGHT_MASK) {
|
||||||
SDL_SendJoystickButton(timestamp, item->joystick, SDL_GAMEPAD_BUTTON_DPAD_RIGHT, (dpad_state & DPAD_RIGHT_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
bool down = ((dpad_state & DPAD_RIGHT_MASK) != 0);
|
||||||
|
SDL_SendJoystickButton(timestamp, item->joystick, SDL_GAMEPAD_BUTTON_DPAD_RIGHT, down);
|
||||||
}
|
}
|
||||||
item->dpad_state = dpad_state;
|
item->dpad_state = dpad_state;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1105,13 +1105,13 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
|
|||||||
|
|
||||||
int button = 0;
|
int button = 0;
|
||||||
for (id key in device->buttons) {
|
for (id key in device->buttons) {
|
||||||
Uint8 value;
|
bool down;
|
||||||
if (button == device->pause_button_index) {
|
if (button == device->pause_button_index) {
|
||||||
value = (device->pause_button_pressed > 0);
|
down = (device->pause_button_pressed > 0);
|
||||||
} else {
|
} else {
|
||||||
value = buttons[key].isPressed;
|
down = buttons[key].isPressed;
|
||||||
}
|
}
|
||||||
SDL_SendJoystickButton(timestamp, joystick, button++, value);
|
SDL_SendJoystickButton(timestamp, joystick, button++, down);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
@@ -1130,7 +1130,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Button order matches the XInput Windows mappings.
|
// Button order matches the XInput Windows mappings.
|
||||||
Uint8 *buttons = SDL_small_alloc(Uint8, joystick->nbuttons, &isstack);
|
bool *buttons = SDL_small_alloc(bool, joystick->nbuttons, &isstack);
|
||||||
int button_count = 0;
|
int button_count = 0;
|
||||||
|
|
||||||
if (buttons == NULL) {
|
if (buttons == NULL) {
|
||||||
@@ -1186,7 +1186,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
|
|||||||
GCGamepad *gamepad = controller.gamepad;
|
GCGamepad *gamepad = controller.gamepad;
|
||||||
|
|
||||||
// Button order matches the XInput Windows mappings.
|
// Button order matches the XInput Windows mappings.
|
||||||
Uint8 *buttons = SDL_small_alloc(Uint8, joystick->nbuttons, &isstack);
|
bool *buttons = SDL_small_alloc(bool, joystick->nbuttons, &isstack);
|
||||||
int button_count = 0;
|
int button_count = 0;
|
||||||
|
|
||||||
if (buttons == NULL) {
|
if (buttons == NULL) {
|
||||||
@@ -1222,7 +1222,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
|
|||||||
SDL_SendJoystickAxis(timestamp, joystick, i, axes[i]);
|
SDL_SendJoystickAxis(timestamp, joystick, i, axes[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint8 buttons[joystick->nbuttons];
|
bool buttons[joystick->nbuttons];
|
||||||
int button_count = 0;
|
int button_count = 0;
|
||||||
buttons[button_count++] = gamepad.buttonA.isPressed;
|
buttons[button_count++] = gamepad.buttonA.isPressed;
|
||||||
buttons[button_count++] = gamepad.buttonX.isPressed;
|
buttons[button_count++] = gamepad.buttonX.isPressed;
|
||||||
@@ -1253,16 +1253,16 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
|
|||||||
|
|
||||||
dpad = controller.physicalInputProfile.dpads[GCInputDualShockTouchpadOne];
|
dpad = controller.physicalInputProfile.dpads[GCInputDualShockTouchpadOne];
|
||||||
if (dpad.xAxis.value != 0.f || dpad.yAxis.value != 0.f) {
|
if (dpad.xAxis.value != 0.f || dpad.yAxis.value != 0.f) {
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, SDL_PRESSED, (1.0f + dpad.xAxis.value) * 0.5f, 1.0f - (1.0f + dpad.yAxis.value) * 0.5f, 1.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, true, (1.0f + dpad.xAxis.value) * 0.5f, 1.0f - (1.0f + dpad.yAxis.value) * 0.5f, 1.0f);
|
||||||
} else {
|
} else {
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, SDL_RELEASED, 0.0f, 0.0f, 1.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, false, 0.0f, 0.0f, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
dpad = controller.physicalInputProfile.dpads[GCInputDualShockTouchpadTwo];
|
dpad = controller.physicalInputProfile.dpads[GCInputDualShockTouchpadTwo];
|
||||||
if (dpad.xAxis.value != 0.f || dpad.yAxis.value != 0.f) {
|
if (dpad.xAxis.value != 0.f || dpad.yAxis.value != 0.f) {
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, SDL_PRESSED, (1.0f + dpad.xAxis.value) * 0.5f, 1.0f - (1.0f + dpad.yAxis.value) * 0.5f, 1.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, true, (1.0f + dpad.xAxis.value) * 0.5f, 1.0f - (1.0f + dpad.yAxis.value) * 0.5f, 1.0f);
|
||||||
} else {
|
} else {
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, SDL_RELEASED, 0.0f, 0.0f, 1.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, false, 0.0f, 0.0f, 1.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -650,8 +650,8 @@ static void BSD_JoystickUpdate(SDL_Joystick *joy)
|
|||||||
v = (((SDL_JOYSTICK_AXIS_MAX - SDL_JOYSTICK_AXIS_MIN) * ((Sint32)y - ymin)) / (ymax - ymin)) + SDL_JOYSTICK_AXIS_MIN;
|
v = (((SDL_JOYSTICK_AXIS_MAX - SDL_JOYSTICK_AXIS_MIN) * ((Sint32)y - ymin)) / (ymax - ymin)) + SDL_JOYSTICK_AXIS_MIN;
|
||||||
SDL_SendJoystickAxis(timestamp, joy, 1, v);
|
SDL_SendJoystickAxis(timestamp, joy, 1, v);
|
||||||
}
|
}
|
||||||
SDL_SendJoystickButton(timestamp, joy, 0, gameport.b1);
|
SDL_SendJoystickButton(timestamp, joy, 0, (gameport.b1 != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joy, 1, gameport.b2);
|
SDL_SendJoystickButton(timestamp, joy, 1, (gameport.b2 != 0));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -720,7 +720,7 @@ static void BSD_JoystickUpdate(SDL_Joystick *joy)
|
|||||||
case HUP_BUTTON:
|
case HUP_BUTTON:
|
||||||
v = (Sint32)hid_get_data(REP_BUF_DATA(rep), &hitem);
|
v = (Sint32)hid_get_data(REP_BUF_DATA(rep), &hitem);
|
||||||
nbutton = HID_USAGE(hitem.usage) - 1; // SDL buttons are zero-based
|
nbutton = HID_USAGE(hitem.usage) - 1; // SDL buttons are zero-based
|
||||||
SDL_SendJoystickButton(timestamp, joy, nbutton, v);
|
SDL_SendJoystickButton(timestamp, joy, nbutton, (v != 0));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -967,10 +967,7 @@ static void DARWIN_JoystickUpdate(SDL_Joystick *joystick)
|
|||||||
while (element) {
|
while (element) {
|
||||||
goodRead = GetHIDElementState(device, element, &value);
|
goodRead = GetHIDElementState(device, element, &value);
|
||||||
if (goodRead) {
|
if (goodRead) {
|
||||||
if (value > 1) { // handle pressure-sensitive buttons
|
SDL_SendJoystickButton(timestamp, joystick, i, (value != 0));
|
||||||
value = 1;
|
|
||||||
}
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, i, value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
element = element->pNext;
|
element = element->pNext;
|
||||||
|
|||||||
@@ -325,7 +325,7 @@ static void EMSCRIPTEN_JoystickUpdate(SDL_Joystick *joystick)
|
|||||||
{
|
{
|
||||||
EmscriptenGamepadEvent gamepadState;
|
EmscriptenGamepadEvent gamepadState;
|
||||||
SDL_joylist_item *item = (SDL_joylist_item *)joystick->hwdata;
|
SDL_joylist_item *item = (SDL_joylist_item *)joystick->hwdata;
|
||||||
int i, result, buttonState;
|
int i, result;
|
||||||
Uint64 timestamp = SDL_GetTicksNS();
|
Uint64 timestamp = SDL_GetTicksNS();
|
||||||
|
|
||||||
emscripten_sample_gamepad_data();
|
emscripten_sample_gamepad_data();
|
||||||
@@ -336,8 +336,8 @@ static void EMSCRIPTEN_JoystickUpdate(SDL_Joystick *joystick)
|
|||||||
if (gamepadState.timestamp == 0 || gamepadState.timestamp != item->timestamp) {
|
if (gamepadState.timestamp == 0 || gamepadState.timestamp != item->timestamp) {
|
||||||
for (i = 0; i < item->nbuttons; i++) {
|
for (i = 0; i < item->nbuttons; i++) {
|
||||||
if (item->digitalButton[i] != gamepadState.digitalButton[i]) {
|
if (item->digitalButton[i] != gamepadState.digitalButton[i]) {
|
||||||
buttonState = gamepadState.digitalButton[i] ? SDL_PRESSED : SDL_RELEASED;
|
bool down = (gamepadState.digitalButton[i] != 0);
|
||||||
SDL_SendJoystickButton(timestamp, item->joystick, i, buttonState);
|
SDL_SendJoystickButton(timestamp, item->joystick, i, down);
|
||||||
}
|
}
|
||||||
|
|
||||||
// store values to compare them in the next update
|
// store values to compare them in the next update
|
||||||
|
|||||||
@@ -419,10 +419,12 @@ static void CALLBACK GAMEINPUT_InternalSystemButtonCallback(
|
|||||||
|
|
||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
if (changedButtons & GameInputSystemButtonGuide) {
|
if (changedButtons & GameInputSystemButtonGuide) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (currentButtons & GameInputSystemButtonGuide) ? SDL_PRESSED : SDL_RELEASED);
|
bool down = ((currentButtons & GameInputSystemButtonGuide) != 0);
|
||||||
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, down);
|
||||||
}
|
}
|
||||||
if (changedButtons & GameInputSystemButtonShare) {
|
if (changedButtons & GameInputSystemButtonShare) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GAMEINPUT_SHARE, (currentButtons & GameInputSystemButtonShare) ? SDL_PRESSED : SDL_RELEASED);
|
bool down = ((currentButtons & GameInputSystemButtonShare) != 0);
|
||||||
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GAMEINPUT_SHARE, down);
|
||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
}
|
}
|
||||||
@@ -567,7 +569,7 @@ static void GAMEINPUT_JoystickUpdate(SDL_Joystick *joystick)
|
|||||||
GameInputGamepadLeftShoulder, // SDL_GAMEPAD_BUTTON_LEFT_SHOULDER
|
GameInputGamepadLeftShoulder, // SDL_GAMEPAD_BUTTON_LEFT_SHOULDER
|
||||||
GameInputGamepadRightShoulder, // SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER
|
GameInputGamepadRightShoulder, // SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER
|
||||||
};
|
};
|
||||||
Uint8 btnidx = 0, btnstate = 0, hat = 0;
|
Uint8 btnidx = 0, hat = 0;
|
||||||
|
|
||||||
if (IGameInputReading_GetGamepadState(reading, &state)) {
|
if (IGameInputReading_GetGamepadState(reading, &state)) {
|
||||||
for (btnidx = 0; btnidx < SDL_arraysize(s_XInputButtons); ++btnidx) {
|
for (btnidx = 0; btnidx < SDL_arraysize(s_XInputButtons); ++btnidx) {
|
||||||
@@ -575,8 +577,8 @@ static void GAMEINPUT_JoystickUpdate(SDL_Joystick *joystick)
|
|||||||
if (!button_mask) {
|
if (!button_mask) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
btnstate = (state.buttons & button_mask) ? SDL_PRESSED : SDL_RELEASED;
|
bool down = ((state.buttons & button_mask) != 0);
|
||||||
SDL_SendJoystickButton(timestamp, joystick, btnidx, btnstate);
|
SDL_SendJoystickButton(timestamp, joystick, btnidx, down);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.buttons & GameInputGamepadDPadUp) {
|
if (state.buttons & GameInputGamepadDPadUp) {
|
||||||
@@ -637,7 +639,7 @@ static void GAMEINPUT_JoystickUpdate(SDL_Joystick *joystick)
|
|||||||
for (i = 0; i < touch_count; ++i) {
|
for (i = 0; i < touch_count; ++i) {
|
||||||
GameInputTouchState *touch = &touch_state[i];
|
GameInputTouchState *touch = &touch_state[i];
|
||||||
// FIXME: We should use touch->touchId to track fingers instead of using i below
|
// FIXME: We should use touch->touchId to track fingers instead of using i below
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, i, SDL_PRESSED, touch->positionX * info->touchSensorInfo[i].resolutionX, touch->positionY * info->touchSensorInfo[0].resolutionY, touch->pressure);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, i, true, touch->positionX * info->touchSensorInfo[i].resolutionX, touch->positionY * info->touchSensorInfo[0].resolutionY, touch->pressure);
|
||||||
}
|
}
|
||||||
SDL_stack_free(touch_state);
|
SDL_stack_free(touch_state);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,7 +212,8 @@ extern "C"
|
|||||||
|
|
||||||
// Generate button events
|
// Generate button events
|
||||||
for (i = 0; i < joystick->nbuttons; ++i) {
|
for (i = 0; i < joystick->nbuttons; ++i) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, i, (buttons & 0x01));
|
bool down = ((buttons & 0x01) != 0);
|
||||||
|
SDL_SendJoystickButton(timestamp, joystick, i, down);
|
||||||
buttons >>= 1;
|
buttons >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ static void HIDAPI_DriverGameCube_HandleJoystickPacket(SDL_HIDAPI_Device *device
|
|||||||
timestamp, \
|
timestamp, \
|
||||||
joystick, \
|
joystick, \
|
||||||
button, \
|
button, \
|
||||||
(packet[off] & flag) ? SDL_PRESSED : SDL_RELEASED);
|
((packet[off] & flag) != 0));
|
||||||
READ_BUTTON(1, 0x02, 0) // A
|
READ_BUTTON(1, 0x02, 0) // A
|
||||||
READ_BUTTON(1, 0x04, 1) // B
|
READ_BUTTON(1, 0x04, 1) // B
|
||||||
READ_BUTTON(1, 0x08, 3) // Y
|
READ_BUTTON(1, 0x08, 3) // Y
|
||||||
@@ -314,7 +314,7 @@ static void HIDAPI_DriverGameCube_HandleNintendoPacket(SDL_HIDAPI_Device *device
|
|||||||
timestamp, \
|
timestamp, \
|
||||||
joystick, \
|
joystick, \
|
||||||
button, \
|
button, \
|
||||||
(curSlot[off] & flag) ? SDL_PRESSED : SDL_RELEASED);
|
((curSlot[off] & flag) != 0));
|
||||||
READ_BUTTON(1, 0x01, 0) // A
|
READ_BUTTON(1, 0x01, 0) // A
|
||||||
READ_BUTTON(1, 0x02, 1) // B
|
READ_BUTTON(1, 0x02, 1) // B
|
||||||
READ_BUTTON(1, 0x04, 2) // X
|
READ_BUTTON(1, 0x04, 2) // X
|
||||||
|
|||||||
@@ -168,20 +168,20 @@ static void HIDAPI_DriverLuna_HandleUSBStatePacket(SDL_Joystick *joystick, SDL_D
|
|||||||
Uint64 timestamp = SDL_GetTicksNS();
|
Uint64 timestamp = SDL_GetTicksNS();
|
||||||
|
|
||||||
if (ctx->last_state[1] != data[1]) {
|
if (ctx->last_state[1] != data[1]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[1] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[1] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[1] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[1] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[1] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[1] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[1] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[1] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[1] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[1] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[1] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[1] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[1] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[1] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[1] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[1] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
if (ctx->last_state[2] != data[2]) {
|
if (ctx->last_state[2] != data[2]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[2] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[2] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LUNA_MICROPHONE, (data[2] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LUNA_MICROPHONE, ((data[2] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[2] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[2] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[2] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[2] & 0x08) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[3] != data[3]) {
|
if (ctx->last_state[3] != data[3]) {
|
||||||
@@ -252,7 +252,7 @@ static void HIDAPI_DriverLuna_HandleBluetoothStatePacket(SDL_Joystick *joystick,
|
|||||||
|
|
||||||
if (size >= 2 && data[0] == 0x02) {
|
if (size >= 2 && data[0] == 0x02) {
|
||||||
// Home button has dedicated report
|
// Home button has dedicated report
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[1] & 0x1) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[1] & 0x1) != 0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,21 +304,21 @@ static void HIDAPI_DriverLuna_HandleBluetoothStatePacket(SDL_Joystick *joystick,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[14] != data[14]) {
|
if (ctx->last_state[14] != data[14]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[14] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[14] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[14] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[14] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[14] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[14] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[14] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[14] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[14] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[14] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[14] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[14] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
if (ctx->last_state[15] != data[15]) {
|
if (ctx->last_state[15] != data[15]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[15] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[15] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[15] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[15] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[15] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[15] & 0x40) != 0));
|
||||||
}
|
}
|
||||||
if (ctx->last_state[16] != data[16]) {
|
if (ctx->last_state[16] != data[16]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[16] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[16] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LUNA_MICROPHONE, (data[16] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LUNA_MICROPHONE, ((data[16] & 0x02) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
#define READ_STICK_AXIS(offset) \
|
#define READ_STICK_AXIS(offset) \
|
||||||
|
|||||||
@@ -388,21 +388,21 @@ static void HIDAPI_DriverPS3_HandleMiniStatePacket(SDL_Joystick *joystick, SDL_D
|
|||||||
}
|
}
|
||||||
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[4] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[4] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[4] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[4] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[4] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[4] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[4] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[4] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[5] != data[5]) {
|
if (ctx->last_state[5] != data[5]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[5] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[5] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[5] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[5] & 0x02) != 0));
|
||||||
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, (data[5] & 0x04) ? SDL_JOYSTICK_AXIS_MAX : SDL_JOYSTICK_AXIS_MIN);
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, (data[5] & 0x04) ? SDL_JOYSTICK_AXIS_MAX : SDL_JOYSTICK_AXIS_MIN);
|
||||||
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, (data[5] & 0x08) ? SDL_JOYSTICK_AXIS_MAX : SDL_JOYSTICK_AXIS_MIN);
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, (data[5] & 0x08) ? SDL_JOYSTICK_AXIS_MAX : SDL_JOYSTICK_AXIS_MIN);
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[5] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[5] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[5] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[5] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[5] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[5] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[5] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[5] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = ((int)data[2] * 257) - 32768;
|
axis = ((int)data[2] * 257) - 32768;
|
||||||
@@ -425,10 +425,10 @@ static void HIDAPI_DriverPS3_HandleStatePacket(SDL_Joystick *joystick, SDL_Drive
|
|||||||
if (ctx->last_state[2] != data[2]) {
|
if (ctx->last_state[2] != data[2]) {
|
||||||
Uint8 hat = 0;
|
Uint8 hat = 0;
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[2] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[2] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[2] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[2] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[2] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[2] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[2] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[2] & 0x08) != 0));
|
||||||
|
|
||||||
if (data[2] & 0x10) {
|
if (data[2] & 0x10) {
|
||||||
hat |= SDL_HAT_UP;
|
hat |= SDL_HAT_UP;
|
||||||
@@ -446,16 +446,16 @@ static void HIDAPI_DriverPS3_HandleStatePacket(SDL_Joystick *joystick, SDL_Drive
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[3] != data[3]) {
|
if (ctx->last_state[3] != data[3]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[3] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[3] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[3] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[3] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[3] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[3] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[3] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[3] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[4] != data[4]) {
|
if (ctx->last_state[4] != data[4]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[4] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[4] & 0x01) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = ((int)data[18] * 257) - 32768;
|
axis = ((int)data[18] * 257) - 32768;
|
||||||
@@ -744,21 +744,21 @@ static void HIDAPI_DriverPS3ThirdParty_HandleStatePacket18(SDL_Joystick *joystic
|
|||||||
Uint64 timestamp = SDL_GetTicksNS();
|
Uint64 timestamp = SDL_GetTicksNS();
|
||||||
|
|
||||||
if (ctx->last_state[0] != data[0]) {
|
if (ctx->last_state[0] != data[0]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[0] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[0] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[0] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[0] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[0] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[0] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[0] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[0] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[0] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[0] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[0] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[0] & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[1] != data[1]) {
|
if (ctx->last_state[1] != data[1]) {
|
||||||
Uint8 hat;
|
Uint8 hat;
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[1] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[1] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[1] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[1] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[1] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[1] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[1] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[1] & 0x08) != 0));
|
||||||
|
|
||||||
switch (data[1] >> 4) {
|
switch (data[1] >> 4) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -848,20 +848,20 @@ static void HIDAPI_DriverPS3ThirdParty_HandleStatePacket19(SDL_Joystick *joystic
|
|||||||
Uint64 timestamp = SDL_GetTicksNS();
|
Uint64 timestamp = SDL_GetTicksNS();
|
||||||
|
|
||||||
if (ctx->last_state[0] != data[0]) {
|
if (ctx->last_state[0] != data[0]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[0] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[0] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[0] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[0] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[0] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[0] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[0] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[0] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[0] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[0] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[0] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[0] & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[1] != data[1]) {
|
if (ctx->last_state[1] != data[1]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[1] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[1] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[1] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[1] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[1] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[1] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[1] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[1] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[1] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[1] & 0x10) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->device->vendor_id == USB_VENDOR_SAITEK && ctx->device->product_id == USB_PRODUCT_SAITEK_CYBORG_V3) {
|
if (ctx->device->vendor_id == USB_VENDOR_SAITEK && ctx->device->product_id == USB_PRODUCT_SAITEK_CYBORG_V3) {
|
||||||
@@ -1227,10 +1227,10 @@ static void HIDAPI_DriverPS3SonySixaxis_HandleStatePacket(SDL_Joystick *joystick
|
|||||||
if (ctx->last_state[2] != data[2]) {
|
if (ctx->last_state[2] != data[2]) {
|
||||||
Uint8 hat = 0;
|
Uint8 hat = 0;
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[2] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[2] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[2] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[2] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[2] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[2] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[2] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[2] & 0x08) != 0));
|
||||||
|
|
||||||
if (data[2] & 0x10) {
|
if (data[2] & 0x10) {
|
||||||
hat |= SDL_HAT_UP;
|
hat |= SDL_HAT_UP;
|
||||||
@@ -1248,16 +1248,16 @@ static void HIDAPI_DriverPS3SonySixaxis_HandleStatePacket(SDL_Joystick *joystick
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[3] != data[3]) {
|
if (ctx->last_state[3] != data[3]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[3] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[3] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[3] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[3] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[3] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[3] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[3] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[3] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[4] != data[4]) {
|
if (ctx->last_state[4] != data[4]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[4] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[4] & 0x01) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = ((int)data[18] * 257) - 32768;
|
axis = ((int)data[18] * 257) - 32768;
|
||||||
|
|||||||
@@ -1010,7 +1010,7 @@ static void HIDAPI_DriverPS4_HandleStatePacket(SDL_Joystick *joystick, SDL_hid_d
|
|||||||
static const float TOUCHPAD_SCALEX = 1.0f / 1920;
|
static const float TOUCHPAD_SCALEX = 1.0f / 1920;
|
||||||
static const float TOUCHPAD_SCALEY = 1.0f / 920; // This is noted as being 944 resolution, but 920 feels better
|
static const float TOUCHPAD_SCALEY = 1.0f / 920; // This is noted as being 944 resolution, but 920 feels better
|
||||||
Sint16 axis;
|
Sint16 axis;
|
||||||
Uint8 touchpad_state;
|
bool touchpad_down;
|
||||||
int touchpad_x, touchpad_y;
|
int touchpad_x, touchpad_y;
|
||||||
Uint64 timestamp = SDL_GetTicksNS();
|
Uint64 timestamp = SDL_GetTicksNS();
|
||||||
|
|
||||||
@@ -1018,10 +1018,10 @@ static void HIDAPI_DriverPS4_HandleStatePacket(SDL_Joystick *joystick, SDL_hid_d
|
|||||||
{
|
{
|
||||||
Uint8 data = (packet->rgucButtonsHatAndCounter[0] >> 4);
|
Uint8 data = (packet->rgucButtonsHatAndCounter[0] >> 4);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data & 0x08) != 0));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Uint8 hat;
|
Uint8 hat;
|
||||||
@@ -1063,12 +1063,12 @@ static void HIDAPI_DriverPS4_HandleStatePacket(SDL_Joystick *joystick, SDL_hid_d
|
|||||||
if (ctx->last_state.rgucButtonsHatAndCounter[1] != packet->rgucButtonsHatAndCounter[1]) {
|
if (ctx->last_state.rgucButtonsHatAndCounter[1] != packet->rgucButtonsHatAndCounter[1]) {
|
||||||
Uint8 data = packet->rgucButtonsHatAndCounter[1];
|
Uint8 data = packet->rgucButtonsHatAndCounter[1];
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Some fightsticks, ex: Victrix FS Pro will only this these digital trigger bits and not the analog values so this needs to run whenever the
|
/* Some fightsticks, ex: Victrix FS Pro will only this these digital trigger bits and not the analog values so this needs to run whenever the
|
||||||
@@ -1083,8 +1083,8 @@ static void HIDAPI_DriverPS4_HandleStatePacket(SDL_Joystick *joystick, SDL_hid_d
|
|||||||
if (ctx->last_state.rgucButtonsHatAndCounter[2] != packet->rgucButtonsHatAndCounter[2]) {
|
if (ctx->last_state.rgucButtonsHatAndCounter[2] != packet->rgucButtonsHatAndCounter[2]) {
|
||||||
Uint8 data = (packet->rgucButtonsHatAndCounter[2] & 0x03);
|
Uint8 data = (packet->rgucButtonsHatAndCounter[2] & 0x03);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS4_TOUCHPAD, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS4_TOUCHPAD, ((data & 0x02) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = ((int)packet->ucTriggerLeft * 257) - 32768;
|
axis = ((int)packet->ucTriggerLeft * 257) - 32768;
|
||||||
@@ -1124,15 +1124,15 @@ static void HIDAPI_DriverPS4_HandleStatePacket(SDL_Joystick *joystick, SDL_hid_d
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (size > 9 && ctx->report_touchpad && ctx->enhanced_reports) {
|
if (size > 9 && ctx->report_touchpad && ctx->enhanced_reports) {
|
||||||
touchpad_state = !(packet->ucTouchpadCounter1 & 0x80) ? SDL_PRESSED : SDL_RELEASED;
|
touchpad_down = ((packet->ucTouchpadCounter1 & 0x80) == 0);
|
||||||
touchpad_x = packet->rgucTouchpadData1[0] | (((int)packet->rgucTouchpadData1[1] & 0x0F) << 8);
|
touchpad_x = packet->rgucTouchpadData1[0] | (((int)packet->rgucTouchpadData1[1] & 0x0F) << 8);
|
||||||
touchpad_y = (packet->rgucTouchpadData1[1] >> 4) | ((int)packet->rgucTouchpadData1[2] << 4);
|
touchpad_y = (packet->rgucTouchpadData1[1] >> 4) | ((int)packet->rgucTouchpadData1[2] << 4);
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, touchpad_state, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_state ? 1.0f : 0.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, touchpad_down, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_down ? 1.0f : 0.0f);
|
||||||
|
|
||||||
touchpad_state = !(packet->ucTouchpadCounter2 & 0x80) ? SDL_PRESSED : SDL_RELEASED;
|
touchpad_down = ((packet->ucTouchpadCounter2 & 0x80) == 0);
|
||||||
touchpad_x = packet->rgucTouchpadData2[0] | (((int)packet->rgucTouchpadData2[1] & 0x0F) << 8);
|
touchpad_x = packet->rgucTouchpadData2[0] | (((int)packet->rgucTouchpadData2[1] & 0x0F) << 8);
|
||||||
touchpad_y = (packet->rgucTouchpadData2[1] >> 4) | ((int)packet->rgucTouchpadData2[2] << 4);
|
touchpad_y = (packet->rgucTouchpadData2[1] >> 4) | ((int)packet->rgucTouchpadData2[2] << 4);
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, touchpad_state, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_state ? 1.0f : 0.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, touchpad_down, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_down ? 1.0f : 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size > 9 && ctx->report_sensors) {
|
if (size > 9 && ctx->report_sensors) {
|
||||||
|
|||||||
@@ -1137,10 +1137,10 @@ static void HIDAPI_DriverPS5_HandleSimpleStatePacket(SDL_Joystick *joystick, SDL
|
|||||||
{
|
{
|
||||||
Uint8 data = (packet->rgucButtonsHatAndCounter[0] >> 4);
|
Uint8 data = (packet->rgucButtonsHatAndCounter[0] >> 4);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data & 0x08) != 0));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Uint8 data = (packet->rgucButtonsHatAndCounter[0] & 0x0F);
|
Uint8 data = (packet->rgucButtonsHatAndCounter[0] & 0x0F);
|
||||||
@@ -1182,19 +1182,19 @@ static void HIDAPI_DriverPS5_HandleSimpleStatePacket(SDL_Joystick *joystick, SDL
|
|||||||
if (ctx->last_state.simple.rgucButtonsHatAndCounter[1] != packet->rgucButtonsHatAndCounter[1]) {
|
if (ctx->last_state.simple.rgucButtonsHatAndCounter[1] != packet->rgucButtonsHatAndCounter[1]) {
|
||||||
Uint8 data = packet->rgucButtonsHatAndCounter[1];
|
Uint8 data = packet->rgucButtonsHatAndCounter[1];
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state.simple.rgucButtonsHatAndCounter[2] != packet->rgucButtonsHatAndCounter[2]) {
|
if (ctx->last_state.simple.rgucButtonsHatAndCounter[2] != packet->rgucButtonsHatAndCounter[2]) {
|
||||||
Uint8 data = (packet->rgucButtonsHatAndCounter[2] & 0x03);
|
Uint8 data = (packet->rgucButtonsHatAndCounter[2] & 0x03);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_TOUCHPAD, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_TOUCHPAD, ((data & 0x02) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->ucTriggerLeft == 0 && (packet->rgucButtonsHatAndCounter[1] & 0x04)) {
|
if (packet->ucTriggerLeft == 0 && (packet->rgucButtonsHatAndCounter[1] & 0x04)) {
|
||||||
@@ -1229,10 +1229,10 @@ static void HIDAPI_DriverPS5_HandleStatePacketCommon(SDL_Joystick *joystick, SDL
|
|||||||
{
|
{
|
||||||
Uint8 data = (packet->rgucButtonsAndHat[0] >> 4);
|
Uint8 data = (packet->rgucButtonsAndHat[0] >> 4);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data & 0x08) != 0));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Uint8 data = (packet->rgucButtonsAndHat[0] & 0x0F);
|
Uint8 data = (packet->rgucButtonsAndHat[0] & 0x0F);
|
||||||
@@ -1274,24 +1274,24 @@ static void HIDAPI_DriverPS5_HandleStatePacketCommon(SDL_Joystick *joystick, SDL
|
|||||||
if (ctx->last_state.state.rgucButtonsAndHat[1] != packet->rgucButtonsAndHat[1]) {
|
if (ctx->last_state.state.rgucButtonsAndHat[1] != packet->rgucButtonsAndHat[1]) {
|
||||||
Uint8 data = packet->rgucButtonsAndHat[1];
|
Uint8 data = packet->rgucButtonsAndHat[1];
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state.state.rgucButtonsAndHat[2] != packet->rgucButtonsAndHat[2]) {
|
if (ctx->last_state.state.rgucButtonsAndHat[2] != packet->rgucButtonsAndHat[2]) {
|
||||||
Uint8 data = packet->rgucButtonsAndHat[2];
|
Uint8 data = packet->rgucButtonsAndHat[2];
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_TOUCHPAD, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_TOUCHPAD, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_MICROPHONE, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_MICROPHONE, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_LEFT_FUNCTION, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_LEFT_FUNCTION, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_RIGHT_FUNCTION, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_RIGHT_FUNCTION, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_LEFT_PADDLE, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_LEFT_PADDLE, ((data & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_RIGHT_PADDLE, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_PS5_RIGHT_PADDLE, ((data & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->ucTriggerLeft == 0 && (packet->rgucButtonsAndHat[1] & 0x04)) {
|
if (packet->ucTriggerLeft == 0 && (packet->rgucButtonsAndHat[1] & 0x04)) {
|
||||||
@@ -1369,19 +1369,19 @@ static void HIDAPI_DriverPS5_HandleStatePacket(SDL_Joystick *joystick, SDL_hid_d
|
|||||||
{
|
{
|
||||||
static const float TOUCHPAD_SCALEX = 1.0f / 1920;
|
static const float TOUCHPAD_SCALEX = 1.0f / 1920;
|
||||||
static const float TOUCHPAD_SCALEY = 1.0f / 1070;
|
static const float TOUCHPAD_SCALEY = 1.0f / 1070;
|
||||||
Uint8 touchpad_state;
|
bool touchpad_down;
|
||||||
int touchpad_x, touchpad_y;
|
int touchpad_x, touchpad_y;
|
||||||
|
|
||||||
if (ctx->report_touchpad) {
|
if (ctx->report_touchpad) {
|
||||||
touchpad_state = !(packet->ucTouchpadCounter1 & 0x80) ? SDL_PRESSED : SDL_RELEASED;
|
touchpad_down = ((packet->ucTouchpadCounter1 & 0x80) == 0);
|
||||||
touchpad_x = packet->rgucTouchpadData1[0] | (((int)packet->rgucTouchpadData1[1] & 0x0F) << 8);
|
touchpad_x = packet->rgucTouchpadData1[0] | (((int)packet->rgucTouchpadData1[1] & 0x0F) << 8);
|
||||||
touchpad_y = (packet->rgucTouchpadData1[1] >> 4) | ((int)packet->rgucTouchpadData1[2] << 4);
|
touchpad_y = (packet->rgucTouchpadData1[1] >> 4) | ((int)packet->rgucTouchpadData1[2] << 4);
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, touchpad_state, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_state ? 1.0f : 0.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, touchpad_down, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_down ? 1.0f : 0.0f);
|
||||||
|
|
||||||
touchpad_state = !(packet->ucTouchpadCounter2 & 0x80) ? SDL_PRESSED : SDL_RELEASED;
|
touchpad_down = ((packet->ucTouchpadCounter2 & 0x80) == 0);
|
||||||
touchpad_x = packet->rgucTouchpadData2[0] | (((int)packet->rgucTouchpadData2[1] & 0x0F) << 8);
|
touchpad_x = packet->rgucTouchpadData2[0] | (((int)packet->rgucTouchpadData2[1] & 0x0F) << 8);
|
||||||
touchpad_y = (packet->rgucTouchpadData2[1] >> 4) | ((int)packet->rgucTouchpadData2[2] << 4);
|
touchpad_y = (packet->rgucTouchpadData2[1] >> 4) | ((int)packet->rgucTouchpadData2[2] << 4);
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, touchpad_state, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_state ? 1.0f : 0.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, touchpad_down, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_down ? 1.0f : 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->report_battery) {
|
if (ctx->report_battery) {
|
||||||
@@ -1418,19 +1418,19 @@ static void HIDAPI_DriverPS5_HandleStatePacketAlt(SDL_Joystick *joystick, SDL_hi
|
|||||||
{
|
{
|
||||||
static const float TOUCHPAD_SCALEX = 1.0f / 1920;
|
static const float TOUCHPAD_SCALEX = 1.0f / 1920;
|
||||||
static const float TOUCHPAD_SCALEY = 1.0f / 1070;
|
static const float TOUCHPAD_SCALEY = 1.0f / 1070;
|
||||||
Uint8 touchpad_state;
|
bool touchpad_down;
|
||||||
int touchpad_x, touchpad_y;
|
int touchpad_x, touchpad_y;
|
||||||
|
|
||||||
if (ctx->report_touchpad) {
|
if (ctx->report_touchpad) {
|
||||||
touchpad_state = !(packet->ucTouchpadCounter1 & 0x80) ? SDL_PRESSED : SDL_RELEASED;
|
touchpad_down = ((packet->ucTouchpadCounter1 & 0x80) == 0);
|
||||||
touchpad_x = packet->rgucTouchpadData1[0] | (((int)packet->rgucTouchpadData1[1] & 0x0F) << 8);
|
touchpad_x = packet->rgucTouchpadData1[0] | (((int)packet->rgucTouchpadData1[1] & 0x0F) << 8);
|
||||||
touchpad_y = (packet->rgucTouchpadData1[1] >> 4) | ((int)packet->rgucTouchpadData1[2] << 4);
|
touchpad_y = (packet->rgucTouchpadData1[1] >> 4) | ((int)packet->rgucTouchpadData1[2] << 4);
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, touchpad_state, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_state ? 1.0f : 0.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, touchpad_down, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_down ? 1.0f : 0.0f);
|
||||||
|
|
||||||
touchpad_state = !(packet->ucTouchpadCounter2 & 0x80) ? SDL_PRESSED : SDL_RELEASED;
|
touchpad_down = ((packet->ucTouchpadCounter2 & 0x80) == 0);
|
||||||
touchpad_x = packet->rgucTouchpadData2[0] | (((int)packet->rgucTouchpadData2[1] & 0x0F) << 8);
|
touchpad_x = packet->rgucTouchpadData2[0] | (((int)packet->rgucTouchpadData2[1] & 0x0F) << 8);
|
||||||
touchpad_y = (packet->rgucTouchpadData2[1] >> 4) | ((int)packet->rgucTouchpadData2[2] << 4);
|
touchpad_y = (packet->rgucTouchpadData2[1] >> 4) | ((int)packet->rgucTouchpadData2[2] << 4);
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, touchpad_state, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_state ? 1.0f : 0.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 1, touchpad_down, touchpad_x * TOUCHPAD_SCALEX, touchpad_y * TOUCHPAD_SCALEY, touchpad_down ? 1.0f : 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_memcpy(&ctx->last_state, packet, sizeof(ctx->last_state));
|
SDL_memcpy(&ctx->last_state, packet, sizeof(ctx->last_state));
|
||||||
|
|||||||
@@ -326,23 +326,23 @@ static void HIDAPI_DriverShield_HandleStatePacketV103(SDL_Joystick *joystick, SD
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[1] != data[1]) {
|
if (ctx->last_state[1] != data[1]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[1] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[1] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[1] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[1] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[1] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[1] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[1] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[1] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[1] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[1] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[1] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[1] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[1] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[1] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[1] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[1] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[2] != data[2]) {
|
if (ctx->last_state[2] != data[2]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[2] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[2] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_V103_PLUS, (data[2] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_V103_PLUS, ((data[2] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_V103_MINUS, (data[2] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_V103_MINUS, ((data[2] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[2] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[2] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[2] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[2] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_SHARE, (data[2] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_SHARE, ((data[2] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFTX, SDL_Swap16LE(*(Sint16 *)&data[4]) - 0x8000);
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFTX, SDL_Swap16LE(*(Sint16 *)&data[4]) - 0x8000);
|
||||||
@@ -362,17 +362,17 @@ static void HIDAPI_DriverShield_HandleStatePacketV103(SDL_Joystick *joystick, SD
|
|||||||
|
|
||||||
static void HIDAPI_DriverShield_HandleTouchPacketV103(SDL_Joystick *joystick, SDL_DriverShield_Context *ctx, const Uint8 *data, int size)
|
static void HIDAPI_DriverShield_HandleTouchPacketV103(SDL_Joystick *joystick, SDL_DriverShield_Context *ctx, const Uint8 *data, int size)
|
||||||
{
|
{
|
||||||
Uint8 touchpad_state;
|
bool touchpad_down;
|
||||||
float touchpad_x, touchpad_y;
|
float touchpad_x, touchpad_y;
|
||||||
Uint64 timestamp = SDL_GetTicksNS();
|
Uint64 timestamp = SDL_GetTicksNS();
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_V103_TOUCHPAD, (data[1] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_V103_TOUCHPAD, ((data[1] & 0x01) != 0));
|
||||||
|
|
||||||
// It's a triangular pad, but just use the center as the usable touch area
|
// It's a triangular pad, but just use the center as the usable touch area
|
||||||
touchpad_state = !(data[1] & 0x80) ? SDL_PRESSED : SDL_RELEASED;
|
touchpad_down = ((data[1] & 0x80) == 0);
|
||||||
touchpad_x = clamp((float)(data[2] - 0x70) / 0x50, 0.0f, 1.0f);
|
touchpad_x = clamp((float)(data[2] - 0x70) / 0x50, 0.0f, 1.0f);
|
||||||
touchpad_y = clamp((float)(data[4] - 0x40) / 0x15, 0.0f, 1.0f);
|
touchpad_y = clamp((float)(data[4] - 0x40) / 0x15, 0.0f, 1.0f);
|
||||||
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, touchpad_state, touchpad_x, touchpad_y, touchpad_state ? 1.0f : 0.0f);
|
SDL_SendJoystickTouchpad(timestamp, joystick, 0, 0, touchpad_down, touchpad_x, touchpad_y, touchpad_down ? 1.0f : 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HIDAPI_DriverShield_HandleStatePacketV104(SDL_Joystick *joystick, SDL_DriverShield_Context *ctx, Uint8 *data, int size)
|
static void HIDAPI_DriverShield_HandleStatePacketV104(SDL_Joystick *joystick, SDL_DriverShield_Context *ctx, Uint8 *data, int size)
|
||||||
@@ -419,18 +419,18 @@ static void HIDAPI_DriverShield_HandleStatePacketV104(SDL_Joystick *joystick, SD
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[3] != data[3]) {
|
if (ctx->last_state[3] != data[3]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[3] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[3] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[3] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[3] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[3] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[3] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[3] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[3] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[3] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[3] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[3] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[3] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[4] != data[4]) {
|
if (ctx->last_state[4] != data[4]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[4] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[4] & 0x01) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFTX, SDL_Swap16LE(*(Sint16 *)&data[9]) - 0x8000);
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFTX, SDL_Swap16LE(*(Sint16 *)&data[9]) - 0x8000);
|
||||||
@@ -443,9 +443,9 @@ static void HIDAPI_DriverShield_HandleStatePacketV104(SDL_Joystick *joystick, SD
|
|||||||
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, SDL_Swap16LE(*(Sint16 *)&data[21]) - 0x8000);
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, SDL_Swap16LE(*(Sint16 *)&data[21]) - 0x8000);
|
||||||
|
|
||||||
if (ctx->last_state[17] != data[17]) {
|
if (ctx->last_state[17] != data[17]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_SHARE, (data[17] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SHIELD_SHARE, ((data[17] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[17] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[17] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[17] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[17] & 0x04) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_memcpy(ctx->last_state, data, SDL_min(size, sizeof(ctx->last_state)));
|
SDL_memcpy(ctx->last_state, data, SDL_min(size, sizeof(ctx->last_state)));
|
||||||
|
|||||||
@@ -213,22 +213,22 @@ static void HIDAPI_DriverStadia_HandleStatePacket(SDL_Joystick *joystick, SDL_Dr
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[2] != data[2]) {
|
if (ctx->last_state[2] != data[2]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[2] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[2] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[2] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[2] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[2] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[2] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[2] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[2] & 0x80) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STADIA_CAPTURE, (data[2] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STADIA_CAPTURE, ((data[2] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STADIA_GOOGLE_ASSISTANT, (data[2] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STADIA_GOOGLE_ASSISTANT, ((data[2] & 0x02) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[3] != data[3]) {
|
if (ctx->last_state[3] != data[3]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[3] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[3] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[3] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[3] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[3] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[3] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[3] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[3] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[3] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[3] & 0x01) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
#define READ_STICK_AXIS(offset) \
|
#define READ_STICK_AXIS(offset) \
|
||||||
|
|||||||
@@ -1121,38 +1121,38 @@ static bool HIDAPI_DriverSteam_UpdateDevice(SDL_HIDAPI_Device *device)
|
|||||||
Uint8 hat = 0;
|
Uint8 hat = 0;
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_SOUTH_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_SOUTH_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_EAST_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_EAST_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_WEST_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_WEST_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_NORTH_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_NORTH_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER,
|
||||||
(ctx->m_state.ulButtons & STEAM_LEFT_BUMPER_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_LEFT_BUMPER_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER,
|
||||||
(ctx->m_state.ulButtons & STEAM_RIGHT_BUMPER_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_RIGHT_BUMPER_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_MENU_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_MENU_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_ESCAPE_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_ESCAPE_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_STEAM_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_STEAM_MASK) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK,
|
||||||
(ctx->m_state.ulButtons & STEAM_JOYSTICK_BUTTON_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_JOYSTICK_BUTTON_MASK) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_LEFT_PADDLE,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_LEFT_PADDLE,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_BACK_LEFT_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_BACK_LEFT_MASK) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_RIGHT_PADDLE,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_RIGHT_PADDLE,
|
||||||
(ctx->m_state.ulButtons & STEAM_BUTTON_BACK_RIGHT_MASK) ? SDL_PRESSED : SDL_RELEASED);
|
((ctx->m_state.ulButtons & STEAM_BUTTON_BACK_RIGHT_MASK) != 0));
|
||||||
|
|
||||||
if (ctx->m_state.ulButtons & STEAM_DPAD_UP_MASK) {
|
if (ctx->m_state.ulButtons & STEAM_DPAD_UP_MASK) {
|
||||||
hat |= SDL_HAT_UP;
|
hat |= SDL_HAT_UP;
|
||||||
|
|||||||
@@ -155,41 +155,41 @@ static void HIDAPI_DriverSteamDeck_HandleState(SDL_HIDAPI_Device *device,
|
|||||||
Uint8 hat = 0;
|
Uint8 hat = 0;
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_A) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_A) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_B) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_B) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_X) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_X) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_Y) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_Y) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_VIEW) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_VIEW) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_MENU) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_MENU) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_STEAM) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_STEAM) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_QAM,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_QAM,
|
||||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_QAM) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_QAM) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L3) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L3) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R3) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R3) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_RIGHT_PADDLE1,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_RIGHT_PADDLE1,
|
||||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_R4) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_R4) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_LEFT_PADDLE1,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_LEFT_PADDLE1,
|
||||||
(pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_L4) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsH & STEAMDECK_HBUTTON_L4) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_RIGHT_PADDLE2,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_RIGHT_PADDLE2,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R5) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_R5) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_LEFT_PADDLE2,
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_STEAM_DECK_LEFT_PADDLE2,
|
||||||
(pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L5) ? SDL_PRESSED : SDL_RELEASED);
|
((pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_L5) != 0));
|
||||||
|
|
||||||
if (pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_DPAD_UP) {
|
if (pInReport->payload.deckState.ulButtonsL & STEAMDECK_LBUTTON_DPAD_UP) {
|
||||||
hat |= SDL_HAT_UP;
|
hat |= SDL_HAT_UP;
|
||||||
|
|||||||
@@ -1718,22 +1718,22 @@ static void HandleInputOnlyControllerState(SDL_Joystick *joystick, SDL_DriverSwi
|
|||||||
|
|
||||||
if (packet->rgucButtons[0] != ctx->m_lastInputOnlyState.rgucButtons[0]) {
|
if (packet->rgucButtons[0] != ctx->m_lastInputOnlyState.rgucButtons[0]) {
|
||||||
Uint8 data = packet->rgucButtons[0];
|
Uint8 data = packet->rgucButtons[0];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucButtons[1] != ctx->m_lastInputOnlyState.rgucButtons[1]) {
|
if (packet->rgucButtons[1] != ctx->m_lastInputOnlyState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->rgucButtons[1];
|
Uint8 data = packet->rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->ucStickHat != ctx->m_lastInputOnlyState.ucStickHat) {
|
if (packet->ucStickHat != ctx->m_lastInputOnlyState.ucStickHat) {
|
||||||
@@ -1820,16 +1820,16 @@ static void HandleCombinedSimpleControllerStateL(Uint64 timestamp, SDL_Joystick
|
|||||||
}
|
}
|
||||||
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE1, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE1, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE2, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE2, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->rgucButtons[1];
|
Uint8 data = packet->rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x40) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sint16 axis = (packet->rgucButtons[1] & 0x80) ? 32767 : -32768;
|
Sint16 axis = (packet->rgucButtons[1] & 0x80) ? 32767 : -32768;
|
||||||
@@ -1881,20 +1881,20 @@ static void HandleCombinedSimpleControllerStateR(Uint64 timestamp, SDL_Joystick
|
|||||||
{
|
{
|
||||||
if (packet->rgucButtons[0] != ctx->m_lastSimpleState.rgucButtons[0]) {
|
if (packet->rgucButtons[0] != ctx->m_lastSimpleState.rgucButtons[0]) {
|
||||||
Uint8 data = packet->rgucButtons[0];
|
Uint8 data = packet->rgucButtons[0];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE2, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE2, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE1, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE1, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->rgucButtons[1];
|
Uint8 data = packet->rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x40) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sint16 axis = (packet->rgucButtons[1] & 0x80) ? 32767 : -32768;
|
Sint16 axis = (packet->rgucButtons[1] & 0x80) ? 32767 : -32768;
|
||||||
@@ -1946,21 +1946,21 @@ static void HandleMiniSimpleControllerStateL(Uint64 timestamp, SDL_Joystick *joy
|
|||||||
{
|
{
|
||||||
if (packet->rgucButtons[0] != ctx->m_lastSimpleState.rgucButtons[0]) {
|
if (packet->rgucButtons[0] != ctx->m_lastSimpleState.rgucButtons[0]) {
|
||||||
Uint8 data = packet->rgucButtons[0];
|
Uint8 data = packet->rgucButtons[0];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->rgucButtons[1];
|
Uint8 data = packet->rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE1, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE1, ((data & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE2, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE2, ((data & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->ucStickHat != ctx->m_lastSimpleState.ucStickHat) {
|
if (packet->ucStickHat != ctx->m_lastSimpleState.ucStickHat) {
|
||||||
@@ -2009,22 +2009,22 @@ static void HandleMiniSimpleControllerStateR(Uint64 timestamp, SDL_Joystick *joy
|
|||||||
{
|
{
|
||||||
if (packet->rgucButtons[0] != ctx->m_lastSimpleState.rgucButtons[0]) {
|
if (packet->rgucButtons[0] != ctx->m_lastSimpleState.rgucButtons[0]) {
|
||||||
Uint8 data = packet->rgucButtons[0];
|
Uint8 data = packet->rgucButtons[0];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->rgucButtons[1];
|
Uint8 data = packet->rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE1, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE1, ((data & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE2, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE2, ((data & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->ucStickHat != ctx->m_lastSimpleState.ucStickHat) {
|
if (packet->ucStickHat != ctx->m_lastSimpleState.ucStickHat) {
|
||||||
@@ -2090,22 +2090,22 @@ static void HandleSimpleControllerState(SDL_Joystick *joystick, SDL_DriverSwitch
|
|||||||
|
|
||||||
if (packet->rgucButtons[0] != ctx->m_lastSimpleState.rgucButtons[0]) {
|
if (packet->rgucButtons[0] != ctx->m_lastSimpleState.rgucButtons[0]) {
|
||||||
Uint8 data = packet->rgucButtons[0];
|
Uint8 data = packet->rgucButtons[0];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
if (packet->rgucButtons[1] != ctx->m_lastSimpleState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->rgucButtons[1];
|
Uint8 data = packet->rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->ucStickHat != ctx->m_lastSimpleState.ucStickHat) {
|
if (packet->ucStickHat != ctx->m_lastSimpleState.ucStickHat) {
|
||||||
@@ -2214,9 +2214,9 @@ static void HandleCombinedControllerStateL(Uint64 timestamp, SDL_Joystick *joyst
|
|||||||
|
|
||||||
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[1];
|
Uint8 data = packet->controllerState.rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->controllerState.rgucButtons[2] != ctx->m_lastFullState.controllerState.rgucButtons[2]) {
|
if (packet->controllerState.rgucButtons[2] != ctx->m_lastFullState.controllerState.rgucButtons[2]) {
|
||||||
@@ -2237,9 +2237,9 @@ static void HandleCombinedControllerStateL(Uint64 timestamp, SDL_Joystick *joyst
|
|||||||
}
|
}
|
||||||
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE2, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE2, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE1, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE1, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x40) != 0));
|
||||||
axis = (data & 0x80) ? 32767 : -32768;
|
axis = (data & 0x80) ? 32767 : -32768;
|
||||||
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, axis);
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, axis);
|
||||||
}
|
}
|
||||||
@@ -2259,22 +2259,22 @@ static void HandleCombinedControllerStateR(Uint64 timestamp, SDL_Joystick *joyst
|
|||||||
|
|
||||||
if (packet->controllerState.rgucButtons[0] != ctx->m_lastFullState.controllerState.rgucButtons[0]) {
|
if (packet->controllerState.rgucButtons[0] != ctx->m_lastFullState.controllerState.rgucButtons[0]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[0];
|
Uint8 data = packet->controllerState.rgucButtons[0];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE1, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE1, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE2, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE2, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x40) != 0));
|
||||||
axis = (data & 0x80) ? 32767 : -32768;
|
axis = (data & 0x80) ? 32767 : -32768;
|
||||||
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, axis);
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[1];
|
Uint8 data = packet->controllerState.rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x10) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = packet->controllerState.rgucJoystickRight[0] | ((packet->controllerState.rgucJoystickRight[1] & 0xF) << 8);
|
axis = packet->controllerState.rgucJoystickRight[0] | ((packet->controllerState.rgucJoystickRight[1] & 0xF) << 8);
|
||||||
@@ -2292,21 +2292,21 @@ static void HandleMiniControllerStateL(Uint64 timestamp, SDL_Joystick *joystick,
|
|||||||
|
|
||||||
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[1];
|
Uint8 data = packet->controllerState.rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->controllerState.rgucButtons[2] != ctx->m_lastFullState.controllerState.rgucButtons[2]) {
|
if (packet->controllerState.rgucButtons[2] != ctx->m_lastFullState.controllerState.rgucButtons[2]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[2];
|
Uint8 data = packet->controllerState.rgucButtons[2];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE1, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE1, ((data & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE2, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_LEFT_PADDLE2, ((data & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = packet->controllerState.rgucJoystickLeft[0] | ((packet->controllerState.rgucJoystickLeft[1] & 0xF) << 8);
|
axis = packet->controllerState.rgucJoystickLeft[0] | ((packet->controllerState.rgucJoystickLeft[1] & 0xF) << 8);
|
||||||
@@ -2324,21 +2324,21 @@ static void HandleMiniControllerStateR(Uint64 timestamp, SDL_Joystick *joystick,
|
|||||||
|
|
||||||
if (packet->controllerState.rgucButtons[0] != ctx->m_lastFullState.controllerState.rgucButtons[0]) {
|
if (packet->controllerState.rgucButtons[0] != ctx->m_lastFullState.controllerState.rgucButtons[0]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[0];
|
Uint8 data = packet->controllerState.rgucButtons[0];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE1, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE1, ((data & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE2, (data & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_RIGHT_PADDLE2, ((data & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[1];
|
Uint8 data = packet->controllerState.rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x10) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = packet->controllerState.rgucJoystickRight[0] | ((packet->controllerState.rgucJoystickRight[1] & 0xF) << 8);
|
axis = packet->controllerState.rgucJoystickRight[0] | ((packet->controllerState.rgucJoystickRight[1] & 0xF) << 8);
|
||||||
@@ -2371,22 +2371,22 @@ static void HandleFullControllerState(SDL_Joystick *joystick, SDL_DriverSwitch_C
|
|||||||
|
|
||||||
if (packet->controllerState.rgucButtons[0] != ctx->m_lastFullState.controllerState.rgucButtons[0]) {
|
if (packet->controllerState.rgucButtons[0] != ctx->m_lastFullState.controllerState.rgucButtons[0]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[0];
|
Uint8 data = packet->controllerState.rgucButtons[0];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_SOUTH), ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_EAST), ((data & 0x08) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_WEST), ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, RemapButton(ctx, SDL_GAMEPAD_BUTTON_NORTH), ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data & 0x40) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
if (packet->controllerState.rgucButtons[1] != ctx->m_lastFullState.controllerState.rgucButtons[1]) {
|
||||||
Uint8 data = packet->controllerState.rgucButtons[1];
|
Uint8 data = packet->controllerState.rgucButtons[1];
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data & 0x08) != 0));
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, (data & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH_SHARE, ((data & 0x20) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet->controllerState.rgucButtons[2] != ctx->m_lastFullState.controllerState.rgucButtons[2]) {
|
if (packet->controllerState.rgucButtons[2] != ctx->m_lastFullState.controllerState.rgucButtons[2]) {
|
||||||
@@ -2407,7 +2407,7 @@ static void HandleFullControllerState(SDL_Joystick *joystick, SDL_DriverSwitch_C
|
|||||||
}
|
}
|
||||||
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data & 0x40) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = (packet->controllerState.rgucButtons[0] & 0x80) ? 32767 : -32768;
|
axis = (packet->controllerState.rgucButtons[0] & 0x80) ? 32767 : -32768;
|
||||||
|
|||||||
@@ -919,7 +919,7 @@ static void PostStickCalibrated(Uint64 timestamp, SDL_Joystick *joystick, StickC
|
|||||||
*`on` is the joystick value to be sent if a bit is on
|
*`on` is the joystick value to be sent if a bit is on
|
||||||
*`off` is the joystick value to be sent if a bit is off
|
*`off` is the joystick value to be sent if a bit is off
|
||||||
*/
|
*/
|
||||||
static void PostPackedButtonData(Uint64 timestamp, SDL_Joystick *joystick, const Uint8 defs[][8], const Uint8 *data, int size, Uint8 on, Uint8 off)
|
static void PostPackedButtonData(Uint64 timestamp, SDL_Joystick *joystick, const Uint8 defs[][8], const Uint8 *data, int size, bool on, bool off)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
@@ -927,8 +927,8 @@ static void PostPackedButtonData(Uint64 timestamp, SDL_Joystick *joystick, const
|
|||||||
for (j = 0; j < 8; j++) {
|
for (j = 0; j < 8; j++) {
|
||||||
Uint8 button = defs[i][j];
|
Uint8 button = defs[i][j];
|
||||||
if (button != 0xFF) {
|
if (button != 0xFF) {
|
||||||
Uint8 state = (data[i] >> j) & 1 ? on : off;
|
bool down = (data[i] >> j) & 1 ? on : off;
|
||||||
SDL_SendJoystickButton(timestamp, joystick, button, state);
|
SDL_SendJoystickButton(timestamp, joystick, button, down);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1035,7 +1035,7 @@ static void HandleWiiUProButtonData(SDL_DriverWii_Context *ctx, SDL_Joystick *jo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
PostPackedButtonData(ctx->timestamp, joystick, buttons, data->rgucExtension + 8, 3, SDL_RELEASED, SDL_PRESSED);
|
PostPackedButtonData(ctx->timestamp, joystick, buttons, data->rgucExtension + 8, 3, false, true);
|
||||||
|
|
||||||
// Triggers
|
// Triggers
|
||||||
zl = data->rgucExtension[9] & 0x80;
|
zl = data->rgucExtension[9] & 0x80;
|
||||||
@@ -1063,9 +1063,9 @@ static void HandleGamepadControllerButtonData(SDL_DriverWii_Context *ctx, SDL_Jo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
PostPackedButtonData(ctx->timestamp, joystick, buttons, data->rgucExtension + 4, 2, SDL_RELEASED, SDL_PRESSED);
|
PostPackedButtonData(ctx->timestamp, joystick, buttons, data->rgucExtension + 4, 2, false, true);
|
||||||
if (ctx->m_ucMotionPlusMode == WII_MOTIONPLUS_MODE_GAMEPAD) {
|
if (ctx->m_ucMotionPlusMode == WII_MOTIONPLUS_MODE_GAMEPAD) {
|
||||||
PostPackedButtonData(ctx->timestamp, joystick, MP_FIXUP_DPAD_BUTTON_DEFS, data->rgucExtension, 2, SDL_RELEASED, SDL_PRESSED);
|
PostPackedButtonData(ctx->timestamp, joystick, MP_FIXUP_DPAD_BUTTON_DEFS, data->rgucExtension, 2, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Triggers
|
// Triggers
|
||||||
@@ -1115,7 +1115,7 @@ static void HandleWiiRemoteButtonData(SDL_DriverWii_Context *ctx, SDL_Joystick *
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (data->hasBaseButtons) {
|
if (data->hasBaseButtons) {
|
||||||
PostPackedButtonData(ctx->timestamp, joystick, buttons, data->rgucBaseButtons, 2, SDL_PRESSED, SDL_RELEASED);
|
PostPackedButtonData(ctx->timestamp, joystick, buttons, data->rgucBaseButtons, 2, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1148,24 +1148,24 @@ static void HandleWiiRemoteButtonDataAsMainController(SDL_DriverWii_Context *ctx
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (data->hasBaseButtons) {
|
if (data->hasBaseButtons) {
|
||||||
PostPackedButtonData(ctx->timestamp, joystick, buttons, data->rgucBaseButtons, 2, SDL_PRESSED, SDL_RELEASED);
|
PostPackedButtonData(ctx->timestamp, joystick, buttons, data->rgucBaseButtons, 2, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HandleNunchuckButtonData(SDL_DriverWii_Context *ctx, SDL_Joystick *joystick, const WiiButtonData *data)
|
static void HandleNunchuckButtonData(SDL_DriverWii_Context *ctx, SDL_Joystick *joystick, const WiiButtonData *data)
|
||||||
{
|
{
|
||||||
Uint8 c_button, z_button;
|
bool c_button, z_button;
|
||||||
|
|
||||||
if (data->ucNExtensionBytes < 6) {
|
if (data->ucNExtensionBytes < 6) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->m_ucMotionPlusMode == WII_MOTIONPLUS_MODE_NUNCHUK) {
|
if (ctx->m_ucMotionPlusMode == WII_MOTIONPLUS_MODE_NUNCHUK) {
|
||||||
c_button = (data->rgucExtension[5] & 0x08) ? SDL_RELEASED : SDL_PRESSED;
|
c_button = (data->rgucExtension[5] & 0x08) ? false : true;
|
||||||
z_button = (data->rgucExtension[5] & 0x04) ? SDL_RELEASED : SDL_PRESSED;
|
z_button = (data->rgucExtension[5] & 0x04) ? false : true;
|
||||||
} else {
|
} else {
|
||||||
c_button = (data->rgucExtension[5] & 0x02) ? SDL_RELEASED : SDL_PRESSED;
|
c_button = (data->rgucExtension[5] & 0x02) ? false : true;
|
||||||
z_button = (data->rgucExtension[5] & 0x01) ? SDL_RELEASED : SDL_PRESSED;
|
z_button = (data->rgucExtension[5] & 0x01) ? false : true;
|
||||||
}
|
}
|
||||||
SDL_SendJoystickButton(ctx->timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, c_button);
|
SDL_SendJoystickButton(ctx->timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, c_button);
|
||||||
SDL_SendJoystickAxis(ctx->timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, z_button ? SDL_JOYSTICK_AXIS_MAX : SDL_JOYSTICK_AXIS_MIN);
|
SDL_SendJoystickAxis(ctx->timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, z_button ? SDL_JOYSTICK_AXIS_MAX : SDL_JOYSTICK_AXIS_MIN);
|
||||||
|
|||||||
@@ -291,20 +291,20 @@ static void HIDAPI_DriverXbox360_HandleStatePacket(SDL_Joystick *joystick, SDL_D
|
|||||||
}
|
}
|
||||||
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[2] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[2] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[2] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[2] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[2] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[2] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[2] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[2] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[3] != data[3]) {
|
if (ctx->last_state[3] != data[3]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[3] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[3] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[3] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[3] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[3] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[3] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[3] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[3] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[3] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[3] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = ((int)data[4] * 257) - 32768;
|
axis = ((int)data[4] * 257) - 32768;
|
||||||
|
|||||||
@@ -248,20 +248,20 @@ static void HIDAPI_DriverXbox360W_HandleStatePacket(SDL_Joystick *joystick, SDL_
|
|||||||
}
|
}
|
||||||
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
||||||
|
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, (data[2] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[2] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, (data[2] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[2] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, (data[2] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[2] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, (data[2] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[2] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[3] != data[3]) {
|
if (ctx->last_state[3] != data[3]) {
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, (data[3] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[3] & 0x01) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, (data[3] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[3] & 0x02) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, (data[3] & 0x04) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[3] & 0x04) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, (data[3] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x10) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, (data[3] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x20) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, (data[3] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x40) != 0));
|
||||||
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, (data[3] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x80) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = ((int)data[4] * 257) - 32768;
|
axis = ((int)data[4] * 257) - 32768;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user