|
@@ -372,6 +372,10 @@ static bool HIDAPI_DriverSwitch2_InitUSB(SDL_HIDAPI_Device *device)
|
|
|
(Uint8[]) { // Enable rumble
|
|
(Uint8[]) { // Enable rumble
|
|
|
0x01, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0,
|
|
0x01, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0,
|
|
|
},
|
|
},
|
|
|
|
|
+ (Uint8[]) { // Set report format
|
|
|
|
|
+ 0x03, 0x91, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00,
|
|
|
|
|
+ 0x05, 0x00, 0x00, 0x00
|
|
|
|
|
+ },
|
|
|
(Uint8[]) { // Start output
|
|
(Uint8[]) { // Start output
|
|
|
0x03, 0x91, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00,
|
|
0x03, 0x91, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00,
|
|
|
0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
@@ -604,41 +608,42 @@ static bool HIDAPI_DriverSwitch2_SetJoystickSensorsEnabled(SDL_HIDAPI_Device *de
|
|
|
|
|
|
|
|
static void HandleGameCubeState(Uint64 timestamp, SDL_Joystick *joystick, SDL_DriverSwitch2_Context *ctx, Uint8 *data, int size)
|
|
static void HandleGameCubeState(Uint64 timestamp, SDL_Joystick *joystick, SDL_DriverSwitch2_Context *ctx, Uint8 *data, int size)
|
|
|
{
|
|
{
|
|
|
- if (data[3] != ctx->last_state[3]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x02) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x04) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x08) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_RIGHT_TRIGGER, ((data[3] & 0x10) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_RIGHT_SHOULDER, ((data[3] & 0x20) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_START, ((data[3] & 0x40) != 0));
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (data[5] != ctx->last_state[5]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[5] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[5] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[5] & 0x04) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[5] & 0x08) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_RIGHT_TRIGGER, ((data[5] & 0x40) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_RIGHT_SHOULDER, ((data[5] & 0x80) != 0));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (data[6] != ctx->last_state[6]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_START, ((data[6] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_GUIDE, ((data[6] & 0x10) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_SHARE, ((data[6] & 0x20) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_C, ((data[6] & 0x40) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (data[4] != ctx->last_state[4]) {
|
|
|
|
|
|
|
+ if (data[7] != ctx->last_state[7]) {
|
|
|
Uint8 hat = 0;
|
|
Uint8 hat = 0;
|
|
|
|
|
|
|
|
- if (data[4] & 0x01) {
|
|
|
|
|
|
|
+ if (data[7] & 0x01) {
|
|
|
hat |= SDL_HAT_DOWN;
|
|
hat |= SDL_HAT_DOWN;
|
|
|
}
|
|
}
|
|
|
- if (data[4] & 0x02) {
|
|
|
|
|
|
|
+ if (data[7] & 0x02) {
|
|
|
|
|
+ hat |= SDL_HAT_UP;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (data[7] & 0x04) {
|
|
|
hat |= SDL_HAT_RIGHT;
|
|
hat |= SDL_HAT_RIGHT;
|
|
|
}
|
|
}
|
|
|
- if (data[4] & 0x04) {
|
|
|
|
|
|
|
+ if (data[7] & 0x08) {
|
|
|
hat |= SDL_HAT_LEFT;
|
|
hat |= SDL_HAT_LEFT;
|
|
|
}
|
|
}
|
|
|
- if (data[4] & 0x08) {
|
|
|
|
|
- hat |= SDL_HAT_UP;
|
|
|
|
|
- }
|
|
|
|
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
|
|
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_LEFT_TRIGGER, ((data[4] & 0x10) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_LEFT_SHOULDER, ((data[4] & 0x20) != 0));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (data[5] != ctx->last_state[5]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_GUIDE, ((data[5] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_SHARE, ((data[5] & 0x02) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_C, ((data[5] & 0x10) != 0));
|
|
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_LEFT_TRIGGER, ((data[7] & 0x40) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_GAMECUBE_LEFT_SHOULDER, ((data[7] & 0x80) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
MapTriggerAxis(
|
|
MapTriggerAxis(
|
|
@@ -646,14 +651,14 @@ static void HandleGameCubeState(Uint64 timestamp, SDL_Joystick *joystick, SDL_Dr
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFT_TRIGGER,
|
|
SDL_GAMEPAD_AXIS_LEFT_TRIGGER,
|
|
|
ctx->left_trigger_zero,
|
|
ctx->left_trigger_zero,
|
|
|
- data[13]
|
|
|
|
|
|
|
+ data[61]
|
|
|
);
|
|
);
|
|
|
MapTriggerAxis(
|
|
MapTriggerAxis(
|
|
|
timestamp,
|
|
timestamp,
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_RIGHT_TRIGGER,
|
|
SDL_GAMEPAD_AXIS_RIGHT_TRIGGER,
|
|
|
ctx->right_trigger_zero,
|
|
ctx->right_trigger_zero,
|
|
|
- data[14]
|
|
|
|
|
|
|
+ data[62]
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -661,7 +666,7 @@ static void HandleGameCubeState(Uint64 timestamp, SDL_Joystick *joystick, SDL_Dr
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
|
&ctx->left_stick.x,
|
|
&ctx->left_stick.x,
|
|
|
- (float) (data[6] | ((data[7] & 0x0F) << 8)),
|
|
|
|
|
|
|
+ (float) (data[11] | ((data[12] & 0x0F) << 8)),
|
|
|
false
|
|
false
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -669,7 +674,7 @@ static void HandleGameCubeState(Uint64 timestamp, SDL_Joystick *joystick, SDL_Dr
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
|
&ctx->left_stick.y,
|
|
&ctx->left_stick.y,
|
|
|
- (float) ((data[7] >> 4) | (data[8] << 4)),
|
|
|
|
|
|
|
+ (float) ((data[12] >> 4) | (data[13] << 4)),
|
|
|
true
|
|
true
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -677,7 +682,7 @@ static void HandleGameCubeState(Uint64 timestamp, SDL_Joystick *joystick, SDL_Dr
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_RIGHTX,
|
|
SDL_GAMEPAD_AXIS_RIGHTX,
|
|
|
&ctx->right_stick.x,
|
|
&ctx->right_stick.x,
|
|
|
- (float) (data[9] | ((data[10] & 0x0F) << 8)),
|
|
|
|
|
|
|
+ (float) (data[14] | ((data[15] & 0x0F) << 8)),
|
|
|
false
|
|
false
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -685,7 +690,7 @@ static void HandleGameCubeState(Uint64 timestamp, SDL_Joystick *joystick, SDL_Dr
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_RIGHTY,
|
|
SDL_GAMEPAD_AXIS_RIGHTY,
|
|
|
&ctx->right_stick.y,
|
|
&ctx->right_stick.y,
|
|
|
- (float)((data[10] >> 4) | (data[11] << 4)),
|
|
|
|
|
|
|
+ (float)((data[15] >> 4) | (data[16] << 4)),
|
|
|
true
|
|
true
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -694,33 +699,33 @@ static void HandleCombinedControllerStateL(Uint64 timestamp, SDL_Joystick *joyst
|
|
|
{
|
|
{
|
|
|
// FIXME: When we find out what the SL and SR buttons are, map them to paddles
|
|
// FIXME: When we find out what the SL and SR buttons are, map them to paddles
|
|
|
|
|
|
|
|
- if (data[3] != ctx->last_state[3]) {
|
|
|
|
|
|
|
+ if (data[6] != ctx->last_state[6]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[6] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[6] & 0x08) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_SHARE, ((data[6] & 0x20) != 0));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (data[7] != ctx->last_state[7]) {
|
|
|
Uint8 hat = 0;
|
|
Uint8 hat = 0;
|
|
|
|
|
|
|
|
- if (data[3] & 0x01) {
|
|
|
|
|
|
|
+ if (data[7] & 0x01) {
|
|
|
hat |= SDL_HAT_DOWN;
|
|
hat |= SDL_HAT_DOWN;
|
|
|
}
|
|
}
|
|
|
- if (data[3] & 0x02) {
|
|
|
|
|
|
|
+ if (data[7] & 0x02) {
|
|
|
|
|
+ hat |= SDL_HAT_UP;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (data[7] & 0x04) {
|
|
|
hat |= SDL_HAT_RIGHT;
|
|
hat |= SDL_HAT_RIGHT;
|
|
|
}
|
|
}
|
|
|
- if (data[3] & 0x04) {
|
|
|
|
|
|
|
+ if (data[7] & 0x08) {
|
|
|
hat |= SDL_HAT_LEFT;
|
|
hat |= SDL_HAT_LEFT;
|
|
|
}
|
|
}
|
|
|
- if (data[3] & 0x08) {
|
|
|
|
|
- hat |= SDL_HAT_UP;
|
|
|
|
|
- }
|
|
|
|
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
|
|
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[3] & 0x10) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[3] & 0x40) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[3] & 0x80) != 0));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (data[4] != ctx->last_state[4]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_SHARE, ((data[4] & 0x01) != 0));
|
|
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[7] & 0x40) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Sint16 axis = (data[3] & 0x20) ? 32767 : -32768;
|
|
|
|
|
|
|
+ Sint16 axis = (data[7] & 0x80) ? 32767 : -32768;
|
|
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, axis);
|
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, axis);
|
|
|
|
|
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -728,7 +733,7 @@ static void HandleCombinedControllerStateL(Uint64 timestamp, SDL_Joystick *joyst
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
|
&ctx->left_stick.x,
|
|
&ctx->left_stick.x,
|
|
|
- (float) (data[6] | ((data[7] & 0x0F) << 8)),
|
|
|
|
|
|
|
+ (float) (data[11] | ((data[12] & 0x0F) << 8)),
|
|
|
false
|
|
false
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -736,7 +741,7 @@ static void HandleCombinedControllerStateL(Uint64 timestamp, SDL_Joystick *joyst
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
|
&ctx->left_stick.y,
|
|
&ctx->left_stick.y,
|
|
|
- (float) ((data[7] >> 4) | (data[8] << 4)),
|
|
|
|
|
|
|
+ (float) ((data[12] >> 4) | (data[13] << 4)),
|
|
|
true
|
|
true
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -745,19 +750,20 @@ static void HandleMiniControllerStateL(Uint64 timestamp, SDL_Joystick *joystick,
|
|
|
{
|
|
{
|
|
|
// FIXME: When we find out what the SL and SR buttons are, map them to shoulder buttons
|
|
// FIXME: When we find out what the SL and SR buttons are, map them to shoulder buttons
|
|
|
|
|
|
|
|
- if (data[3] != ctx->last_state[3]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x02) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x04) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x08) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[3] & 0x40) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_LEFT_PADDLE1, ((data[3] & 0x10) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_LEFT_PADDLE2, ((data[3] & 0x20) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[3] & 0x80) != 0));
|
|
|
|
|
|
|
+ if (data[6] != ctx->last_state[6]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[6] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[6] & 0x08) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[6] & 0x20) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_SHARE, ((data[6] & 0x10) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (data[4] != ctx->last_state[4]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[4] & 0x01) != 0));
|
|
|
|
|
|
|
+ if (data[7] != ctx->last_state[7]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[7] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[7] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[7] & 0x04) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[7] & 0x08) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_LEFT_PADDLE1, ((data[7] & 0x40) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_LEFT_PADDLE2, ((data[7] & 0x80) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -765,7 +771,7 @@ static void HandleMiniControllerStateL(Uint64 timestamp, SDL_Joystick *joystick,
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
|
&ctx->left_stick.y,
|
|
&ctx->left_stick.y,
|
|
|
- (float) ((data[7] >> 4) | (data[8] << 4)),
|
|
|
|
|
|
|
+ (float) ((data[12] >> 4) | (data[13] << 4)),
|
|
|
true
|
|
true
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -773,7 +779,7 @@ static void HandleMiniControllerStateL(Uint64 timestamp, SDL_Joystick *joystick,
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
|
&ctx->left_stick.x,
|
|
&ctx->left_stick.x,
|
|
|
- (float) (data[6] | ((data[7] & 0x0F) << 8)),
|
|
|
|
|
|
|
+ (float) (data[11] | ((data[12] & 0x0F) << 8)),
|
|
|
true
|
|
true
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -782,22 +788,22 @@ static void HandleCombinedControllerStateR(Uint64 timestamp, SDL_Joystick *joyst
|
|
|
{
|
|
{
|
|
|
// FIXME: When we find out what the SL and SR buttons are, map them to paddles
|
|
// FIXME: When we find out what the SL and SR buttons are, map them to paddles
|
|
|
|
|
|
|
|
- if (data[3] != ctx->last_state[3]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x02) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x04) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x08) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[3] & 0x10) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[3] & 0x40) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[3] & 0x80) != 0));
|
|
|
|
|
|
|
+ if (data[5] != ctx->last_state[5]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[5] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[5] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[5] & 0x04) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[5] & 0x08) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[5] & 0x40) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (data[4] != ctx->last_state[4]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[4] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_C, ((data[4] & 0x10) != 0));
|
|
|
|
|
|
|
+ if (data[6] != ctx->last_state[6]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[6] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[6] & 0x04) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[6] & 0x10) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_C, ((data[6] & 0x40) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Sint16 axis = (data[3] & 0x20) ? 32767 : -32768;
|
|
|
|
|
|
|
+ Sint16 axis = (data[5] & 0x80) ? 32767 : -32768;
|
|
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, axis);
|
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, axis);
|
|
|
|
|
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -805,7 +811,7 @@ static void HandleCombinedControllerStateR(Uint64 timestamp, SDL_Joystick *joyst
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_RIGHTX,
|
|
SDL_GAMEPAD_AXIS_RIGHTX,
|
|
|
&ctx->left_stick.x,
|
|
&ctx->left_stick.x,
|
|
|
- (float) (data[6] | ((data[7] & 0x0F) << 8)),
|
|
|
|
|
|
|
+ (float) (data[14] | ((data[15] & 0x0F) << 8)),
|
|
|
false
|
|
false
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -813,7 +819,7 @@ static void HandleCombinedControllerStateR(Uint64 timestamp, SDL_Joystick *joyst
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_RIGHTY,
|
|
SDL_GAMEPAD_AXIS_RIGHTY,
|
|
|
&ctx->left_stick.y,
|
|
&ctx->left_stick.y,
|
|
|
- (float) ((data[7] >> 4) | (data[8] << 4)),
|
|
|
|
|
|
|
+ (float)((data[15] >> 4) | (data[16] << 4)),
|
|
|
true
|
|
true
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -822,20 +828,20 @@ static void HandleMiniControllerStateR(Uint64 timestamp, SDL_Joystick *joystick,
|
|
|
{
|
|
{
|
|
|
// FIXME: When we find out what the SL and SR buttons are, map them to shoulder buttons
|
|
// FIXME: When we find out what the SL and SR buttons are, map them to shoulder buttons
|
|
|
|
|
|
|
|
- if (data[3] != ctx->last_state[3]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x02) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x04) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x08) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_RIGHT_PADDLE1, ((data[3] & 0x10) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_RIGHT_PADDLE2, ((data[3] & 0x20) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[3] & 0x40) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[3] & 0x80) != 0));
|
|
|
|
|
|
|
+ if (data[5] != ctx->last_state[5]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[5] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[5] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[5] & 0x04) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[5] & 0x08) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_RIGHT_PADDLE1, ((data[5] & 0x40) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_RIGHT_PADDLE2, ((data[5] & 0x80) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (data[4] != ctx->last_state[4]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[4] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_C, ((data[4] & 0x10) != 0));
|
|
|
|
|
|
|
+ if (data[6] != ctx->last_state[6]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[6] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[6] & 0x04) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[6] & 0x10) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_JOYCON_C, ((data[6] & 0x40) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -843,7 +849,7 @@ static void HandleMiniControllerStateR(Uint64 timestamp, SDL_Joystick *joystick,
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
|
&ctx->left_stick.y,
|
|
&ctx->left_stick.y,
|
|
|
- (float) ((data[7] >> 4) | (data[8] << 4)),
|
|
|
|
|
|
|
+ (float)((data[15] >> 4) | (data[16] << 4)),
|
|
|
false
|
|
false
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -851,7 +857,7 @@ static void HandleMiniControllerStateR(Uint64 timestamp, SDL_Joystick *joystick,
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
|
&ctx->left_stick.x,
|
|
&ctx->left_stick.x,
|
|
|
- (float) (data[6] | ((data[7] & 0x0F) << 8)),
|
|
|
|
|
|
|
+ (float) (data[14] | ((data[15] & 0x0F) << 8)),
|
|
|
false
|
|
false
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -860,58 +866,61 @@ static void HandleSwitchProState(Uint64 timestamp, SDL_Joystick *joystick, SDL_D
|
|
|
{
|
|
{
|
|
|
Sint16 axis;
|
|
Sint16 axis;
|
|
|
|
|
|
|
|
- if (data[3] != ctx->last_state[3]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[3] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[3] & 0x02) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[3] & 0x04) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[3] & 0x08) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[3] & 0x10) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[3] & 0x40) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[3] & 0x80) != 0));
|
|
|
|
|
|
|
+ if (data[5] != ctx->last_state[5]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_WEST, ((data[5] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_NORTH, ((data[5] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SOUTH, ((data[5] & 0x04) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_EAST, ((data[5] & 0x08) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, ((data[5] & 0x40) != 0));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (data[6] != ctx->last_state[6]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[6] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_START, ((data[6] & 0x02) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_RIGHT_STICK, ((data[6] & 0x04) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[6] & 0x08) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[6] & 0x10) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_SHARE, ((data[6] & 0x20) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_C, ((data[6] & 0x40) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (data[4] != ctx->last_state[4]) {
|
|
|
|
|
|
|
+ if (data[7] != ctx->last_state[7]) {
|
|
|
Uint8 hat = 0;
|
|
Uint8 hat = 0;
|
|
|
|
|
|
|
|
- if (data[4] & 0x01) {
|
|
|
|
|
|
|
+ if (data[7] & 0x01) {
|
|
|
hat |= SDL_HAT_DOWN;
|
|
hat |= SDL_HAT_DOWN;
|
|
|
}
|
|
}
|
|
|
- if (data[4] & 0x02) {
|
|
|
|
|
|
|
+ if (data[7] & 0x02) {
|
|
|
|
|
+ hat |= SDL_HAT_UP;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (data[7] & 0x04) {
|
|
|
hat |= SDL_HAT_RIGHT;
|
|
hat |= SDL_HAT_RIGHT;
|
|
|
}
|
|
}
|
|
|
- if (data[4] & 0x04) {
|
|
|
|
|
|
|
+ if (data[7] & 0x08) {
|
|
|
hat |= SDL_HAT_LEFT;
|
|
hat |= SDL_HAT_LEFT;
|
|
|
}
|
|
}
|
|
|
- if (data[4] & 0x08) {
|
|
|
|
|
- hat |= SDL_HAT_UP;
|
|
|
|
|
- }
|
|
|
|
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
|
SDL_SendJoystickHat(timestamp, joystick, 0, hat);
|
|
|
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[4] & 0x10) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_BACK, ((data[4] & 0x40) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_STICK, ((data[4] & 0x80) != 0));
|
|
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, ((data[7] & 0x40) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (data[5] != ctx->last_state[5]) {
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_GUIDE, ((data[5] & 0x01) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_SHARE, ((data[5] & 0x02) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_RIGHT_PADDLE, ((data[5] & 0x04) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_LEFT_PADDLE, ((data[5] & 0x08) != 0));
|
|
|
|
|
- SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_C, ((data[5] & 0x10) != 0));
|
|
|
|
|
|
|
+ if (data[8] != ctx->last_state[8]) {
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_RIGHT_PADDLE, ((data[8] & 0x01) != 0));
|
|
|
|
|
+ SDL_SendJoystickButton(timestamp, joystick, SDL_GAMEPAD_BUTTON_SWITCH2_PRO_LEFT_PADDLE, ((data[8] & 0x02) != 0));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- axis = (data[4] & 0x20) ? 32767 : -32768;
|
|
|
|
|
- SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, axis);
|
|
|
|
|
-
|
|
|
|
|
- axis = (data[3] & 0x20) ? 32767 : -32768;
|
|
|
|
|
|
|
+ axis = (data[5] & 0x80) ? 32767 : -32768;
|
|
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, axis);
|
|
SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, axis);
|
|
|
|
|
|
|
|
|
|
+ axis = (data[7] & 0x80) ? 32767 : -32768;
|
|
|
|
|
+ SDL_SendJoystickAxis(timestamp, joystick, SDL_GAMEPAD_AXIS_LEFT_TRIGGER, axis);
|
|
|
|
|
+
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
|
timestamp,
|
|
timestamp,
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
SDL_GAMEPAD_AXIS_LEFTX,
|
|
|
&ctx->left_stick.x,
|
|
&ctx->left_stick.x,
|
|
|
- (float) (data[6] | ((data[7] & 0x0F) << 8)),
|
|
|
|
|
|
|
+ (float) (data[11] | ((data[12] & 0x0F) << 8)),
|
|
|
false
|
|
false
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -919,7 +928,7 @@ static void HandleSwitchProState(Uint64 timestamp, SDL_Joystick *joystick, SDL_D
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
SDL_GAMEPAD_AXIS_LEFTY,
|
|
|
&ctx->left_stick.y,
|
|
&ctx->left_stick.y,
|
|
|
- (float) ((data[7] >> 4) | (data[8] << 4)),
|
|
|
|
|
|
|
+ (float) ((data[12] >> 4) | (data[13] << 4)),
|
|
|
true
|
|
true
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -927,7 +936,7 @@ static void HandleSwitchProState(Uint64 timestamp, SDL_Joystick *joystick, SDL_D
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_RIGHTX,
|
|
SDL_GAMEPAD_AXIS_RIGHTX,
|
|
|
&ctx->right_stick.x,
|
|
&ctx->right_stick.x,
|
|
|
- (float) (data[9] | ((data[10] & 0x0F) << 8)),
|
|
|
|
|
|
|
+ (float) (data[14] | ((data[15] & 0x0F) << 8)),
|
|
|
false
|
|
false
|
|
|
);
|
|
);
|
|
|
MapJoystickAxis(
|
|
MapJoystickAxis(
|
|
@@ -935,7 +944,7 @@ static void HandleSwitchProState(Uint64 timestamp, SDL_Joystick *joystick, SDL_D
|
|
|
joystick,
|
|
joystick,
|
|
|
SDL_GAMEPAD_AXIS_RIGHTY,
|
|
SDL_GAMEPAD_AXIS_RIGHTY,
|
|
|
&ctx->right_stick.y,
|
|
&ctx->right_stick.y,
|
|
|
- (float)((data[10] >> 4) | (data[11] << 4)),
|
|
|
|
|
|
|
+ (float)((data[15] >> 4) | (data[16] << 4)),
|
|
|
true
|
|
true
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
@@ -1021,7 +1030,7 @@ static void HIDAPI_DriverSwitch2_HandleStatePacket(SDL_HIDAPI_Device *device, SD
|
|
|
{
|
|
{
|
|
|
Uint64 timestamp = SDL_GetTicksNS();
|
|
Uint64 timestamp = SDL_GetTicksNS();
|
|
|
|
|
|
|
|
- if (size < 15) {
|
|
|
|
|
|
|
+ if (size < 64) {
|
|
|
// We don't know how to handle this report
|
|
// We don't know how to handle this report
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|