Browse Source

Properly handle d-pad events for mouse simulation

pull/5453/head
staphen 3 years ago committed by Anders Jenbo
parent
commit
33d4cc2544
  1. 28
      Source/controls/controller_motion.cpp

28
Source/controls/controller_motion.cpp

@ -81,26 +81,32 @@ void SetSimulatingMouseWithPadmapper(bool value)
// SELECT + D-Pad to simulate right stick movement.
bool SimulateRightStickWithDpad(ControllerButtonEvent ctrlEvent)
{
if (IsAnyOf(ctrlEvent.button, ControllerButton_NONE, ControllerButton_IGNORE))
return false;
ControllerButtonCombo upCombo = sgOptions.Padmapper.ButtonComboForAction("MouseUp");
ControllerButtonCombo downCombo = sgOptions.Padmapper.ButtonComboForAction("MouseDown");
ControllerButtonCombo leftCombo = sgOptions.Padmapper.ButtonComboForAction("MouseLeft");
ControllerButtonCombo rightCombo = sgOptions.Padmapper.ButtonComboForAction("MouseRight");
if (IsNoneOf(ctrlEvent.button, upCombo.button, downCombo.button, leftCombo.button, rightCombo.button)) {
if (rightStickX == 0 && rightStickY == 0)
SetSimulatingMouseWithPadmapper(false);
return false;
}
int simulatedRightStickX = 0;
int simulatedRightStickY = 0;
rightStickX = 0;
rightStickY = 0;
if (IsControllerButtonComboPressed(upCombo))
simulatedRightStickY += 1;
rightStickY += 1.F;
if (IsControllerButtonComboPressed(downCombo))
simulatedRightStickY -= 1;
rightStickY -= 1.F;
if (IsControllerButtonComboPressed(leftCombo))
simulatedRightStickX -= 1;
rightStickX -= 1.F;
if (IsControllerButtonComboPressed(rightCombo))
simulatedRightStickX += 1;
SetSimulatingMouseWithPadmapper(simulatedRightStickX != 0 || simulatedRightStickY != 0);
rightStickX += simulatedRightStickX;
rightStickY += simulatedRightStickY;
return SimulatingMouseWithPadmapper && IsAnyOf(ctrlEvent.button, upCombo.button, downCombo.button, leftCombo.button, rightCombo.button);
rightStickX += 1.F;
if (rightStickX != 0 || rightStickY != 0)
SetSimulatingMouseWithPadmapper(true);
return true;
}
} // namespace

Loading…
Cancel
Save