using UnityEngine;
using UnityEditor;
using UnityRawInput;
using System.Collections.Generic;
using System.Linq;

public class RawKeySetup
{
    public static readonly Dictionary<KeyCode, RawKey> KeyMapping = new Dictionary<KeyCode, RawKey>
    {
        // 알파벳
        { KeyCode.A, RawKey.A },
        { KeyCode.B, RawKey.B },
        { KeyCode.C, RawKey.C },
        { KeyCode.D, RawKey.D },
        { KeyCode.E, RawKey.E },
        { KeyCode.F, RawKey.F },
        { KeyCode.G, RawKey.G },
        { KeyCode.H, RawKey.H },
        { KeyCode.I, RawKey.I },
        { KeyCode.J, RawKey.J },
        { KeyCode.K, RawKey.K },
        { KeyCode.L, RawKey.L },
        { KeyCode.M, RawKey.M },
        { KeyCode.N, RawKey.N },
        { KeyCode.O, RawKey.O },
        { KeyCode.P, RawKey.P },
        { KeyCode.Q, RawKey.Q },
        { KeyCode.R, RawKey.R },
        { KeyCode.S, RawKey.S },
        { KeyCode.T, RawKey.T },
        { KeyCode.U, RawKey.U },
        { KeyCode.V, RawKey.V },
        { KeyCode.W, RawKey.W },
        { KeyCode.X, RawKey.X },
        { KeyCode.Y, RawKey.Y },
        { KeyCode.Z, RawKey.Z },

        // 숫자
        { KeyCode.Alpha0, RawKey.N0 },
        { KeyCode.Alpha1, RawKey.N1 },
        { KeyCode.Alpha2, RawKey.N2 },
        { KeyCode.Alpha3, RawKey.N3 },
        { KeyCode.Alpha4, RawKey.N4 },
        { KeyCode.Alpha5, RawKey.N5 },
        { KeyCode.Alpha6, RawKey.N6 },
        { KeyCode.Alpha7, RawKey.N7 },
        { KeyCode.Alpha8, RawKey.N8 },
        { KeyCode.Alpha9, RawKey.N9 },

        // 넘패드
        { KeyCode.Keypad0, RawKey.Numpad0 },
        { KeyCode.Keypad1, RawKey.Numpad1 },
        { KeyCode.Keypad2, RawKey.Numpad2 },
        { KeyCode.Keypad3, RawKey.Numpad3 },
        { KeyCode.Keypad4, RawKey.Numpad4 },
        { KeyCode.Keypad5, RawKey.Numpad5 },
        { KeyCode.Keypad6, RawKey.Numpad6 },
        { KeyCode.Keypad7, RawKey.Numpad7 },
        { KeyCode.Keypad8, RawKey.Numpad8 },
        { KeyCode.Keypad9, RawKey.Numpad9 },

        // 특수키
        { KeyCode.LeftControl, RawKey.LeftControl },
        { KeyCode.RightControl, RawKey.RightControl },
        { KeyCode.LeftAlt, RawKey.LeftMenu },
        { KeyCode.RightAlt, RawKey.RightMenu },
        { KeyCode.LeftShift, RawKey.LeftShift },
        { KeyCode.RightShift, RawKey.RightShift },
        { KeyCode.Space, RawKey.Space },
        { KeyCode.Return, RawKey.Return },
        { KeyCode.Escape, RawKey.Escape },
        { KeyCode.Tab, RawKey.Tab },
        { KeyCode.BackQuote, RawKey.OEM3 },
        { KeyCode.Minus, RawKey.OEMMinus },
        { KeyCode.Equals, RawKey.OEMPlus },
        { KeyCode.Backspace, RawKey.Back },
        { KeyCode.LeftBracket, RawKey.OEM4 },
        { KeyCode.RightBracket, RawKey.OEM6 },
        { KeyCode.Backslash, RawKey.OEM5 },
        { KeyCode.Semicolon, RawKey.OEM1 },
        { KeyCode.Quote, RawKey.OEM7 },
        { KeyCode.Comma, RawKey.OEMComma },
        { KeyCode.Period, RawKey.OEMPeriod },
        { KeyCode.Slash, RawKey.OEM2 },

        // 기능키
        { KeyCode.F1, RawKey.F1 },
        { KeyCode.F2, RawKey.F2 },
        { KeyCode.F3, RawKey.F3 },
        { KeyCode.F4, RawKey.F4 },
        { KeyCode.F5, RawKey.F5 },
        { KeyCode.F6, RawKey.F6 },
        { KeyCode.F7, RawKey.F7 },
        { KeyCode.F8, RawKey.F8 },
        { KeyCode.F9, RawKey.F9 },
        { KeyCode.F10, RawKey.F10 },
        { KeyCode.F11, RawKey.F11 },
        { KeyCode.F12, RawKey.F12 },

        // 방향키
        { KeyCode.UpArrow, RawKey.Up },
        { KeyCode.DownArrow, RawKey.Down },
        { KeyCode.LeftArrow, RawKey.Left },
        { KeyCode.RightArrow, RawKey.Right },

        // 기타
        { KeyCode.Insert, RawKey.Insert },
        { KeyCode.Delete, RawKey.Delete },
        { KeyCode.Home, RawKey.Home },
        { KeyCode.End, RawKey.End }
    };
}