steam-deck-tools/SteamController/Profiles/DesktopProfile.cs
2022-11-26 10:19:50 +01:00

97 lines
3.3 KiB
C#

using WindowsInput;
namespace SteamController.Profiles
{
public sealed class DesktopProfile : DefaultGuideShortcutsProfile
{
private const String Consumed = "DesktopProfileOwner";
public DesktopProfile()
{
IsDesktop = true;
}
public override bool Selected(Context context)
{
return context.Enabled && context.DesktopMode && !context.SteamUsesController;
}
public override Status Run(Context c)
{
if (base.Run(c).IsDone)
{
return Status.Done;
}
if (!c.Mouse.Valid)
{
// Failed to acquire secure context
// Enable emergency Lizard
c.Steam.LizardButtons = true;
c.Steam.LizardMouse = true;
return Status.Done;
}
c.Steam.LizardButtons = SteamModeLizardButtons;
c.Steam.LizardMouse = SteamModeLizardMouse;
EmulateScrollOnLPad(c);
EmulateScrollOnLStick(c);
EmulateMouseOnRPad(c);
EmulateMouseOnRStick(c);
EmulateDPadArrows(c);
if (c.Steam.BtnA.Pressed())
{
c.Keyboard.KeyPress(VirtualKeyCode.RETURN);
}
if (c.Steam.BtnB.Pressed())
{
c.Keyboard.KeyPress(VirtualKeyCode.BACK);
}
return Status.Continue;
}
private void EmulateScrollOnLStick(Context c)
{
if (c.Steam.BtnVirtualLeftThumbUp.HoldRepeat(Context.ThumbToWhellFirstRepeat, Context.ThumbToWhellRepeat, Consumed))
{
c.Mouse.VerticalScroll(Context.ThumbToWhellSensitivity);
}
else if (c.Steam.BtnVirtualLeftThumbDown.HoldRepeat(Context.ThumbToWhellFirstRepeat, Context.ThumbToWhellRepeat, Consumed))
{
c.Mouse.VerticalScroll(-Context.ThumbToWhellSensitivity);
}
else if (c.Steam.BtnVirtualLeftThumbLeft.HoldRepeat(Context.ThumbToWhellFirstRepeat, Context.ThumbToWhellRepeat, Consumed))
{
c.Mouse.HorizontalScroll(-Context.ThumbToWhellSensitivity);
}
else if (c.Steam.BtnVirtualLeftThumbRight.HoldRepeat(Context.ThumbToWhellFirstRepeat, Context.ThumbToWhellRepeat, Consumed))
{
c.Mouse.HorizontalScroll(Context.ThumbToWhellSensitivity);
}
}
private void EmulateDPadArrows(Context c)
{
#if true
if (c.Steam.BtnDpadLeft.HoldRepeat(Consumed))
c.Keyboard.KeyPress(VirtualKeyCode.LEFT);
if (c.Steam.BtnDpadRight.HoldRepeat(Consumed))
c.Keyboard.KeyPress(VirtualKeyCode.RIGHT);
if (c.Steam.BtnDpadUp.HoldRepeat(Consumed))
c.Keyboard.KeyPress(VirtualKeyCode.UP);
if (c.Steam.BtnDpadDown.HoldRepeat(Consumed))
c.Keyboard.KeyPress(VirtualKeyCode.DOWN);
#else
c.Keyboard[VirtualKeyCode.RETURN] = c.Steam.BtnA;
c.Keyboard[VirtualKeyCode.LEFT] = c.Steam.BtnDpadLeft;
c.Keyboard[VirtualKeyCode.RIGHT] = c.Steam.BtnDpadRight;
c.Keyboard[VirtualKeyCode.UP] = c.Steam.BtnDpadUp;
c.Keyboard[VirtualKeyCode.DOWN] = c.Steam.BtnDpadDown;
#endif
}
}
}