mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +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::RSXNeg, "RS X-" },
|
||||||
{ DualSenseKeyCodes::RSXPos, "RS X+" },
|
{ DualSenseKeyCodes::RSXPos, "RS X+" },
|
||||||
{ DualSenseKeyCodes::RSYPos, "RS Y+" },
|
{ 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();
|
init_configs();
|
||||||
@ -252,6 +256,20 @@ void dualsense_pad_handler::check_add_device(hid_device* hidDevice, std::string_
|
|||||||
device->has_calib_data = true;
|
device->has_calib_data = true;
|
||||||
device->path = path;
|
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
|
// Activate
|
||||||
if (send_output_report(device) == -1)
|
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::TouchPad] = ((data & 0x02) != 0) ? 255 : 0;
|
||||||
keyBuffer[DualSenseKeyCodes::Mic] = ((data & 0x04) != 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;
|
return keyBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,11 +13,18 @@ public:
|
|||||||
Enhanced
|
Enhanced
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class DualSenseFeatureSet
|
||||||
|
{
|
||||||
|
Normal,
|
||||||
|
Edge
|
||||||
|
};
|
||||||
|
|
||||||
bool bt_controller{false};
|
bool bt_controller{false};
|
||||||
u8 bt_sequence{0};
|
u8 bt_sequence{0};
|
||||||
bool has_calib_data{false};
|
bool has_calib_data{false};
|
||||||
std::array<CalibData, CalibIndex::COUNT> calib_data{};
|
std::array<CalibData, CalibIndex::COUNT> calib_data{};
|
||||||
DualSenseDataMode data_mode{DualSenseDataMode::Simple};
|
DualSenseDataMode data_mode{DualSenseDataMode::Simple};
|
||||||
|
DualSenseFeatureSet feature_set{DualSenseFeatureSet::Normal};
|
||||||
bool init_lightbar{true};
|
bool init_lightbar{true};
|
||||||
bool update_lightbar{true};
|
bool update_lightbar{true};
|
||||||
bool update_player_leds{true};
|
bool update_player_leds{true};
|
||||||
@ -63,7 +70,12 @@ class dualsense_pad_handler final : public hid_pad_handler<DualSenseDevice>
|
|||||||
RSXNeg,
|
RSXNeg,
|
||||||
RSXPos,
|
RSXPos,
|
||||||
RSYNeg,
|
RSYNeg,
|
||||||
RSYPos
|
RSYPos,
|
||||||
|
|
||||||
|
EdgeFnL,
|
||||||
|
EdgeFnR,
|
||||||
|
EdgeLB,
|
||||||
|
EdgeRB,
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user