in ScpControl.Shared/Core/DualShockProfile.cs [309:361]
public void Remap(ScpHidReport report)
{
// skip disabled mapping
if (!IsEnabled) return;
switch (MappingTarget.CommandType)
{
case CommandType.GamepadButton:
foreach (var button in SourceButtons)
{
// turbo is special, apply first
if (Turbo.IsEnabled)
{
Turbo.ApplyOn(report, button);
}
// get target button
IDsButton target = MappingTarget.CommandTarget as Ds3Button;
// if target is no valid button or none, skip setting it
if (target == null) continue;
// if it's a DS4, translate button
if (report.Model == DsModel.DS4)
{
target = Ds4Button.Buttons.First(b => b.Name.Equals(target.Name));
}
// if original isn't pressed we can ignore
if (!report[button].IsPressed) continue;
// unset original button
report.Unset(button);
// set new button
report.Set(target);
}
break;
case CommandType.Keystrokes:
foreach (var button in SourceButtons)
{
var target = (VirtualKeyCode) Enum.ToObject(typeof(VirtualKeyCode), MappingTarget.CommandTarget);
if (report[button].IsPressed)
{
VirtualInput.Keyboard.KeyDown(target);
}
else
{
VirtualInput.Keyboard.KeyUp(target);
}
}
break;
}
}