input: fix mouse+kb combos

This commit is contained in:
Megamouse 2026-04-13 10:47:18 +02:00
parent bcd9663349
commit 9e3e01d8f6
3 changed files with 41 additions and 38 deletions

View File

@ -201,8 +201,11 @@ basic_mouse_handler::mouse_button basic_mouse_handler::get_mouse_button(const cf
if (it != mouse_list.cend())
{
u32 btn = it->first;
if (btn >= mouse::button) btn -= mouse::button;
return mouse_button{
.code = static_cast<int>(it->first),
.code = static_cast<int>(btn),
.is_key = false
};
}

View File

@ -572,7 +572,7 @@ void keyboard_pad_handler::mousePressEvent(QMouseEvent* event)
return;
}
Key(event->button(), true);
Key(mouse::button + static_cast<u32>(event->button()), true);
event->ignore();
}
@ -583,7 +583,7 @@ void keyboard_pad_handler::mouseReleaseEvent(QMouseEvent* event)
return;
}
Key(event->button(), false, 0);
Key(mouse::button + static_cast<u32>(event->button()), false, 0);
event->ignore();
}
@ -902,13 +902,13 @@ std::string keyboard_pad_handler::GetKeyName(const u32& keyCode)
return QKeySequence(keyCode).toString(QKeySequence::NativeText).toStdString();
}
std::vector<std::set<u32>> keyboard_pad_handler::GetKeyCombos(const cfg::string& cfg_string)
std::vector<std::set<u32>> keyboard_pad_handler::GetKeyCombos(const std::string& cfg_string)
{
std::vector<std::set<u32>> res;
for (const pad::combo& combo : cfg_pad::get_combos(cfg_string.to_string()))
for (const pad::combo& combo : cfg_pad::get_combos(cfg_string))
{
std::set<u32> key_codes;
std::set<u32> key_codes = find_key_codes(mouse_list, combo);
for (const std::string& button : combo.buttons())
{
@ -1062,8 +1062,7 @@ bool keyboard_pad_handler::bindPadToDevice(std::shared_ptr<Pad> pad)
const auto find_combos = [this](const cfg::string& name)
{
std::vector<std::set<u32>> combos = find_key_combos(mouse_list, name);
for (const std::set<u32>& combo : GetKeyCombos(name)) combos.push_back(combo);
const std::vector<std::set<u32>> combos = GetKeyCombos(name.to_string());
if (!combos.empty())
{

View File

@ -9,7 +9,7 @@
#include <vector>
#include <unordered_map>
enum mouse
enum mouse : u32
{
move_left = 0x05555550,
move_right = 0x05555551,
@ -18,40 +18,41 @@ enum mouse
wheel_up = 0x05555554,
wheel_down = 0x05555555,
wheel_left = 0x05555556,
wheel_right = 0x05555557
wheel_right = 0x05555557,
button = 0x80000000
};
// Unique button names for the config files and our pad settings dialog
const std::unordered_map<u32, std::string> mouse_list =
{
{ Qt::NoButton , "" },
{ Qt::LeftButton , "Mouse Left" },
{ Qt::RightButton , "Mouse Right" },
{ Qt::MiddleButton , "Mouse Middle" },
{ Qt::BackButton , "Mouse Back" },
{ Qt::ForwardButton , "Mouse Fwd" },
{ Qt::TaskButton , "Mouse Task" },
{ Qt::ExtraButton4 , "Mouse 4" },
{ Qt::ExtraButton5 , "Mouse 5" },
{ Qt::ExtraButton6 , "Mouse 6" },
{ Qt::ExtraButton7 , "Mouse 7" },
{ Qt::ExtraButton8 , "Mouse 8" },
{ Qt::ExtraButton9 , "Mouse 9" },
{ Qt::ExtraButton10 , "Mouse 10" },
{ Qt::ExtraButton11 , "Mouse 11" },
{ Qt::ExtraButton12 , "Mouse 12" },
{ Qt::ExtraButton13 , "Mouse 13" },
{ Qt::ExtraButton14 , "Mouse 14" },
{ Qt::ExtraButton15 , "Mouse 15" },
{ Qt::ExtraButton16 , "Mouse 16" },
{ Qt::ExtraButton17 , "Mouse 17" },
{ Qt::ExtraButton18 , "Mouse 18" },
{ Qt::ExtraButton19 , "Mouse 19" },
{ Qt::ExtraButton20 , "Mouse 20" },
{ Qt::ExtraButton21 , "Mouse 21" },
{ Qt::ExtraButton22 , "Mouse 22" },
{ Qt::ExtraButton23 , "Mouse 23" },
{ Qt::ExtraButton24 , "Mouse 24" },
{ mouse::button + static_cast<u32>(Qt::LeftButton) , "Mouse Left" },
{ mouse::button + static_cast<u32>(Qt::RightButton) , "Mouse Right" },
{ mouse::button + static_cast<u32>(Qt::MiddleButton) , "Mouse Middle" },
{ mouse::button + static_cast<u32>(Qt::BackButton) , "Mouse Back" },
{ mouse::button + static_cast<u32>(Qt::ForwardButton) , "Mouse Fwd" },
{ mouse::button + static_cast<u32>(Qt::TaskButton) , "Mouse Task" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton4) , "Mouse 4" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton5) , "Mouse 5" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton6) , "Mouse 6" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton7) , "Mouse 7" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton8) , "Mouse 8" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton9) , "Mouse 9" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton10) , "Mouse 10" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton11) , "Mouse 11" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton12) , "Mouse 12" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton13) , "Mouse 13" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton14) , "Mouse 14" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton15) , "Mouse 15" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton16) , "Mouse 16" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton17) , "Mouse 17" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton18) , "Mouse 18" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton19) , "Mouse 19" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton20) , "Mouse 20" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton21) , "Mouse 21" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton22) , "Mouse 22" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton23) , "Mouse 23" },
{ mouse::button + static_cast<u32>(Qt::ExtraButton24) , "Mouse 24" },
{ mouse::move_left , "Mouse MLeft" },
{ mouse::move_right , "Mouse MRight" },
@ -93,7 +94,7 @@ public:
static QStringList GetKeyNames(const QKeyEvent* keyEvent);
static std::string GetKeyName(const QKeyEvent* keyEvent, bool with_modifiers);
static std::string GetKeyName(const u32& keyCode);
static std::vector<std::set<u32>> GetKeyCombos(const cfg::string& cfg_string);
static std::vector<std::set<u32>> GetKeyCombos(const std::string& cfg_string);
static u32 GetKeyCode(const QString& keyName);
static int native_scan_code_from_string(const std::string& key);