|
@@ -38,9 +38,6 @@ enum QuirkBits : int {
|
|
|
|
|
|
|
|
// Axes on the right stick are swapped, using x for y and vice versa.
|
|
// Axes on the right stick are swapped, using x for y and vice versa.
|
|
|
QB_right_axes_swapped = 64,
|
|
QB_right_axes_swapped = 64,
|
|
|
-
|
|
|
|
|
- // Using an RC (drone) controller as a gamepad instead of a flight stick
|
|
|
|
|
- QB_rc_controller = 128,
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// Some nonstandard gamepads have different button mappings.
|
|
// Some nonstandard gamepads have different button mappings.
|
|
@@ -89,7 +86,7 @@ static const struct DeviceMapping {
|
|
|
{"face_y", "face_b", "face_a", "face_x", "lshoulder", "rshoulder", "ltrigger", "rtrigger", "back", "start", "lstick", "rstick"}
|
|
{"face_y", "face_b", "face_a", "face_x", "lshoulder", "rshoulder", "ltrigger", "rtrigger", "back", "start", "lstick", "rstick"}
|
|
|
},
|
|
},
|
|
|
// FrSky Simulator
|
|
// FrSky Simulator
|
|
|
- {0x0483, 0x5720, InputDevice::DeviceClass::gamepad, QB_rc_controller,
|
|
|
|
|
|
|
+ {0x0483, 0x5720, InputDevice::DeviceClass::flight_stick, 0,
|
|
|
{0}
|
|
{0}
|
|
|
},
|
|
},
|
|
|
{0},
|
|
{0},
|
|
@@ -441,11 +438,7 @@ on_arrival(HANDLE handle, const RID_DEVICE_INFO &info, std::string name) {
|
|
|
switch (usage) {
|
|
switch (usage) {
|
|
|
case HID_USAGE_GENERIC_X:
|
|
case HID_USAGE_GENERIC_X:
|
|
|
if (_device_class == DeviceClass::gamepad) {
|
|
if (_device_class == DeviceClass::gamepad) {
|
|
|
- if (quirks & QB_rc_controller) {
|
|
|
|
|
- axis = Axis::right_x;
|
|
|
|
|
- } else {
|
|
|
|
|
- axis = Axis::left_x;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ axis = Axis::left_x;
|
|
|
} else if (_device_class == DeviceClass::flight_stick) {
|
|
} else if (_device_class == DeviceClass::flight_stick) {
|
|
|
axis = Axis::roll;
|
|
axis = Axis::roll;
|
|
|
} else {
|
|
} else {
|
|
@@ -454,12 +447,8 @@ on_arrival(HANDLE handle, const RID_DEVICE_INFO &info, std::string name) {
|
|
|
break;
|
|
break;
|
|
|
case HID_USAGE_GENERIC_Y:
|
|
case HID_USAGE_GENERIC_Y:
|
|
|
if (_device_class == DeviceClass::gamepad) {
|
|
if (_device_class == DeviceClass::gamepad) {
|
|
|
- if (quirks & QB_rc_controller) {
|
|
|
|
|
- axis = Axis::right_y;
|
|
|
|
|
- } else {
|
|
|
|
|
- axis = Axis::left_y;
|
|
|
|
|
- swap(cap.LogicalMin, cap.LogicalMax);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ axis = Axis::left_y;
|
|
|
|
|
+ swap(cap.LogicalMin, cap.LogicalMax);
|
|
|
} else if (_device_class == DeviceClass::flight_stick) {
|
|
} else if (_device_class == DeviceClass::flight_stick) {
|
|
|
axis = Axis::pitch;
|
|
axis = Axis::pitch;
|
|
|
} else {
|
|
} else {
|
|
@@ -476,8 +465,6 @@ on_arrival(HANDLE handle, const RID_DEVICE_INFO &info, std::string name) {
|
|
|
} else {
|
|
} else {
|
|
|
axis = InputDevice::Axis::right_x;
|
|
axis = InputDevice::Axis::right_x;
|
|
|
}
|
|
}
|
|
|
- } else if (quirks & QB_rc_controller) {
|
|
|
|
|
- axis = InputDevice::Axis::left_y;
|
|
|
|
|
} else if ((quirks & QB_no_analog_triggers) == 0) {
|
|
} else if ((quirks & QB_no_analog_triggers) == 0) {
|
|
|
axis = Axis::left_trigger;
|
|
axis = Axis::left_trigger;
|
|
|
}
|
|
}
|
|
@@ -500,8 +487,6 @@ on_arrival(HANDLE handle, const RID_DEVICE_INFO &info, std::string name) {
|
|
|
if ((quirks & QB_no_analog_triggers) == 0) {
|
|
if ((quirks & QB_no_analog_triggers) == 0) {
|
|
|
axis = Axis::left_trigger;
|
|
axis = Axis::left_trigger;
|
|
|
}
|
|
}
|
|
|
- } else if (quirks & QB_rc_controller) {
|
|
|
|
|
- axis = Axis::left_x;
|
|
|
|
|
} else {
|
|
} else {
|
|
|
axis = Axis::right_x;
|
|
axis = Axis::right_x;
|
|
|
}
|
|
}
|