mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 19:45:20 +00:00
cellGem: Only allow each button to be used for one action unless it's the combo button.
This commit is contained in:
parent
60b90075ac
commit
03a612487d
1 changed files with 18 additions and 13 deletions
|
@ -914,23 +914,16 @@ static bool mouse_input_to_pad(const u32 mouse_no, be_t<u16>& digital_buttons, b
|
|||
return false;
|
||||
}
|
||||
|
||||
std::set<MouseButtonCodes> pressed_buttons;
|
||||
const Mouse& mouse_data = ::at32(handler.GetMice(), mouse_no);
|
||||
const auto is_pressed = [&mouse_data](MouseButtonCodes button) -> bool { return !!(mouse_data.buttons & button); };
|
||||
const auto is_pressed = [&mouse_data, &pressed_buttons](MouseButtonCodes button) -> bool
|
||||
{
|
||||
// Only allow each button to be used for one action unless it's the combo button.
|
||||
return (mouse_data.buttons & button) && (button == (CELL_MOUSE_BUTTON_3 + 0u/*fix warning*/) || pressed_buttons.insert(button).second);
|
||||
};
|
||||
|
||||
digital_buttons = 0;
|
||||
|
||||
if (is_pressed(CELL_MOUSE_BUTTON_1))
|
||||
digital_buttons |= CELL_GEM_CTRL_T;
|
||||
|
||||
if (is_pressed(CELL_MOUSE_BUTTON_2))
|
||||
digital_buttons |= CELL_GEM_CTRL_MOVE;
|
||||
|
||||
if (is_pressed(CELL_MOUSE_BUTTON_4))
|
||||
digital_buttons |= CELL_GEM_CTRL_CIRCLE;
|
||||
|
||||
if (is_pressed(CELL_MOUSE_BUTTON_5))
|
||||
digital_buttons |= CELL_GEM_CTRL_CROSS;
|
||||
|
||||
if ((is_pressed(CELL_MOUSE_BUTTON_3) && is_pressed(CELL_MOUSE_BUTTON_1)) || is_pressed(CELL_MOUSE_BUTTON_6))
|
||||
digital_buttons |= CELL_GEM_CTRL_SELECT;
|
||||
|
||||
|
@ -943,6 +936,18 @@ static bool mouse_input_to_pad(const u32 mouse_no, be_t<u16>& digital_buttons, b
|
|||
if (is_pressed(CELL_MOUSE_BUTTON_3) && is_pressed(CELL_MOUSE_BUTTON_5))
|
||||
digital_buttons |= CELL_GEM_CTRL_SQUARE;
|
||||
|
||||
if (is_pressed(CELL_MOUSE_BUTTON_1))
|
||||
digital_buttons |= CELL_GEM_CTRL_T;
|
||||
|
||||
if (is_pressed(CELL_MOUSE_BUTTON_2))
|
||||
digital_buttons |= CELL_GEM_CTRL_MOVE;
|
||||
|
||||
if (is_pressed(CELL_MOUSE_BUTTON_4))
|
||||
digital_buttons |= CELL_GEM_CTRL_CIRCLE;
|
||||
|
||||
if (is_pressed(CELL_MOUSE_BUTTON_5))
|
||||
digital_buttons |= CELL_GEM_CTRL_CROSS;
|
||||
|
||||
analog_t = (mouse_data.buttons & CELL_MOUSE_BUTTON_1) ? 0xFFFF : 0;
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Add table
Reference in a new issue