[gamepad] Add DualSense mapping functions
This CL adds standard mapping functions for Sony DualSense Wireless Controller on Mac, Windows, Linux, and Chrome OS. (No Android support is included.) The device has advanced haptics features that are not yet supported. BUG=1144906 Change-Id: Id2985d18fe426db93e870fcc55351347cb9de78f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2515099 Reviewed-by: James Hollyer <jameshollyer@chromium.org> Commit-Queue: Matt Reynolds <mattreynolds@chromium.org> Cr-Commit-Position: refs/heads/master@{#824118}
This commit is contained in:

committed by
Commit Bot

parent
25075bd46f
commit
c3c34ea391
@ -139,6 +139,7 @@ constexpr struct GamepadInfo {
|
||||
{0x054c, 0x05c5, kXInputTypeNone},
|
||||
{0x054c, 0x09cc, kXInputTypeNone},
|
||||
{0x054c, 0x0ba0, kXInputTypeNone},
|
||||
{0x054c, 0x0ce6, kXInputTypeNone},
|
||||
// Elecom Co., Ltd
|
||||
{0x056e, 0x2003, kXInputTypeNone},
|
||||
{0x056e, 0x2004, kXInputTypeXbox360},
|
||||
|
@ -88,6 +88,7 @@ enum class GamepadId : uint32_t {
|
||||
kSonyProduct05c4 = 0x054c05c4,
|
||||
kSonyProduct09cc = 0x054c09cc,
|
||||
kSonyProduct0ba0 = 0x054c0ba0,
|
||||
kSonyProduct0ce6 = 0x054c0ce6,
|
||||
kSteelSeriesBtProduct1419 = 0x01111419,
|
||||
kSteelSeriesProduct1412 = 0x10381412,
|
||||
kSteelSeriesProduct1418 = 0x10381418,
|
||||
|
@ -298,6 +298,39 @@ void MapperDualshock4New(const Gamepad& input, Gamepad* mapped) {
|
||||
mapped->axes_length = AXIS_INDEX_COUNT;
|
||||
}
|
||||
|
||||
void MapperDualSense(const Gamepad& input, Gamepad* mapped) {
|
||||
enum DualSenseButtons {
|
||||
DUAL_SENSE_BUTTON_TOUCHPAD = BUTTON_INDEX_COUNT,
|
||||
DUAL_SENSE_BUTTON_COUNT
|
||||
};
|
||||
|
||||
*mapped = input;
|
||||
mapped->buttons[BUTTON_INDEX_PRIMARY] = input.buttons[1];
|
||||
mapped->buttons[BUTTON_INDEX_SECONDARY] = input.buttons[2];
|
||||
mapped->buttons[BUTTON_INDEX_TERTIARY] = input.buttons[0];
|
||||
mapped->buttons[BUTTON_INDEX_QUATERNARY] = input.buttons[3];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_SHOULDER] = input.buttons[4];
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_SHOULDER] = input.buttons[5];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_TRIGGER] = AxisToButton(input.axes[3]);
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_TRIGGER] = AxisToButton(input.axes[4]);
|
||||
mapped->buttons[BUTTON_INDEX_BACK_SELECT] = input.buttons[8];
|
||||
mapped->buttons[BUTTON_INDEX_START] = input.buttons[9];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_THUMBSTICK] = input.buttons[10];
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_THUMBSTICK] = input.buttons[11];
|
||||
mapped->buttons[BUTTON_INDEX_DPAD_UP] = AxisNegativeAsButton(input.axes[7]);
|
||||
mapped->buttons[BUTTON_INDEX_DPAD_DOWN] = AxisPositiveAsButton(input.axes[7]);
|
||||
mapped->buttons[BUTTON_INDEX_DPAD_LEFT] = AxisNegativeAsButton(input.axes[6]);
|
||||
mapped->buttons[BUTTON_INDEX_DPAD_RIGHT] =
|
||||
AxisPositiveAsButton(input.axes[6]);
|
||||
mapped->buttons[BUTTON_INDEX_META] = input.buttons[12];
|
||||
mapped->buttons[DUAL_SENSE_BUTTON_TOUCHPAD] = input.buttons[13];
|
||||
mapped->axes[AXIS_INDEX_RIGHT_STICK_X] = input.axes[2];
|
||||
mapped->axes[AXIS_INDEX_RIGHT_STICK_Y] = input.axes[5];
|
||||
|
||||
mapped->buttons_length = DUAL_SENSE_BUTTON_COUNT;
|
||||
mapped->axes_length = AXIS_INDEX_COUNT;
|
||||
}
|
||||
|
||||
void MapperIBuffalo(const Gamepad& input, Gamepad* mapped) {
|
||||
*mapped = input;
|
||||
mapped->buttons[BUTTON_INDEX_PRIMARY] = input.buttons[1];
|
||||
@ -879,6 +912,8 @@ constexpr struct MappingData {
|
||||
{GamepadId::kSonyProduct09cc, MapperDualshock4},
|
||||
// Dualshock 4 USB receiver
|
||||
{GamepadId::kSonyProduct0ba0, MapperDualshock4},
|
||||
// DualSense
|
||||
{GamepadId::kSonyProduct0ce6, MapperDualSense},
|
||||
// Switch Joy-Con L
|
||||
{GamepadId::kNintendoProduct2006, MapperSwitchJoyCon},
|
||||
// Switch Joy-Con R
|
||||
|
@ -174,6 +174,35 @@ void MapperDualshock4(const Gamepad& input, Gamepad* mapped) {
|
||||
mapped->axes_length = AXIS_INDEX_COUNT;
|
||||
}
|
||||
|
||||
void MapperDualSense(const Gamepad& input, Gamepad* mapped) {
|
||||
enum DualSenseButtons {
|
||||
DUAL_SENSE_BUTTON_TOUCHPAD = BUTTON_INDEX_COUNT,
|
||||
DUAL_SENSE_BUTTON_COUNT
|
||||
};
|
||||
|
||||
*mapped = input;
|
||||
mapped->buttons[BUTTON_INDEX_PRIMARY] = input.buttons[1];
|
||||
mapped->buttons[BUTTON_INDEX_SECONDARY] = input.buttons[2];
|
||||
mapped->buttons[BUTTON_INDEX_TERTIARY] = input.buttons[0];
|
||||
mapped->buttons[BUTTON_INDEX_QUATERNARY] = input.buttons[3];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_SHOULDER] = input.buttons[4];
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_SHOULDER] = input.buttons[5];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_TRIGGER] = AxisToButton(input.axes[3]);
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_TRIGGER] = AxisToButton(input.axes[4]);
|
||||
mapped->buttons[BUTTON_INDEX_BACK_SELECT] = input.buttons[8];
|
||||
mapped->buttons[BUTTON_INDEX_START] = input.buttons[9];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_THUMBSTICK] = input.buttons[10];
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_THUMBSTICK] = input.buttons[11];
|
||||
mapped->buttons[BUTTON_INDEX_META] = input.buttons[12];
|
||||
mapped->buttons[DUAL_SENSE_BUTTON_TOUCHPAD] = input.buttons[13];
|
||||
mapped->axes[AXIS_INDEX_RIGHT_STICK_X] = input.axes[2];
|
||||
mapped->axes[AXIS_INDEX_RIGHT_STICK_Y] = input.axes[5];
|
||||
DpadFromAxis(mapped, input.axes[9]);
|
||||
|
||||
mapped->buttons_length = DUAL_SENSE_BUTTON_COUNT;
|
||||
mapped->axes_length = AXIS_INDEX_COUNT;
|
||||
}
|
||||
|
||||
void MapperIBuffalo(const Gamepad& input, Gamepad* mapped) {
|
||||
*mapped = input;
|
||||
mapped->buttons[BUTTON_INDEX_PRIMARY] = input.buttons[1];
|
||||
@ -689,6 +718,8 @@ constexpr struct MappingData {
|
||||
{GamepadId::kSonyProduct09cc, MapperDualshock4},
|
||||
// Dualshock 4 USB receiver
|
||||
{GamepadId::kSonyProduct0ba0, MapperDualshock4},
|
||||
// DualSense
|
||||
{GamepadId::kSonyProduct0ce6, MapperDualSense},
|
||||
// Switch Joy-Con L
|
||||
{GamepadId::kNintendoProduct2006, MapperSwitchJoyCon},
|
||||
// Switch Joy-Con R
|
||||
|
@ -98,6 +98,35 @@ void MapperDualshock4(const Gamepad& input, Gamepad* mapped) {
|
||||
mapped->axes_length = AXIS_INDEX_COUNT;
|
||||
}
|
||||
|
||||
void MapperDualSense(const Gamepad& input, Gamepad* mapped) {
|
||||
enum DualSenseButtons {
|
||||
DUAL_SENSE_BUTTON_TOUCHPAD = BUTTON_INDEX_COUNT,
|
||||
DUAL_SENSE_BUTTON_COUNT
|
||||
};
|
||||
|
||||
*mapped = input;
|
||||
mapped->buttons[BUTTON_INDEX_PRIMARY] = input.buttons[1];
|
||||
mapped->buttons[BUTTON_INDEX_SECONDARY] = input.buttons[2];
|
||||
mapped->buttons[BUTTON_INDEX_TERTIARY] = input.buttons[0];
|
||||
mapped->buttons[BUTTON_INDEX_QUATERNARY] = input.buttons[3];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_SHOULDER] = input.buttons[4];
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_SHOULDER] = input.buttons[5];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_TRIGGER] = AxisToButton(input.axes[3]);
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_TRIGGER] = AxisToButton(input.axes[4]);
|
||||
mapped->buttons[BUTTON_INDEX_BACK_SELECT] = input.buttons[8];
|
||||
mapped->buttons[BUTTON_INDEX_START] = input.buttons[9];
|
||||
mapped->buttons[BUTTON_INDEX_LEFT_THUMBSTICK] = input.buttons[10];
|
||||
mapped->buttons[BUTTON_INDEX_RIGHT_THUMBSTICK] = input.buttons[11];
|
||||
mapped->buttons[BUTTON_INDEX_META] = input.buttons[12];
|
||||
mapped->buttons[DUAL_SENSE_BUTTON_TOUCHPAD] = input.buttons[13];
|
||||
mapped->axes[AXIS_INDEX_RIGHT_STICK_X] = input.axes[2];
|
||||
mapped->axes[AXIS_INDEX_RIGHT_STICK_Y] = input.axes[5];
|
||||
DpadFromAxis(mapped, input.axes[9]);
|
||||
|
||||
mapped->buttons_length = DUAL_SENSE_BUTTON_COUNT;
|
||||
mapped->axes_length = AXIS_INDEX_COUNT;
|
||||
}
|
||||
|
||||
void MapperIBuffalo(const Gamepad& input, Gamepad* mapped) {
|
||||
*mapped = input;
|
||||
mapped->buttons[BUTTON_INDEX_PRIMARY] = input.buttons[1];
|
||||
@ -494,6 +523,8 @@ constexpr struct MappingData {
|
||||
{GamepadId::kSonyProduct09cc, MapperDualshock4},
|
||||
// Dualshock 4 USB receiver
|
||||
{GamepadId::kSonyProduct0ba0, MapperDualshock4},
|
||||
// DualSense
|
||||
{GamepadId::kSonyProduct0ce6, MapperDualSense},
|
||||
// Switch Joy-Con L
|
||||
{GamepadId::kNintendoProduct2006, MapperSwitchJoyCon},
|
||||
// Switch Joy-Con R
|
||||
|
Reference in New Issue
Block a user