forked from Mirror/Ryujinx
7a308d9e73
* Use integer math for touch screen * Sleep polling thread * Rework host input * Add fullscreen with F11 or Alt+Enter * Address feedback
102 lines
3.7 KiB
C#
102 lines
3.7 KiB
C#
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)
|
|
{
|
|
this.Left = Left;
|
|
this.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);
|
|
}
|
|
}
|
|
}
|