187 lines
7.5 KiB
C#
187 lines
7.5 KiB
C#
#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
|
|
#define NEW_INPUT
|
|
using UnityEngine.InputSystem;
|
|
using UnityEngine.InputSystem.Controls;
|
|
#endif
|
|
|
|
using UnityEngine;
|
|
|
|
namespace QFSW.QC
|
|
{
|
|
public static class InputHelper
|
|
{
|
|
private static bool IsKeySupported(KeyCode key)
|
|
{
|
|
#if NEW_INPUT
|
|
bool KeyExists()
|
|
{
|
|
Key keyConverted = key.ToKey();
|
|
foreach (KeyControl k in Keyboard.current.allKeys)
|
|
{
|
|
if (k.keyCode == keyConverted)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
return key != KeyCode.None
|
|
&& Keyboard.current != null
|
|
&& KeyExists();
|
|
#else
|
|
return true;
|
|
#endif
|
|
}
|
|
|
|
public static bool GetKey(KeyCode key)
|
|
{
|
|
#if NEW_INPUT
|
|
return IsKeySupported(key)
|
|
&& Keyboard.current[key.ToKey()].isPressed;
|
|
|
|
#else
|
|
return Input.GetKey(key);
|
|
#endif
|
|
}
|
|
|
|
public static bool GetKeyDown(KeyCode key)
|
|
{
|
|
#if NEW_INPUT
|
|
return IsKeySupported(key)
|
|
&& Keyboard.current[key.ToKey()].wasPressedThisFrame;
|
|
#else
|
|
return Input.GetKeyDown(key);
|
|
#endif
|
|
}
|
|
|
|
public static bool GetKeyUp(KeyCode key)
|
|
{
|
|
#if NEW_INPUT
|
|
return IsKeySupported(key)
|
|
&& Keyboard.current[key.ToKey()].wasReleasedThisFrame;
|
|
#else
|
|
return Input.GetKeyDown(key);
|
|
#endif
|
|
}
|
|
|
|
#if NEW_INPUT
|
|
private static Key ToKey(this KeyCode key)
|
|
{
|
|
switch (key)
|
|
{
|
|
case KeyCode.None: return Key.None;
|
|
case KeyCode.Space: return Key.Space;
|
|
case KeyCode.Return: return Key.Enter;
|
|
case KeyCode.Tab: return Key.Tab;
|
|
case KeyCode.BackQuote: return Key.Backquote;
|
|
case KeyCode.Quote: return Key.Quote;
|
|
case KeyCode.Semicolon: return Key.Semicolon;
|
|
case KeyCode.Comma: return Key.Comma;
|
|
case KeyCode.Period: return Key.Period;
|
|
case KeyCode.Slash: return Key.Slash;
|
|
case KeyCode.Backslash: return Key.Backslash;
|
|
case KeyCode.LeftBracket: return Key.LeftBracket;
|
|
case KeyCode.RightBracket: return Key.RightBracket;
|
|
case KeyCode.Minus: return Key.Minus;
|
|
case KeyCode.Equals: return Key.Equals;
|
|
case KeyCode.A: return Key.A;
|
|
case KeyCode.B: return Key.B;
|
|
case KeyCode.C: return Key.C;
|
|
case KeyCode.D: return Key.D;
|
|
case KeyCode.E: return Key.E;
|
|
case KeyCode.F: return Key.F;
|
|
case KeyCode.G: return Key.G;
|
|
case KeyCode.H: return Key.H;
|
|
case KeyCode.I: return Key.I;
|
|
case KeyCode.J: return Key.J;
|
|
case KeyCode.K: return Key.K;
|
|
case KeyCode.L: return Key.L;
|
|
case KeyCode.M: return Key.M;
|
|
case KeyCode.N: return Key.N;
|
|
case KeyCode.O: return Key.O;
|
|
case KeyCode.P: return Key.P;
|
|
case KeyCode.Q: return Key.Q;
|
|
case KeyCode.R: return Key.R;
|
|
case KeyCode.S: return Key.S;
|
|
case KeyCode.T: return Key.T;
|
|
case KeyCode.U: return Key.U;
|
|
case KeyCode.V: return Key.V;
|
|
case KeyCode.W: return Key.W;
|
|
case KeyCode.X: return Key.X;
|
|
case KeyCode.Y: return Key.Y;
|
|
case KeyCode.Z: return Key.Z;
|
|
case KeyCode.Alpha1: return Key.Digit1;
|
|
case KeyCode.Alpha2: return Key.Digit2;
|
|
case KeyCode.Alpha3: return Key.Digit3;
|
|
case KeyCode.Alpha4: return Key.Digit4;
|
|
case KeyCode.Alpha5: return Key.Digit5;
|
|
case KeyCode.Alpha6: return Key.Digit6;
|
|
case KeyCode.Alpha7: return Key.Digit7;
|
|
case KeyCode.Alpha8: return Key.Digit8;
|
|
case KeyCode.Alpha9: return Key.Digit9;
|
|
case KeyCode.Alpha0: return Key.Digit0;
|
|
case KeyCode.LeftShift: return Key.LeftShift;
|
|
case KeyCode.RightShift: return Key.RightShift;
|
|
case KeyCode.LeftAlt: return Key.LeftAlt;
|
|
case KeyCode.RightAlt: return Key.RightAlt;
|
|
case KeyCode.AltGr: return Key.AltGr;
|
|
case KeyCode.LeftControl: return Key.LeftCtrl;
|
|
case KeyCode.RightControl: return Key.RightCtrl;
|
|
case KeyCode.LeftWindows: return Key.LeftWindows;
|
|
case KeyCode.RightWindows: return Key.RightWindows;
|
|
case KeyCode.LeftCommand: return Key.LeftCommand;
|
|
case KeyCode.RightCommand: return Key.RightCommand;
|
|
case KeyCode.Escape: return Key.Escape;
|
|
case KeyCode.LeftArrow: return Key.LeftArrow;
|
|
case KeyCode.RightArrow: return Key.RightArrow;
|
|
case KeyCode.UpArrow: return Key.UpArrow;
|
|
case KeyCode.DownArrow: return Key.DownArrow;
|
|
case KeyCode.Backspace: return Key.Backspace;
|
|
case KeyCode.PageDown: return Key.PageDown;
|
|
case KeyCode.PageUp: return Key.PageUp;
|
|
case KeyCode.Home: return Key.Home;
|
|
case KeyCode.End: return Key.End;
|
|
case KeyCode.Insert: return Key.Insert;
|
|
case KeyCode.Delete: return Key.Delete;
|
|
case KeyCode.CapsLock: return Key.CapsLock;
|
|
case KeyCode.Numlock: return Key.NumLock;
|
|
case KeyCode.Print: return Key.PrintScreen;
|
|
case KeyCode.ScrollLock: return Key.ScrollLock;
|
|
case KeyCode.Pause: return Key.Pause;
|
|
case KeyCode.KeypadEnter: return Key.NumpadEnter;
|
|
case KeyCode.KeypadDivide: return Key.NumpadDivide;
|
|
case KeyCode.KeypadMultiply: return Key.NumpadMultiply;
|
|
case KeyCode.KeypadPlus: return Key.NumpadPlus;
|
|
case KeyCode.KeypadMinus: return Key.NumpadMinus;
|
|
case KeyCode.KeypadPeriod: return Key.NumpadPeriod;
|
|
case KeyCode.KeypadEquals: return Key.NumpadEquals;
|
|
case KeyCode.Keypad0: return Key.Numpad0;
|
|
case KeyCode.Keypad1: return Key.Numpad1;
|
|
case KeyCode.Keypad2: return Key.Numpad2;
|
|
case KeyCode.Keypad3: return Key.Numpad3;
|
|
case KeyCode.Keypad4: return Key.Numpad4;
|
|
case KeyCode.Keypad5: return Key.Numpad5;
|
|
case KeyCode.Keypad6: return Key.Numpad6;
|
|
case KeyCode.Keypad7: return Key.Numpad7;
|
|
case KeyCode.Keypad8: return Key.Numpad8;
|
|
case KeyCode.Keypad9: return Key.Numpad9;
|
|
case KeyCode.F1: return Key.F1;
|
|
case KeyCode.F2: return Key.F2;
|
|
case KeyCode.F3: return Key.F3;
|
|
case KeyCode.F4: return Key.F4;
|
|
case KeyCode.F5: return Key.F5;
|
|
case KeyCode.F6: return Key.F6;
|
|
case KeyCode.F7: return Key.F7;
|
|
case KeyCode.F8: return Key.F8;
|
|
case KeyCode.F9: return Key.F9;
|
|
case KeyCode.F10: return Key.F10;
|
|
case KeyCode.F11: return Key.F11;
|
|
case KeyCode.F12: return Key.F12;
|
|
default: return Key.None;
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
} |