Input: Map PS button to start+select by default

This commit is contained in:
Megamouse 2026-03-18 09:09:18 +01:00
parent 704d8764af
commit 5578edf9e4
10 changed files with 51 additions and 29 deletions

View file

@ -83,6 +83,27 @@ std::string cfg_pad::get_button_string(std::vector<pad::combo>& combos)
return fmt::merge(combo_strings, ",");
}
std::string cfg_pad::make_button_string(const std::unordered_map<u32, std::string>& button_list, const std::vector<std::set<u32>>& button_combos)
{
std::vector<pad::combo> combos;
for (const std::set<u32>& button_combo : button_combos)
{
if (button_combo.empty()) continue;
pad::combo combo {};
for (u32 button : button_combo)
{
combo.add_button(::at32(button_list, button));
}
combos.push_back(std::move(combo));
}
return get_button_string(combos);
}
u8 cfg_pad::get_motor_speed(VibrateMotor& motor, f32 multiplier) const
{
// If motor is small, use either 0 or 255.

View file

@ -59,6 +59,7 @@ struct cfg_pad final : cfg::node
static std::vector<pad::combo> get_combos(std::string_view button_string);
static std::string get_button_string(std::vector<pad::combo>& combos);
static std::string make_button_string(const std::unordered_map<u32, std::string>& button_list, const std::vector<std::set<u32>>& button_combos);
u8 get_motor_speed(VibrateMotor& motor, f32 multiplier) const;
u8 get_large_motor_speed(std::array<VibrateMotor, 2>& motors) const;

View file

@ -170,31 +170,31 @@ void ds3_pad_handler::init_config(cfg_pad* cfg)
if (!cfg) return;
// Set default button mapping
cfg->ls_left.def = ::at32(button_list, DS3KeyCodes::LSXNeg);
cfg->ls_down.def = ::at32(button_list, DS3KeyCodes::LSYNeg);
cfg->ls_left.def = ::at32(button_list, DS3KeyCodes::LSXNeg);
cfg->ls_down.def = ::at32(button_list, DS3KeyCodes::LSYNeg);
cfg->ls_right.def = ::at32(button_list, DS3KeyCodes::LSXPos);
cfg->ls_up.def = ::at32(button_list, DS3KeyCodes::LSYPos);
cfg->rs_left.def = ::at32(button_list, DS3KeyCodes::RSXNeg);
cfg->rs_down.def = ::at32(button_list, DS3KeyCodes::RSYNeg);
cfg->ls_up.def = ::at32(button_list, DS3KeyCodes::LSYPos);
cfg->rs_left.def = ::at32(button_list, DS3KeyCodes::RSXNeg);
cfg->rs_down.def = ::at32(button_list, DS3KeyCodes::RSYNeg);
cfg->rs_right.def = ::at32(button_list, DS3KeyCodes::RSXPos);
cfg->rs_up.def = ::at32(button_list, DS3KeyCodes::RSYPos);
cfg->start.def = ::at32(button_list, DS3KeyCodes::Start);
cfg->select.def = ::at32(button_list, DS3KeyCodes::Select);
cfg->ps.def = ::at32(button_list, DS3KeyCodes::PSButton);
cfg->square.def = ::at32(button_list, DS3KeyCodes::Square);
cfg->cross.def = ::at32(button_list, DS3KeyCodes::Cross);
cfg->circle.def = ::at32(button_list, DS3KeyCodes::Circle);
cfg->rs_up.def = ::at32(button_list, DS3KeyCodes::RSYPos);
cfg->start.def = ::at32(button_list, DS3KeyCodes::Start);
cfg->select.def = ::at32(button_list, DS3KeyCodes::Select);
cfg->ps.def = cfg_pad::make_button_string(button_list, {{DS3KeyCodes::PSButton}, {DS3KeyCodes::Start, DS3KeyCodes::Select}});
cfg->square.def = ::at32(button_list, DS3KeyCodes::Square);
cfg->cross.def = ::at32(button_list, DS3KeyCodes::Cross);
cfg->circle.def = ::at32(button_list, DS3KeyCodes::Circle);
cfg->triangle.def = ::at32(button_list, DS3KeyCodes::Triangle);
cfg->left.def = ::at32(button_list, DS3KeyCodes::Left);
cfg->down.def = ::at32(button_list, DS3KeyCodes::Down);
cfg->right.def = ::at32(button_list, DS3KeyCodes::Right);
cfg->up.def = ::at32(button_list, DS3KeyCodes::Up);
cfg->r1.def = ::at32(button_list, DS3KeyCodes::R1);
cfg->r2.def = ::at32(button_list, DS3KeyCodes::R2);
cfg->r3.def = ::at32(button_list, DS3KeyCodes::R3);
cfg->l1.def = ::at32(button_list, DS3KeyCodes::L1);
cfg->l2.def = ::at32(button_list, DS3KeyCodes::L2);
cfg->l3.def = ::at32(button_list, DS3KeyCodes::L3);
cfg->left.def = ::at32(button_list, DS3KeyCodes::Left);
cfg->down.def = ::at32(button_list, DS3KeyCodes::Down);
cfg->right.def = ::at32(button_list, DS3KeyCodes::Right);
cfg->up.def = ::at32(button_list, DS3KeyCodes::Up);
cfg->r1.def = ::at32(button_list, DS3KeyCodes::R1);
cfg->r2.def = ::at32(button_list, DS3KeyCodes::R2);
cfg->r3.def = ::at32(button_list, DS3KeyCodes::R3);
cfg->l1.def = ::at32(button_list, DS3KeyCodes::L1);
cfg->l2.def = ::at32(button_list, DS3KeyCodes::L2);
cfg->l3.def = ::at32(button_list, DS3KeyCodes::L3);
cfg->pressure_intensity_button.def = ::at32(button_list, DS3KeyCodes::None);
cfg->analog_limiter_button.def = ::at32(button_list, DS3KeyCodes::None);

View file

@ -162,7 +162,7 @@ void ds4_pad_handler::init_config(cfg_pad* cfg)
cfg->rs_up.def = ::at32(button_list, DS4KeyCodes::RSYPos);
cfg->start.def = ::at32(button_list, DS4KeyCodes::Options);
cfg->select.def = ::at32(button_list, DS4KeyCodes::Share);
cfg->ps.def = ::at32(button_list, DS4KeyCodes::PSButton);
cfg->ps.def = cfg_pad::make_button_string(button_list, {{DS4KeyCodes::PSButton}, {DS4KeyCodes::Options, DS4KeyCodes::Share}});
cfg->square.def = ::at32(button_list, DS4KeyCodes::Square);
cfg->cross.def = ::at32(button_list, DS4KeyCodes::Cross);
cfg->circle.def = ::at32(button_list, DS4KeyCodes::Circle);

View file

@ -235,7 +235,7 @@ void dualsense_pad_handler::init_config(cfg_pad* cfg)
cfg->rs_up.def = ::at32(button_list, DualSenseKeyCodes::RSYPos);
cfg->start.def = ::at32(button_list, DualSenseKeyCodes::Options);
cfg->select.def = ::at32(button_list, DualSenseKeyCodes::Share);
cfg->ps.def = ::at32(button_list, DualSenseKeyCodes::PSButton);
cfg->ps.def = cfg_pad::make_button_string(button_list, {{DualSenseKeyCodes::PSButton}, {DualSenseKeyCodes::Options, DualSenseKeyCodes::Share}});
cfg->square.def = ::at32(button_list, DualSenseKeyCodes::Square);
cfg->cross.def = ::at32(button_list, DualSenseKeyCodes::Cross);
cfg->circle.def = ::at32(button_list, DualSenseKeyCodes::Circle);

View file

@ -88,7 +88,7 @@ void evdev_joystick_handler::init_config(cfg_pad* cfg)
cfg->rs_up.def = ::at32(rev_axis_list, ABS_RY);
cfg->start.def = ::at32(button_list, BTN_START);
cfg->select.def = ::at32(button_list, BTN_SELECT);
cfg->ps.def = ::at32(button_list, BTN_MODE);
cfg->ps.def = cfg_pad::make_button_string(button_list, {{BTN_MODE}, {BTN_START, BTN_SELECT}});
cfg->square.def = ::at32(button_list, BTN_X);
cfg->cross.def = ::at32(button_list, BTN_A);
cfg->circle.def = ::at32(button_list, BTN_B);

View file

@ -152,7 +152,7 @@ void ps_move_handler::init_config(cfg_pad* cfg)
cfg->rs_up.def = ::at32(button_list, ps_move_key_codes::none);
cfg->start.def = ::at32(button_list, ps_move_key_codes::start);
cfg->select.def = ::at32(button_list, ps_move_key_codes::select);
cfg->ps.def = ::at32(button_list, ps_move_key_codes::ps);
cfg->ps.def = cfg_pad::make_button_string(button_list, {{ps_move_key_codes::ps}, {ps_move_key_codes::start, ps_move_key_codes::select}});
cfg->square.def = ::at32(button_list, ps_move_key_codes::square);
cfg->cross.def = ::at32(button_list, ps_move_key_codes::cross);
cfg->circle.def = ::at32(button_list, ps_move_key_codes::circle);

View file

@ -121,7 +121,7 @@ void sdl_pad_handler::init_config(cfg_pad* cfg)
cfg->rs_up.def = ::at32(button_list, SDLKeyCodes::RSYPos);
cfg->start.def = ::at32(button_list, SDLKeyCodes::Start);
cfg->select.def = ::at32(button_list, SDLKeyCodes::Back);
cfg->ps.def = ::at32(button_list, SDLKeyCodes::Guide);
cfg->ps.def = cfg_pad::make_button_string(button_list, {{SDLKeyCodes::Guide}, {SDLKeyCodes::Start, SDLKeyCodes::Back}});
cfg->square.def = ::at32(button_list, SDLKeyCodes::West);
cfg->cross.def = ::at32(button_list, SDLKeyCodes::South);
cfg->circle.def = ::at32(button_list, SDLKeyCodes::East);

View file

@ -112,7 +112,7 @@ void skateboard_pad_handler::init_config(cfg_pad* cfg)
cfg->rs_up.def = ::at32(button_list, skateboard_key_codes::none);
cfg->start.def = ::at32(button_list, skateboard_key_codes::start);
cfg->select.def = ::at32(button_list, skateboard_key_codes::select);
cfg->ps.def = ::at32(button_list, skateboard_key_codes::ps);
cfg->ps.def = cfg_pad::make_button_string(button_list, {{skateboard_key_codes::ps}, {skateboard_key_codes::start, skateboard_key_codes::select}});
cfg->square.def = ::at32(button_list, skateboard_key_codes::square);
cfg->cross.def = ::at32(button_list, skateboard_key_codes::cross);
cfg->circle.def = ::at32(button_list, skateboard_key_codes::circle);

View file

@ -101,7 +101,7 @@ void xinput_pad_handler::init_config(cfg_pad* cfg)
cfg->rs_up.def = ::at32(button_list, XInputKeyCodes::RSYPos);
cfg->start.def = ::at32(button_list, XInputKeyCodes::Start);
cfg->select.def = ::at32(button_list, XInputKeyCodes::Back);
cfg->ps.def = ::at32(button_list, XInputKeyCodes::Guide);
cfg->ps.def = cfg_pad::make_button_string(button_list, {{XInputKeyCodes::Guide}, {XInputKeyCodes::Start, XInputKeyCodes::Back}});
cfg->square.def = ::at32(button_list, XInputKeyCodes::X);
cfg->cross.def = ::at32(button_list, XInputKeyCodes::A);
cfg->circle.def = ::at32(button_list, XInputKeyCodes::B);