mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-14 01:27:00 +00:00
input: add new buttons for Dualsense Edge
This commit is contained in:
parent
1bd9549e45
commit
84d2ad70e6
@ -129,7 +129,11 @@ dualsense_pad_handler::dualsense_pad_handler()
|
||||
{ DualSenseKeyCodes::RSXNeg, "RS X-" },
|
||||
{ DualSenseKeyCodes::RSXPos, "RS X+" },
|
||||
{ DualSenseKeyCodes::RSYPos, "RS Y+" },
|
||||
{ DualSenseKeyCodes::RSYNeg, "RS Y-" }
|
||||
{ DualSenseKeyCodes::RSYNeg, "RS Y-" },
|
||||
{ DualSenseKeyCodes::EdgeFnL, "FN L" },
|
||||
{ DualSenseKeyCodes::EdgeFnR, "FN R" },
|
||||
{ DualSenseKeyCodes::EdgeLB, "LB" },
|
||||
{ DualSenseKeyCodes::EdgeRB, "RB" },
|
||||
};
|
||||
|
||||
init_configs();
|
||||
@ -252,6 +256,20 @@ void dualsense_pad_handler::check_add_device(hid_device* hidDevice, std::string_
|
||||
device->has_calib_data = true;
|
||||
device->path = path;
|
||||
|
||||
// Get feature set
|
||||
if (const hid_device_info* info = hid_get_device_info(device->hidDevice))
|
||||
{
|
||||
if (info->product_id == SONY_DUALSENSE_ID_1.m_pid)
|
||||
{
|
||||
device->feature_set = DualSenseDevice::DualSenseFeatureSet::Edge;
|
||||
dualsense_log.notice("check_add_device: device is DualSense Edge: vid=0x%x, pid=0x%x, path='%s'", info->vendor_id, info->product_id, path);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dualsense_log.warning("check_add_device: hid_get_device_info failed for determining feature set! Reason: %s", hid_error(hidDevice));
|
||||
}
|
||||
|
||||
// Activate
|
||||
if (send_output_report(device) == -1)
|
||||
{
|
||||
@ -789,6 +807,14 @@ std::unordered_map<u64, u16> dualsense_pad_handler::get_button_values(const std:
|
||||
keyBuffer[DualSenseKeyCodes::TouchPad] = ((data & 0x02) != 0) ? 255 : 0;
|
||||
keyBuffer[DualSenseKeyCodes::Mic] = ((data & 0x04) != 0) ? 255 : 0;
|
||||
|
||||
if (dualsense_dev->feature_set == DualSenseDevice::DualSenseFeatureSet::Edge)
|
||||
{
|
||||
keyBuffer[DualSenseKeyCodes::EdgeFnL] = ((data & 0x10) != 0) ? 255 : 0;
|
||||
keyBuffer[DualSenseKeyCodes::EdgeFnR] = ((data & 0x20) != 0) ? 255 : 0;
|
||||
keyBuffer[DualSenseKeyCodes::EdgeLB] = ((data & 0x40) != 0) ? 255 : 0;
|
||||
keyBuffer[DualSenseKeyCodes::EdgeRB] = ((data & 0x80) != 0) ? 255 : 0;
|
||||
}
|
||||
|
||||
return keyBuffer;
|
||||
}
|
||||
|
||||
|
@ -13,11 +13,18 @@ public:
|
||||
Enhanced
|
||||
};
|
||||
|
||||
enum class DualSenseFeatureSet
|
||||
{
|
||||
Normal,
|
||||
Edge
|
||||
};
|
||||
|
||||
bool bt_controller{false};
|
||||
u8 bt_sequence{0};
|
||||
bool has_calib_data{false};
|
||||
std::array<CalibData, CalibIndex::COUNT> calib_data{};
|
||||
DualSenseDataMode data_mode{DualSenseDataMode::Simple};
|
||||
DualSenseFeatureSet feature_set{DualSenseFeatureSet::Normal};
|
||||
bool init_lightbar{true};
|
||||
bool update_lightbar{true};
|
||||
bool update_player_leds{true};
|
||||
@ -63,7 +70,12 @@ class dualsense_pad_handler final : public hid_pad_handler<DualSenseDevice>
|
||||
RSXNeg,
|
||||
RSXPos,
|
||||
RSYNeg,
|
||||
RSYPos
|
||||
RSYPos,
|
||||
|
||||
EdgeFnL,
|
||||
EdgeFnR,
|
||||
EdgeLB,
|
||||
EdgeRB,
|
||||
};
|
||||
|
||||
public:
|
||||
|
Loading…
x
Reference in New Issue
Block a user