rabidus-test/Assets/Plugins/QFSW/Quantum Console/Source/Scripts/InputHelper.cs

187 lines
7.5 KiB
C#
Raw Normal View History

2023-08-22 15:41:12 +03:00
#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
}
}