mirror of https://github.com/encounter/SDL.git
Fixed reading thumbstick axes and mic button on the Amazon Luna Controller firmware version 305164320
This commit is contained in:
parent
17ed8d8085
commit
863f566941
|
@ -593,6 +593,9 @@ static ControllerMapping_t *SDL_CreateMappingForHIDAPIController(SDL_JoystickGUI
|
||||||
if (SDL_IsJoystickXboxSeriesX(vendor, product)) {
|
if (SDL_IsJoystickXboxSeriesX(vendor, product)) {
|
||||||
/* XBox Series X Controllers have a share button under the guide button */
|
/* XBox Series X Controllers have a share button under the guide button */
|
||||||
SDL_strlcat(mapping_string, "misc1:b15,", sizeof(mapping_string));
|
SDL_strlcat(mapping_string, "misc1:b15,", sizeof(mapping_string));
|
||||||
|
} else if (vendor == BLUETOOTH_VENDOR_AMAZON && product == BLUETOOTH_PRODUCT_LUNA_CONTROLLER) {
|
||||||
|
/* Amazon Luna Controller has a mic button under the guide button */
|
||||||
|
SDL_strlcat(mapping_string, "misc1:b15,", sizeof(mapping_string));
|
||||||
} else if (SDL_IsJoystickXboxOneElite(vendor, product)) {
|
} else if (SDL_IsJoystickXboxOneElite(vendor, product)) {
|
||||||
/* XBox One Elite Controllers have 4 back paddle buttons */
|
/* XBox One Elite Controllers have 4 back paddle buttons */
|
||||||
SDL_strlcat(mapping_string, "paddle1:b15,paddle2:b17,paddle3:b16,paddle4:b18,", sizeof(mapping_string));
|
SDL_strlcat(mapping_string, "paddle1:b15,paddle2:b17,paddle3:b16,paddle4:b18,", sizeof(mapping_string));
|
||||||
|
|
|
@ -234,18 +234,20 @@ HIDAPI_DriverLuna_HandleStatePacket(SDL_Joystick *joystick, SDL_DriverLuna_Conte
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, (data[14] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, (data[14] & 0x80) ? SDL_PRESSED : SDL_RELEASED);
|
||||||
}
|
}
|
||||||
if (ctx->last_state[15] != data[15]) {
|
if (ctx->last_state[15] != data[15]) {
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_LUNA_MIC, (data[15] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
/* The mic button appears to be in byte 16 in firmware version 305164320 */
|
||||||
|
/*SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_LUNA_MIC, (data[15] & 0x02) ? SDL_PRESSED : SDL_RELEASED);*/
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_START, (data[15] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_START, (data[15] & 0x08) ? SDL_PRESSED : SDL_RELEASED);
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_LEFTSTICK, (data[15] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_LEFTSTICK, (data[15] & 0x20) ? SDL_PRESSED : SDL_RELEASED);
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_RIGHTSTICK, (data[15] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_RIGHTSTICK, (data[15] & 0x40) ? SDL_PRESSED : SDL_RELEASED);
|
||||||
}
|
}
|
||||||
if (ctx->last_state[16] != data[16]) {
|
if (ctx->last_state[16] != data[16]) {
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_BACK, (data[16] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_BACK, (data[16] & 0x01) ? SDL_PRESSED : SDL_RELEASED);
|
||||||
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_LUNA_MIC, (data[16] & 0x02) ? SDL_PRESSED : SDL_RELEASED);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define READ_STICK_AXIS(offset) \
|
#define READ_STICK_AXIS(offset) \
|
||||||
(data[offset] == 0x7f ? 0 : \
|
(data[offset] == 0x7f ? 0 : \
|
||||||
(Sint16)HIDAPI_RemapVal((float)((int)(data[offset] - 0x7e)), 0x01 - 0x7f, 0xff - 0x7f, SDL_MIN_SINT16, SDL_MAX_SINT16))
|
(Sint16)HIDAPI_RemapVal((float)data[offset], 0x00, 0xff, SDL_MIN_SINT16, SDL_MAX_SINT16))
|
||||||
{
|
{
|
||||||
Sint16 axis = READ_STICK_AXIS(2);
|
Sint16 axis = READ_STICK_AXIS(2);
|
||||||
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTX, axis);
|
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_LEFTX, axis);
|
||||||
|
|
Loading…
Reference in New Issue