From 565e5ecd087614c001ec068ea186d875779f7dc6 Mon Sep 17 00:00:00 2001 From: Anna Date: Wed, 13 Jul 2022 15:46:39 -0400 Subject: [PATCH] feat: add utility to go from VK to ImGui --- ChatTwo/Util/ImGuiUtil.cs | 116 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/ChatTwo/Util/ImGuiUtil.cs b/ChatTwo/Util/ImGuiUtil.cs index b9eb74c..2b653e9 100755 --- a/ChatTwo/Util/ImGuiUtil.cs +++ b/ChatTwo/Util/ImGuiUtil.cs @@ -1,5 +1,6 @@ using System.Numerics; using System.Text; +using Dalamud.Game.ClientState.Keys; using Dalamud.Game.Text.SeStringHandling; using Dalamud.Interface; using Dalamud.Interface.Style; @@ -222,4 +223,119 @@ internal static class ImGuiUtil { ImGui.SetNextItemWidth(-1); return ImGui.DragFloat($"##{label}", ref value, vSpeed, vMin, vMax, format, flags); } + + internal static bool TryToImGui(this VirtualKey key, out ImGuiKey result) { + result = key switch { + VirtualKey.NO_KEY => ImGuiKey.None, + VirtualKey.BACK => ImGuiKey.Backspace, + VirtualKey.TAB => ImGuiKey.Tab, + VirtualKey.RETURN => ImGuiKey.Enter, + VirtualKey.SHIFT => ImGuiKey.ModShift, + VirtualKey.CONTROL => ImGuiKey.ModCtrl, + VirtualKey.MENU => ImGuiKey.ModAlt, + VirtualKey.PAUSE => ImGuiKey.Pause, + VirtualKey.CAPITAL => ImGuiKey.CapsLock, + VirtualKey.ESCAPE => ImGuiKey.Escape, + VirtualKey.SPACE => ImGuiKey.Space, + VirtualKey.PRIOR => ImGuiKey.PageUp, + VirtualKey.NEXT => ImGuiKey.PageDown, + VirtualKey.END => ImGuiKey.End, + VirtualKey.HOME => ImGuiKey.Home, + VirtualKey.LEFT => ImGuiKey.LeftArrow, + VirtualKey.UP => ImGuiKey.UpArrow, + VirtualKey.RIGHT => ImGuiKey.RightArrow, + VirtualKey.DOWN => ImGuiKey.DownArrow, + VirtualKey.SNAPSHOT => ImGuiKey.PrintScreen, + VirtualKey.INSERT => ImGuiKey.Insert, + VirtualKey.DELETE => ImGuiKey.Delete, + VirtualKey.KEY_0 => ImGuiKey._0, + VirtualKey.KEY_1 => ImGuiKey._1, + VirtualKey.KEY_2 => ImGuiKey._2, + VirtualKey.KEY_3 => ImGuiKey._3, + VirtualKey.KEY_4 => ImGuiKey._4, + VirtualKey.KEY_5 => ImGuiKey._5, + VirtualKey.KEY_6 => ImGuiKey._6, + VirtualKey.KEY_7 => ImGuiKey._7, + VirtualKey.KEY_8 => ImGuiKey._8, + VirtualKey.KEY_9 => ImGuiKey._9, + VirtualKey.A => ImGuiKey.A, + VirtualKey.B => ImGuiKey.B, + VirtualKey.C => ImGuiKey.C, + VirtualKey.D => ImGuiKey.D, + VirtualKey.E => ImGuiKey.E, + VirtualKey.F => ImGuiKey.F, + VirtualKey.G => ImGuiKey.G, + VirtualKey.H => ImGuiKey.H, + VirtualKey.I => ImGuiKey.I, + VirtualKey.J => ImGuiKey.J, + VirtualKey.K => ImGuiKey.K, + VirtualKey.L => ImGuiKey.L, + VirtualKey.M => ImGuiKey.M, + VirtualKey.N => ImGuiKey.N, + VirtualKey.O => ImGuiKey.O, + VirtualKey.P => ImGuiKey.P, + VirtualKey.Q => ImGuiKey.Q, + VirtualKey.R => ImGuiKey.R, + VirtualKey.S => ImGuiKey.S, + VirtualKey.T => ImGuiKey.T, + VirtualKey.U => ImGuiKey.U, + VirtualKey.V => ImGuiKey.V, + VirtualKey.W => ImGuiKey.W, + VirtualKey.X => ImGuiKey.X, + VirtualKey.Y => ImGuiKey.Y, + VirtualKey.Z => ImGuiKey.Z, + VirtualKey.LWIN => ImGuiKey.LeftSuper, + VirtualKey.RWIN => ImGuiKey.RightSuper, + VirtualKey.NUMPAD0 => ImGuiKey.Keypad0, + VirtualKey.NUMPAD1 => ImGuiKey.Keypad1, + VirtualKey.NUMPAD2 => ImGuiKey.Keypad2, + VirtualKey.NUMPAD3 => ImGuiKey.Keypad3, + VirtualKey.NUMPAD4 => ImGuiKey.Keypad4, + VirtualKey.NUMPAD5 => ImGuiKey.Keypad5, + VirtualKey.NUMPAD6 => ImGuiKey.Keypad6, + VirtualKey.NUMPAD7 => ImGuiKey.Keypad7, + VirtualKey.NUMPAD8 => ImGuiKey.Keypad8, + VirtualKey.NUMPAD9 => ImGuiKey.Keypad9, + VirtualKey.MULTIPLY => ImGuiKey.KeypadMultiply, + VirtualKey.ADD => ImGuiKey.KeypadAdd, + VirtualKey.SUBTRACT => ImGuiKey.KeypadSubtract, + VirtualKey.DECIMAL => ImGuiKey.KeypadDecimal, + VirtualKey.DIVIDE => ImGuiKey.KeypadDivide, + VirtualKey.F1 => ImGuiKey.F1, + VirtualKey.F2 => ImGuiKey.F2, + VirtualKey.F3 => ImGuiKey.F3, + VirtualKey.F4 => ImGuiKey.F4, + VirtualKey.F5 => ImGuiKey.F5, + VirtualKey.F6 => ImGuiKey.F6, + VirtualKey.F7 => ImGuiKey.F7, + VirtualKey.F8 => ImGuiKey.F8, + VirtualKey.F9 => ImGuiKey.F9, + VirtualKey.F10 => ImGuiKey.F10, + VirtualKey.F11 => ImGuiKey.F11, + VirtualKey.F12 => ImGuiKey.F12, + VirtualKey.NUMLOCK => ImGuiKey.NumLock, + VirtualKey.SCROLL => ImGuiKey.ScrollLock, + VirtualKey.OEM_NEC_EQUAL => ImGuiKey.KeypadEqual, + VirtualKey.LSHIFT => ImGuiKey.LeftShift, + VirtualKey.RSHIFT => ImGuiKey.RightShift, + VirtualKey.LCONTROL => ImGuiKey.LeftCtrl, + VirtualKey.RCONTROL => ImGuiKey.RightCtrl, + VirtualKey.LMENU => ImGuiKey.LeftAlt, + VirtualKey.RMENU => ImGuiKey.RightAlt, + VirtualKey.OEM_1 => ImGuiKey.Semicolon, + VirtualKey.OEM_PLUS => ImGuiKey.Equal, + VirtualKey.OEM_COMMA => ImGuiKey.Comma, + VirtualKey.OEM_MINUS => ImGuiKey.Minus, + VirtualKey.OEM_PERIOD => ImGuiKey.Period, + VirtualKey.OEM_2 => ImGuiKey.Slash, + VirtualKey.OEM_3 => ImGuiKey.GraveAccent, + VirtualKey.OEM_4 => ImGuiKey.LeftBracket, + VirtualKey.OEM_5 => ImGuiKey.Backslash, + VirtualKey.OEM_6 => ImGuiKey.RightBracket, + VirtualKey.OEM_7 => ImGuiKey.Apostrophe, + _ => 0, + }; + + return result != 0 || key == VirtualKey.NO_KEY; + } }