From 73294655734acdc974837f3a09e23557b665a5f6 Mon Sep 17 00:00:00 2001 From: goat <16760685+goaaats@users.noreply.github.com> Date: Tue, 14 Dec 2021 21:23:21 +0100 Subject: [PATCH] feat: add VirtualKey.GetFancyName() --- Dalamud/Game/ClientState/Keys/VirtualKey.cs | 211 +++++++++++++++++- .../ClientState/Keys/VirtualKeyAttribute.cs | 25 +++ .../ClientState/Keys/VirtualKeyExtensions.cs | 20 ++ 3 files changed, 252 insertions(+), 4 deletions(-) create mode 100644 Dalamud/Game/ClientState/Keys/VirtualKeyAttribute.cs create mode 100644 Dalamud/Game/ClientState/Keys/VirtualKeyExtensions.cs diff --git a/Dalamud/Game/ClientState/Keys/VirtualKey.cs b/Dalamud/Game/ClientState/Keys/VirtualKey.cs index ab9436822..dd9009601 100644 --- a/Dalamud/Game/ClientState/Keys/VirtualKey.cs +++ b/Dalamud/Game/ClientState/Keys/VirtualKey.cs @@ -11,21 +11,25 @@ namespace Dalamud.Game.ClientState.Keys /// /// This is an addendum to use on functions in which you have to pass a zero value to represent no key code. /// + [VirtualKey("No key")] NO_KEY = 0, /// /// Left mouse button. /// + [VirtualKey("Left mouse button")] LBUTTON = 1, /// /// Right mouse button. /// + [VirtualKey("Right mouse button")] RBUTTON = 2, /// /// Control-break processing. /// + [VirtualKey("CANCEL")] CANCEL = 3, /// @@ -34,770 +38,925 @@ namespace Dalamud.Game.ClientState.Keys /// /// NOT contiguous with L and R buttons. /// + [VirtualKey("Mouse 3")] MBUTTON = 4, /// /// X1 mouse button. /// + /// /// NOT contiguous with L and R buttons. /// + [VirtualKey("Mouse 4")] XBUTTON1 = 5, /// /// X2 mouse button. /// + /// /// NOT contiguous with L and R buttons. /// + [VirtualKey("Mouse 5")] XBUTTON2 = 6, /// /// BACKSPACE key. /// + [VirtualKey("Backspace")] BACK = 8, /// /// TAB key. /// + [VirtualKey("Tab")] TAB = 9, /// /// CLEAR key. /// + [VirtualKey("Clear")] CLEAR = 12, /// /// RETURN key. /// + [VirtualKey("Return/Enter")] RETURN = 13, /// /// SHIFT key. /// + [VirtualKey("Shift")] SHIFT = 16, /// /// CONTROL key. /// + [VirtualKey("Control")] CONTROL = 17, /// /// ALT key. /// + [VirtualKey("Alt")] MENU = 18, /// /// PAUSE key. /// + [VirtualKey("Pause")] PAUSE = 19, /// /// CAPS LOCK key. /// + [VirtualKey("Caps Lock")] CAPITAL = 20, /// /// IME Kana mode. /// + [VirtualKey("Kana Key")] KANA = 21, /// - /// IME Hanguel mode (maintained for compatibility; use User32.VirtualKey.HANGUL). + /// IME Hangeul mode (maintained for compatibility; use User32.VirtualKey.HANGUL). /// + [VirtualKey("Hangul Key")] HANGEUL = KANA, /// /// IME Hangul mode. /// + [VirtualKey("Hangul Key 2")] HANGUL = KANA, /// /// IME Junja mode. /// + [VirtualKey("Junja Key")] JUNJA = 23, /// /// IME final mode. /// + [VirtualKey("Final Key")] FINAL = 24, /// /// IME Hanja mode. /// + [VirtualKey("Hanja Key")] HANJA = 25, /// /// IME Kanji mode. /// + [VirtualKey("Kanji Key")] KANJI = HANJA, /// /// ESC key. /// + [VirtualKey("Escape")] ESCAPE = 27, /// /// IME convert. /// + [VirtualKey("Convert Key")] CONVERT = 28, /// /// IME nonconvert. /// + [VirtualKey("Non-Convert Key")] NONCONVERT = 29, /// /// IME accept. /// + [VirtualKey("IME Accept Key")] ACCEPT = 30, /// /// IME mode change request. /// + [VirtualKey("IME Mode-Change Key")] MODECHANGE = 31, /// /// SPACEBAR. /// + [VirtualKey("Spacebar")] SPACE = 32, /// /// PAGE UP key. /// + [VirtualKey("Page Up")] PRIOR = 33, /// /// PAGE DOWN key. /// + [VirtualKey("Page Down")] NEXT = 34, /// /// END key. /// + [VirtualKey("End")] END = 35, /// /// HOME key. /// + [VirtualKey("Home")] HOME = 36, /// /// LEFT ARROW key. /// + [VirtualKey("Left Arrow")] LEFT = 37, /// /// UP ARROW key. /// + [VirtualKey("Up Arrow")] UP = 38, /// /// RIGHT ARROW key. /// + [VirtualKey("Right Arrow")] RIGHT = 39, /// /// DOWN ARROW key. /// + [VirtualKey("Down Arrow")] DOWN = 40, /// /// SELECT key. /// + [VirtualKey("Select")] SELECT = 41, /// /// PRINT key. /// + [VirtualKey("Print")] PRINT = 42, /// /// EXECUTE key. /// + [VirtualKey("Execute")] EXECUTE = 43, /// /// PRINT SCREEN key. /// + [VirtualKey("Print Screen")] SNAPSHOT = 44, /// /// INS key. /// + [VirtualKey("Insert")] INSERT = 45, /// /// DEL key. /// + [VirtualKey("Delete")] DELETE = 46, /// /// HELP key. /// + [VirtualKey("Help")] HELP = 47, /// /// 0 key. /// + [VirtualKey("Number-Row 0")] KEY_0 = 48, /// /// 1 key. /// + [VirtualKey("Number-Row 1")] KEY_1 = 49, /// /// 2 key. /// + [VirtualKey("Number-Row 2")] KEY_2 = 50, /// /// 3 key. /// + [VirtualKey("Number-Row 3")] KEY_3 = 51, /// /// 4 key. /// + [VirtualKey("Number-Row 4")] KEY_4 = 52, /// /// 5 key. /// + [VirtualKey("Number-Row 5")] KEY_5 = 53, /// /// 6 key. /// + [VirtualKey("Number-Row 6")] KEY_6 = 54, /// /// 7 key. /// + [VirtualKey("Number-Row 7")] KEY_7 = 55, /// /// 8 key. /// + [VirtualKey("Number-Row 8")] KEY_8 = 56, /// /// 9 key. /// + [VirtualKey("Number-Row 9")] KEY_9 = 57, /// /// A key. /// + [VirtualKey("A")] A = 65, /// /// B key. /// + [VirtualKey("B")] B = 66, /// /// C key. /// + [VirtualKey("C")] C = 67, /// /// D key. /// + [VirtualKey("D")] D = 68, /// /// E key. /// + [VirtualKey("E")] E = 69, /// /// F key. /// + [VirtualKey("F")] F = 70, /// /// G key. /// + [VirtualKey("G")] G = 71, /// /// H key. /// + [VirtualKey("H")] H = 72, /// /// I key. /// + [VirtualKey("I")] I = 73, /// /// J key. /// + [VirtualKey("J")] J = 74, /// /// K key. /// + [VirtualKey("K")] K = 75, /// /// L key. /// + [VirtualKey("L")] L = 76, /// /// M key. /// + [VirtualKey("M")] M = 77, /// /// N key. /// + [VirtualKey("N")] N = 78, /// /// O key. /// + [VirtualKey("O")] O = 79, /// /// P key. /// + [VirtualKey("P")] P = 80, /// /// Q key. /// + [VirtualKey("Q")] Q = 81, /// /// R key. /// + [VirtualKey("R")] R = 82, /// /// S key. /// + [VirtualKey("S")] S = 83, /// /// T key. /// + [VirtualKey("T")] T = 84, /// /// U key. /// + [VirtualKey("U")] U = 85, /// /// V key. /// + [VirtualKey("V")] V = 86, /// /// W key. /// + [VirtualKey("W")] W = 87, /// /// X key. /// + [VirtualKey("X")] X = 88, /// /// Y key. /// + [VirtualKey("Y")] Y = 89, /// /// Z key. /// + [VirtualKey("Z")] Z = 90, /// /// Left Windows key (Natural keyboard). /// + [VirtualKey("Left Windows")] LWIN = 91, /// /// Right Windows key (Natural keyboard). /// + [VirtualKey("Right Windows")] RWIN = 92, /// /// Applications key (Natural keyboard). /// + [VirtualKey("Applications")] APPS = 93, /// /// Computer Sleep key. /// + [VirtualKey("Sleep")] SLEEP = 95, /// /// Numeric keypad 0 key. /// + [VirtualKey("Numpad 0")] NUMPAD0 = 96, /// /// Numeric keypad 1 key. /// + [VirtualKey("Numpad 1")] NUMPAD1 = 97, /// /// Numeric keypad 2 key. /// + [VirtualKey("Numpad 2")] NUMPAD2 = 98, /// /// Numeric keypad 3 key. /// + [VirtualKey("Numpad 3")] NUMPAD3 = 99, /// /// Numeric keypad 4 key. /// + [VirtualKey("Numpad 4")] NUMPAD4 = 100, /// /// Numeric keypad 5 key. /// + [VirtualKey("Numpad 5")] NUMPAD5 = 101, /// /// Numeric keypad 6 key. /// + [VirtualKey("Numpad 6")] NUMPAD6 = 102, /// /// Numeric keypad 7 key. /// + [VirtualKey("Numpad 7")] NUMPAD7 = 103, /// /// Numeric keypad 8 key. /// + [VirtualKey("Numpad 8")] NUMPAD8 = 104, /// /// Numeric keypad 9 key. /// + [VirtualKey("Numpad 9")] NUMPAD9 = 105, /// /// Multiply key. /// + [VirtualKey("Numpad Multiply")] MULTIPLY = 106, /// /// Add key. /// + [VirtualKey("Numpad Add")] ADD = 107, /// /// Separator key. /// + [VirtualKey("Numpad Separator")] SEPARATOR = 108, /// /// Subtract key. /// + [VirtualKey("Numpad Subtract")] SUBTRACT = 109, /// /// Decimal key. /// + [VirtualKey("Numpad Decimal")] DECIMAL = 110, /// /// Divide key. /// + [VirtualKey("Numpad Divide")] DIVIDE = 111, /// /// F1 Key. /// + [VirtualKey("F1")] F1 = 112, /// /// F2 Key. /// + [VirtualKey("F2")] F2 = 113, /// /// F3 Key. /// + [VirtualKey("F3")] F3 = 114, /// /// F4 Key. /// + [VirtualKey("F4")] F4 = 115, /// /// F5 Key. /// + [VirtualKey("F5")] F5 = 116, /// /// F6 Key. /// + [VirtualKey("F6")] F6 = 117, /// /// F7 Key. /// + [VirtualKey("F7")] F7 = 118, /// /// F8 Key. /// + [VirtualKey("F8")] F8 = 119, /// /// F9 Key. /// + [VirtualKey("F9")] F9 = 120, /// /// F10 Key. /// + [VirtualKey("F10")] F10 = 121, /// /// F11 Key. /// + [VirtualKey("F11")] F11 = 122, /// /// F12 Key. /// + [VirtualKey("F12")] F12 = 123, /// /// F13 Key. /// + [VirtualKey("F13")] F13 = 124, /// /// F14 Key. /// + [VirtualKey("F14")] F14 = 125, /// /// F15 Key. /// + [VirtualKey("F15")] F15 = 126, /// /// F16 Key. /// + [VirtualKey("F16")] F16 = 127, /// /// F17 Key. /// + [VirtualKey("F17")] F17 = 128, /// /// F18 Key. /// + [VirtualKey("F18")] F18 = 129, /// /// F19 Key. /// + [VirtualKey("F19")] F19 = 130, /// /// F20 Key. /// + [VirtualKey("F20")] F20 = 131, /// /// F21 Key. /// + [VirtualKey("F21")] F21 = 132, /// /// F22 Key. /// + [VirtualKey("F22")] F22 = 133, /// /// F23 Key. /// + [VirtualKey("F23")] F23 = 134, /// /// F24 Key. /// + [VirtualKey("F24")] F24 = 135, /// /// NUM LOCK key. /// + [VirtualKey("Num-Lock")] NUMLOCK = 144, /// /// SCROLL LOCK key. /// + [VirtualKey("Scroll-Lock")] SCROLL = 145, /// /// '=' key on numpad (NEC PC-9800 kbd definitions). /// + [VirtualKey("Numpad Equals")] OEM_NEC_EQUAL = 146, /// /// 'Dictionary' key (Fujitsu/OASYS kbd definitions). /// + [VirtualKey("Dictionary (Fujitsu)")] OEM_FJ_JISHO = OEM_NEC_EQUAL, /// /// 'Unregister word' key (Fujitsu/OASYS kbd definitions). /// + [VirtualKey("Unregister word (Fujitsu)")] OEM_FJ_MASSHOU = 147, /// /// 'Register word' key (Fujitsu/OASYS kbd definitions). /// + [VirtualKey("Register word (Fujitsu)")] OEM_FJ_TOUROKU = 148, /// /// 'Left OYAYUBI' key (Fujitsu/OASYS kbd definitions). /// + [VirtualKey("Left Oyayubi (Fujitsu)")] OEM_FJ_LOYA = 149, /// /// 'Right OYAYUBI' key (Fujitsu/OASYS kbd definitions). /// + [VirtualKey("Right Oyayubi (Fujitsu)")] OEM_FJ_ROYA = 150, /// /// Left SHIFT key. /// /// - /// Used only as parameters to User32.GetAsyncKeyState and User32.GetKeyState. No other API or message will distinguish left and right keys in this way. + /// Used only as parameters to User32.GetAsyncKeyState and User32.GetKeyState. No other API or message will distinguish + /// left and right keys in this way. /// + [VirtualKey("Left Shift")] LSHIFT = 160, /// /// Right SHIFT key. /// + [VirtualKey("Right Shift")] RSHIFT = 161, /// /// Left CONTROL key. /// + [VirtualKey("Left Control")] LCONTROL = 162, /// /// Right CONTROL key. /// + [VirtualKey("Right Control")] RCONTROL = 163, /// /// Left MENU key. /// + [VirtualKey("Left Menu")] LMENU = 164, /// /// Right MENU key. /// + [VirtualKey("Right Menu")] RMENU = 165, /// /// Browser Back key. /// + [VirtualKey("Browser Back")] BROWSER_BACK = 166, /// /// Browser Forward key. /// + [VirtualKey("Browser Forward")] BROWSER_FORWARD = 167, /// /// Browser Refresh key. /// + [VirtualKey("Browser Refresh")] BROWSER_REFRESH = 168, /// /// Browser Stop key. /// + [VirtualKey("Browser Stop")] BROWSER_STOP = 169, /// /// Browser Search key. /// + [VirtualKey("Browser Search")] BROWSER_SEARCH = 170, /// /// Browser Favorites key. /// + [VirtualKey("Browser Favorites")] BROWSER_FAVORITES = 171, /// /// Browser Start and Home key. /// + [VirtualKey("Browser Home")] BROWSER_HOME = 172, /// /// Volume Mute key. /// + [VirtualKey("Mute Volume")] VOLUME_MUTE = 173, /// /// Volume Down key. /// + [VirtualKey("Volume Down")] VOLUME_DOWN = 174, /// /// Volume Up key. /// + [VirtualKey("Volume Up")] VOLUME_UP = 175, /// /// Next Track key. /// + [VirtualKey("Next Track")] MEDIA_NEXT_TRACK = 176, /// /// Previous Track key. /// + [VirtualKey("Previous Track")] MEDIA_PREV_TRACK = 177, /// /// Stop Media key. /// + [VirtualKey("Stop Media")] MEDIA_STOP = 178, /// /// Play/Pause Media key. /// + [VirtualKey("Play/Pause Media")] MEDIA_PLAY_PAUSE = 179, /// /// Start Mail key. /// + [VirtualKey("Launch Mail")] LAUNCH_MAIL = 180, /// /// Select Media key. /// + [VirtualKey("Launch Media Player")] LAUNCH_MEDIA_SELECT = 181, /// /// Start Application 1 key. /// + [VirtualKey("Launch Application 1")] LAUNCH_APP1 = 182, /// /// Start Application 2 key. /// + [VirtualKey("Launch Application 2")] LAUNCH_APP2 = 183, /// @@ -806,26 +965,31 @@ namespace Dalamud.Game.ClientState.Keys /// /// For the US standard keyboard, the ';:' key. /// + [VirtualKey("Semicolon")] OEM_1 = 186, /// /// For any country/region, the '+' key. /// + [VirtualKey("Plus")] OEM_PLUS = 187, /// /// For any country/region, the ',' key. /// + [VirtualKey("Comma")] OEM_COMMA = 188, /// /// For any country/region, the '-' key. /// + [VirtualKey("Minus")] OEM_MINUS = 189, /// /// For any country/region, the '.' key. /// + [VirtualKey("Period")] OEM_PERIOD = 190, /// @@ -834,6 +998,7 @@ namespace Dalamud.Game.ClientState.Keys /// /// For the US standard keyboard, the '/?' key. /// + [VirtualKey("Forward Slash/Question Mark")] OEM_2 = 191, /// @@ -842,6 +1007,7 @@ namespace Dalamud.Game.ClientState.Keys /// /// For the US standard keyboard, the '`~' key. /// + [VirtualKey("Tilde")] OEM_3 = 192, /// @@ -850,6 +1016,7 @@ namespace Dalamud.Game.ClientState.Keys /// /// For the US standard keyboard, the '[{' key. /// + [VirtualKey("Opening Bracket")] OEM_4 = 219, /// @@ -858,6 +1025,7 @@ namespace Dalamud.Game.ClientState.Keys /// /// For the US standard keyboard, the '\|' key. /// + [VirtualKey("Back Slash/Pipe")] OEM_5 = 220, /// @@ -866,6 +1034,7 @@ namespace Dalamud.Game.ClientState.Keys /// /// For the US standard keyboard, the ']}' key. /// + [VirtualKey("Closing Bracket")] OEM_6 = 221, /// @@ -874,24 +1043,29 @@ namespace Dalamud.Game.ClientState.Keys /// /// For the US standard keyboard, the 'single-quote/double-quote' (''"') key. /// + [VirtualKey("Single Quote/Double Quote")] OEM_7 = 222, /// /// Used for miscellaneous characters; it can vary by keyboard.. /// + [VirtualKey("OEM 8")] OEM_8 = 223, /// /// OEM specific. /// + /// /// 'AX' key on Japanese AX kbd. /// + [VirtualKey("OEM AX")] OEM_AX = 225, /// /// Either the angle bracket ("<>") key or the backslash ("\|") key on the RT 102-key keyboard. /// + [VirtualKey("OEM 102")] OEM_102 = 226, /// @@ -900,6 +1074,7 @@ namespace Dalamud.Game.ClientState.Keys /// /// Help key on ICO. /// + [VirtualKey("Help (ICO)")] ICO_HELP = 227, /// @@ -908,11 +1083,13 @@ namespace Dalamud.Game.ClientState.Keys /// /// 00 key on ICO. /// + [VirtualKey("00 (ICO)")] ICO_00 = 228, /// /// IME PROCESS key. /// + [VirtualKey("IME Process")] PROCESSKEY = 229, /// @@ -921,124 +1098,150 @@ namespace Dalamud.Game.ClientState.Keys /// /// Clear key on ICO. /// + [VirtualKey("Clear (ICO)")] ICO_CLEAR = 230, /// - /// Used to pass Unicode characters as if they were keystrokes. The PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods.. + /// Used to pass Unicode characters as if they were keystrokes. The PACKET key is the low word of a 32-bit Virtual Key + /// value used for non-keyboard input methods.. /// /// - /// For more information, see Remark in User32.KEYBDINPUT, User32.SendInput, User32.WindowMessage.WM_KEYDOWN, and User32.WindowMessage.WM_KEYUP. + /// For more information, see Remark in User32.KEYBDINPUT, User32.SendInput, User32.WindowMessage.WM_KEYDOWN, and + /// User32.WindowMessage.WM_KEYUP. /// + [VirtualKey("Packet")] PACKET = 231, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM Reset")] OEM_RESET = 233, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM Jump")] OEM_JUMP = 234, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM PA1")] OEM_PA1 = 235, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM PA2")] OEM_PA2 = 236, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM PA3")] OEM_PA3 = 237, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM WSCTRL")] OEM_WSCTRL = 238, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM CUSEL")] OEM_CUSEL = 239, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM ATTN")] OEM_ATTN = 240, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM Finish")] OEM_FINISH = 241, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM Copy")] OEM_COPY = 242, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM Auto")] OEM_AUTO = 243, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM ENLW")] OEM_ENLW = 244, /// /// Nokia/Ericsson definition. /// + [VirtualKey("OEM Backtab")] OEM_BACKTAB = 245, /// /// Attn key. /// + [VirtualKey("ATTN")] ATTN = 246, /// /// CrSel key. /// + [VirtualKey("CRSEL")] CRSEL = 247, /// /// ExSel key. /// + [VirtualKey("EXSEL")] EXSEL = 248, /// /// Erase EOF key. /// + [VirtualKey("Erase EOF")] EREOF = 249, /// /// Play key. /// + [VirtualKey("Play")] PLAY = 250, /// /// Zoom key. /// + [VirtualKey("Zoom")] ZOOM = 251, /// /// Reserved constant by Windows headers definition. /// + [VirtualKey("Reserved")] NONAME = 252, /// /// PA1 key. /// + [VirtualKey("PA1")] PA1 = 253, /// /// Clear key. /// + [VirtualKey("Clear")] OEM_CLEAR = 254, } } diff --git a/Dalamud/Game/ClientState/Keys/VirtualKeyAttribute.cs b/Dalamud/Game/ClientState/Keys/VirtualKeyAttribute.cs new file mode 100644 index 000000000..249491be7 --- /dev/null +++ b/Dalamud/Game/ClientState/Keys/VirtualKeyAttribute.cs @@ -0,0 +1,25 @@ +using System; + +namespace Dalamud.Game.ClientState.Keys +{ + /// + /// Attribute describing a VirtualKey. + /// + [AttributeUsage(AttributeTargets.Field)] + internal sealed class VirtualKeyAttribute : Attribute + { + /// + /// Initializes a new instance of the class. + /// + /// Fancy name of this key. + public VirtualKeyAttribute(string fancyName) + { + this.FancyName = fancyName; + } + + /// + /// Gets the fancy name of this virtual key. + /// + public string FancyName { get; init; } + } +} diff --git a/Dalamud/Game/ClientState/Keys/VirtualKeyExtensions.cs b/Dalamud/Game/ClientState/Keys/VirtualKeyExtensions.cs new file mode 100644 index 000000000..2a94dd5df --- /dev/null +++ b/Dalamud/Game/ClientState/Keys/VirtualKeyExtensions.cs @@ -0,0 +1,20 @@ +using Dalamud.Utility; + +namespace Dalamud.Game.ClientState.Keys +{ + /// + /// Extension methods for . + /// + public static class VirtualKeyExtensions + { + /// + /// Get the fancy name associated with this key. + /// + /// The they key to act on. + /// The key's fancy name. + public static string GetFancyName(this VirtualKey key) + { + return key.GetAttribute().FancyName; + } + } +}