aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx/Ui/KeyboardController.cs29
1 files changed, 18 insertions, 11 deletions
diff --git a/Ryujinx/Ui/KeyboardController.cs b/Ryujinx/Ui/KeyboardController.cs
index f52642e3..f201c283 100644
--- a/Ryujinx/Ui/KeyboardController.cs
+++ b/Ryujinx/Ui/KeyboardController.cs
@@ -1,4 +1,5 @@
using System;
+using OpenTK;
using OpenTK.Input;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Configuration;
@@ -68,13 +69,16 @@ namespace Ryujinx.Ui
short dx = 0;
short dy = 0;
-
- if (keyboard[(Key)_config.LeftJoycon.StickUp]) dy = short.MaxValue;
- if (keyboard[(Key)_config.LeftJoycon.StickDown]) dy = -short.MaxValue;
- if (keyboard[(Key)_config.LeftJoycon.StickLeft]) dx = -short.MaxValue;
- if (keyboard[(Key)_config.LeftJoycon.StickRight]) dx = short.MaxValue;
- return (dx, dy);
+ if (keyboard[(Key)_config.LeftJoycon.StickUp]) dy += 1;
+ if (keyboard[(Key)_config.LeftJoycon.StickDown]) dy += -1;
+ if (keyboard[(Key)_config.LeftJoycon.StickLeft]) dx += -1;
+ if (keyboard[(Key)_config.LeftJoycon.StickRight]) dx += 1;
+
+ Vector2 stick = new Vector2(dx, dy);
+ stick.NormalizeFast();
+
+ return ((short)(stick.X * short.MaxValue), (short)(stick.Y * short.MaxValue));
}
public (short, short) GetRightStick()
@@ -84,12 +88,15 @@ namespace Ryujinx.Ui
short dx = 0;
short dy = 0;
- if (keyboard[(Key)_config.RightJoycon.StickUp]) dy = short.MaxValue;
- if (keyboard[(Key)_config.RightJoycon.StickDown]) dy = -short.MaxValue;
- if (keyboard[(Key)_config.RightJoycon.StickLeft]) dx = -short.MaxValue;
- if (keyboard[(Key)_config.RightJoycon.StickRight]) dx = short.MaxValue;
+ if (keyboard[(Key)_config.RightJoycon.StickUp]) dy += 1;
+ if (keyboard[(Key)_config.RightJoycon.StickDown]) dy += -1;
+ if (keyboard[(Key)_config.RightJoycon.StickLeft]) dx += -1;
+ if (keyboard[(Key)_config.RightJoycon.StickRight]) dx += 1;
+
+ Vector2 stick = new Vector2(dx, dy);
+ stick.NormalizeFast();
- return (dx, dy);
+ return ((short)(stick.X * short.MaxValue), (short)(stick.Y * short.MaxValue));
}
public static HotkeyButtons GetHotkeyButtons(KeyboardState keyboard)