ryujinx/Ryujinx/Ui/JoyConKeyboard.cs

103 lines
3.7 KiB
C#
Raw Normal View History

using OpenTK.Input;
using Ryujinx.HLE.Input;
namespace Ryujinx.UI.Input
{
public struct JoyConKeyboardLeft
{
public int StickUp;
public int StickDown;
public int StickLeft;
public int StickRight;
public int StickButton;
public int DPadUp;
public int DPadDown;
public int DPadLeft;
public int DPadRight;
public int ButtonMinus;
public int ButtonL;
public int ButtonZl;
}
public struct JoyConKeyboardRight
{
public int StickUp;
public int StickDown;
public int StickLeft;
public int StickRight;
public int StickButton;
public int ButtonA;
public int ButtonB;
public int ButtonX;
public int ButtonY;
public int ButtonPlus;
public int ButtonR;
public int ButtonZr;
}
public class JoyConKeyboard
{
public JoyConKeyboardLeft Left;
public JoyConKeyboardRight Right;
public JoyConKeyboard(
JoyConKeyboardLeft left,
JoyConKeyboardRight right)
{
Left = left;
Right = right;
}
public HidControllerButtons GetButtons(KeyboardState keyboard)
{
HidControllerButtons buttons = 0;
if (keyboard[(Key)Left.StickButton]) buttons |= HidControllerButtons.KEY_LSTICK;
if (keyboard[(Key)Left.DPadUp]) buttons |= HidControllerButtons.KEY_DUP;
if (keyboard[(Key)Left.DPadDown]) buttons |= HidControllerButtons.KEY_DDOWN;
if (keyboard[(Key)Left.DPadLeft]) buttons |= HidControllerButtons.KEY_DLEFT;
if (keyboard[(Key)Left.DPadRight]) buttons |= HidControllerButtons.KEY_DRIGHT;
if (keyboard[(Key)Left.ButtonMinus]) buttons |= HidControllerButtons.KEY_MINUS;
if (keyboard[(Key)Left.ButtonL]) buttons |= HidControllerButtons.KEY_L;
if (keyboard[(Key)Left.ButtonZl]) buttons |= HidControllerButtons.KEY_ZL;
if (keyboard[(Key)Right.StickButton]) buttons |= HidControllerButtons.KEY_RSTICK;
if (keyboard[(Key)Right.ButtonA]) buttons |= HidControllerButtons.KEY_A;
if (keyboard[(Key)Right.ButtonB]) buttons |= HidControllerButtons.KEY_B;
if (keyboard[(Key)Right.ButtonX]) buttons |= HidControllerButtons.KEY_X;
if (keyboard[(Key)Right.ButtonY]) buttons |= HidControllerButtons.KEY_Y;
if (keyboard[(Key)Right.ButtonPlus]) buttons |= HidControllerButtons.KEY_PLUS;
if (keyboard[(Key)Right.ButtonR]) buttons |= HidControllerButtons.KEY_R;
if (keyboard[(Key)Right.ButtonZr]) buttons |= HidControllerButtons.KEY_ZR;
return buttons;
}
public (short, short) GetLeftStick(KeyboardState keyboard)
{
short dx = 0;
short dy = 0;
if (keyboard[(Key)Left.StickUp]) dy = short.MaxValue;
if (keyboard[(Key)Left.StickDown]) dy = -short.MaxValue;
if (keyboard[(Key)Left.StickLeft]) dx = -short.MaxValue;
if (keyboard[(Key)Left.StickRight]) dx = short.MaxValue;
return (dx, dy);
}
public (short, short) GetRightStick(KeyboardState keyboard)
{
short dx = 0;
short dy = 0;
if (keyboard[(Key)Right.StickUp]) dy = short.MaxValue;
if (keyboard[(Key)Right.StickDown]) dy = -short.MaxValue;
if (keyboard[(Key)Right.StickLeft]) dx = -short.MaxValue;
if (keyboard[(Key)Right.StickRight]) dx = short.MaxValue;
return (dx, dy);
}
}
}