mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-22 02:32:36 +01:00
input: add SDL_GameControllerDB
This commit is contained in:
parent
d105b0bd9f
commit
452a4654da
@ -7,8 +7,11 @@ ARTIFACT_DIR="$BUILD_ARTIFACTSTAGINGDIRECTORY"
|
|||||||
rm -f ./bin/rpcs3.exp ./bin/rpcs3.lib ./bin/rpcs3.pdb ./bin/vc_redist.x64.exe
|
rm -f ./bin/rpcs3.exp ./bin/rpcs3.lib ./bin/rpcs3.pdb ./bin/vc_redist.x64.exe
|
||||||
rm -rf ./bin/git
|
rm -rf ./bin/git
|
||||||
|
|
||||||
# Prepare compatibility database for packaging, as well as
|
# Prepare compatibility and SDL database for packaging, as well as
|
||||||
# certificate for ssl (auto-updater)
|
# certificate for ssl (auto-updater)
|
||||||
|
mkdir ./bin/config
|
||||||
|
mkdir ./bin/config/input_configs
|
||||||
|
curl -fsSL 'https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt' 1> ./bin/config/input_configs/gamecontrollerdb.txt
|
||||||
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
|
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
|
||||||
curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' 1> ./bin/cacert.pem
|
curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' 1> ./bin/cacert.pem
|
||||||
|
|
||||||
|
1
.gitmodules
vendored
1
.gitmodules
vendored
@ -87,3 +87,4 @@
|
|||||||
[submodule "3rdparty/rtmidi/rtmidi"]
|
[submodule "3rdparty/rtmidi/rtmidi"]
|
||||||
path = 3rdparty/rtmidi/rtmidi
|
path = 3rdparty/rtmidi/rtmidi
|
||||||
url = ../../thestk/rtmidi
|
url = ../../thestk/rtmidi
|
||||||
|
ignore = dirty
|
||||||
|
@ -278,6 +278,7 @@ struct cfg_root : cfg::node
|
|||||||
cfg::_bool show_move_cursor{this, "Show move cursor", false, true};
|
cfg::_bool show_move_cursor{this, "Show move cursor", false, true};
|
||||||
cfg::_bool lock_overlay_input_to_player_one{this, "Lock overlay input to player one", false, true};
|
cfg::_bool lock_overlay_input_to_player_one{this, "Lock overlay input to player one", false, true};
|
||||||
cfg::string midi_devices{ this, "Emulated Midi devices", "ßßß@@@ßßß@@@ßßß@@@" };
|
cfg::string midi_devices{ this, "Emulated Midi devices", "ßßß@@@ßßß@@@ßßß@@@" };
|
||||||
|
cfg::_bool load_sdl_mappings{ this, "Load SDL GameController Mappings", true };
|
||||||
} io{ this };
|
} io{ this };
|
||||||
|
|
||||||
struct node_sys : cfg::node
|
struct node_sys : cfg::node
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "sdl_pad_handler.h"
|
#include "sdl_pad_handler.h"
|
||||||
|
#include "Emu/system_utils.hpp"
|
||||||
|
#include "Emu/system_config.h"
|
||||||
|
|
||||||
LOG_CHANNEL(sdl_log, "SDL");
|
LOG_CHANNEL(sdl_log, "SDL");
|
||||||
|
|
||||||
@ -217,6 +219,24 @@ bool sdl_pad_handler::Init()
|
|||||||
}
|
}
|
||||||
}, nullptr);
|
}, nullptr);
|
||||||
|
|
||||||
|
if (g_cfg.io.load_sdl_mappings)
|
||||||
|
{
|
||||||
|
const std::string db_path = rpcs3::utils::get_input_config_root() + "gamecontrollerdb.txt";
|
||||||
|
sdl_log.notice("Adding mappings from file '%s'", db_path);
|
||||||
|
|
||||||
|
if (fs::is_file(db_path))
|
||||||
|
{
|
||||||
|
if (SDL_GameControllerAddMappingsFromFile(db_path.c_str()) < 0)
|
||||||
|
{
|
||||||
|
sdl_log.error("Could not add mappings from file '%s'! SDL Error: %s", db_path, SDL_GetError());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sdl_log.error("Could not add mappings from file '%s'! File does not exist!", db_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_is_init = true;
|
m_is_init = true;
|
||||||
enumerate_devices();
|
enumerate_devices();
|
||||||
|
|
||||||
|
@ -157,6 +157,7 @@ enum class emu_settings_type
|
|||||||
Turntable,
|
Turntable,
|
||||||
GHLtar,
|
GHLtar,
|
||||||
MidiDevices,
|
MidiDevices,
|
||||||
|
SDLMappings,
|
||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
ExitRPCS3OnFinish,
|
ExitRPCS3OnFinish,
|
||||||
@ -341,6 +342,7 @@ inline static const QMap<emu_settings_type, cfg_location> settings_location =
|
|||||||
{ emu_settings_type::Turntable, { "Input/Output", "Turntable emulated controller" }},
|
{ emu_settings_type::Turntable, { "Input/Output", "Turntable emulated controller" }},
|
||||||
{ emu_settings_type::GHLtar, { "Input/Output", "GHLtar emulated controller" }},
|
{ emu_settings_type::GHLtar, { "Input/Output", "GHLtar emulated controller" }},
|
||||||
{ emu_settings_type::MidiDevices, { "Input/Output", "Emulated Midi devices" }},
|
{ emu_settings_type::MidiDevices, { "Input/Output", "Emulated Midi devices" }},
|
||||||
|
{ emu_settings_type::SDLMappings, { "Input/Output", "Load SDL GameController Mappings" }},
|
||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
{ emu_settings_type::ExitRPCS3OnFinish, { "Miscellaneous", "Exit RPCS3 when process finishes" }},
|
{ emu_settings_type::ExitRPCS3OnFinish, { "Miscellaneous", "Exit RPCS3 when process finishes" }},
|
||||||
|
@ -1226,6 +1226,13 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
|
|||||||
m_emu_settings->EnhanceCheckBox(ui->lockOverlayInputToPlayerOne, emu_settings_type::LockOvlIptToP1);
|
m_emu_settings->EnhanceCheckBox(ui->lockOverlayInputToPlayerOne, emu_settings_type::LockOvlIptToP1);
|
||||||
SubscribeTooltip(ui->lockOverlayInputToPlayerOne, tooltips.settings.lock_overlay_input_to_player_one);
|
SubscribeTooltip(ui->lockOverlayInputToPlayerOne, tooltips.settings.lock_overlay_input_to_player_one);
|
||||||
|
|
||||||
|
#if HAVE_SDL2
|
||||||
|
m_emu_settings->EnhanceCheckBox(ui->loadSdlMappings, emu_settings_type::SDLMappings);
|
||||||
|
SubscribeTooltip(ui->loadSdlMappings, tooltips.settings.sdl_mappings);
|
||||||
|
#else
|
||||||
|
ui->loadSdlMappings->setVisible(false);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Midi
|
// Midi
|
||||||
const QString midi_none = m_emu_settings->m_midi_creator.get_none();
|
const QString midi_none = m_emu_settings->m_midi_creator.get_none();
|
||||||
const midi_device def_midi_device{ .type = midi_device_type::keyboard, .name = midi_none.toStdString() };
|
const midi_device def_midi_device{ .type = midi_device_type::keyboard, .name = midi_none.toStdString() };
|
||||||
|
@ -1810,6 +1810,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="loadSdlMappings">
|
||||||
|
<property name="text">
|
||||||
|
<string>Use SDL GameController Database</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacerIoAdditionalSettings">
|
<spacer name="verticalSpacerIoAdditionalSettings">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
@ -227,6 +227,7 @@ public:
|
|||||||
const QString background_input = tr("Allows pad and keyboard input while the game window is unfocused.");
|
const QString background_input = tr("Allows pad and keyboard input while the game window is unfocused.");
|
||||||
const QString show_move_cursor = tr("Shows the raw position of the PS Move input.\nThis can be very helpful during calibration screens.");
|
const QString show_move_cursor = tr("Shows the raw position of the PS Move input.\nThis can be very helpful during calibration screens.");
|
||||||
const QString midi_devices = tr("Select up to 3 emulated MIDI devices and their types.");
|
const QString midi_devices = tr("Select up to 3 emulated MIDI devices and their types.");
|
||||||
|
const QString sdl_mappings = tr("Loads the SDL GameController database for improved gamepad compatibility. Only used in the SDL pad handler.");
|
||||||
|
|
||||||
const QString lock_overlay_input_to_player_one = tr("Locks the native overlay input to the first player.");
|
const QString lock_overlay_input_to_player_one = tr("Locks the native overlay input to the first player.");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user