rpcsx/rpcs3/Input/virtual_pad_handler.cpp

43 lines
1 KiB
C++
Raw Permalink Normal View History

2025-03-07 23:21:41 +01:00
#include "virtual_pad_handler.h"
#include "pad_thread.h"
#include "Emu/Io/pad_config.h"
virtual_pad_handler::on_connect_cb virtual_pad_handler::mOnConnect = [](auto...)
{
return false;
};
virtual_pad_handler::virtual_pad_handler()
: PadHandlerBase(pad_handler::virtual_pad)
{
}
std::vector<pad_list_entry> virtual_pad_handler::list_devices()
{
std::vector<pad_list_entry> list_devices;
for (usz i = 1; i <= MAX_GAMEPADS; i++) // Controllers 1-n in GUI
{
list_devices.emplace_back(fmt::format("Virtual Pad #%d", i), false);
}
return list_devices;
}
bool virtual_pad_handler::bindPadToDevice(std::shared_ptr<Pad> pad)
{
if (!pad || pad->m_player_id >= g_cfg_input.player.size())
return false;
const cfg_player* player_config = g_cfg_input.player[pad->m_player_id];
if (!player_config || player_config->device.to_string() != "Virtual")
return false;
if (!mOnConnect(pad))
{
return false;
}
m_bindings.emplace_back(std::move(pad), nullptr, nullptr);
2025-03-10 13:09:48 +01:00
connected_devices++; // ??? FIXME: Why?
2025-03-07 23:21:41 +01:00
return true;
}