From 5e34a8112bccb25c150680014f12a7e2b5d99e4c Mon Sep 17 00:00:00 2001 From: Diogo Trindade Date: Thu, 6 Apr 2023 22:49:54 +0100 Subject: [PATCH] Input - Removed unused keyboard keys simplified a bunch of enum flag code changed dictionaries into switches --- .../Services/Input/Enums/KeyboardKey.cs | 659 +++++++----------- .../Services/Input/InputKeyLedIdMap.cs | 370 +++++----- .../Services/Input/InputService.cs | 6 +- .../Utilities/InputUtilities.cs | 29 +- .../Providers/Input/WindowsInputProvider.cs | 51 +- .../Utilities/InputUtilities.cs | 217 ++---- .../Device/Tabs/InputMappingsTabViewModel.cs | 2 +- 7 files changed, 540 insertions(+), 794 deletions(-) diff --git a/src/Artemis.Core/Services/Input/Enums/KeyboardKey.cs b/src/Artemis.Core/Services/Input/Enums/KeyboardKey.cs index 39bfbcbd2..d58ae8f02 100644 --- a/src/Artemis.Core/Services/Input/Enums/KeyboardKey.cs +++ b/src/Artemis.Core/Services/Input/Enums/KeyboardKey.cs @@ -4,533 +4,218 @@ public enum KeyboardKey { /// No key pressed. - None = 0, - - /// The Cancel key. - Cancel = 1, - + None, + /// The Backspace key. - Back = 2, + Backspace, /// The Tab key. - Tab = 3, - - /// The Linefeed key. - LineFeed = 4, + Tab, /// The Clear key. - Clear = 5, + Clear, /// The Enter key. - Enter = 6, - - /// The Return key. - Return = 6, + Enter, /// The Pause key. - Pause = 7, + PauseBreak, /// The Caps Lock key. - CapsLock = 8, + CapsLock, + + /// The Escape key. + Escape, - /// The IME Hangul mode key. - HangulMode = 9, - - /// The IME Junja mode key. - JunjaMode = 10, // 0x0000000A - - /// The IME Final mode key. - FinalMode = 11, // 0x0000000B - - /// The IME Hanja mode key. - HanjaMode = 12, // 0x0000000C - - /// The ESC key. - Escape = 13, // 0x0000000D - - /// The IME Convert key. - ImeConvert = 14, // 0x0000000E - - /// The IME NonConvert key. - ImeNonConvert = 15, // 0x0000000F - - /// The IME Accept key. - ImeAccept = 16, // 0x00000010 - - /// The IME Mode change request. - ImeModeChange = 17, // 0x00000011 - - /// The Spacebar key. - Space = 18, // 0x00000012 + /// The Space bar key. + Space, /// The Page Up key. - PageUp = 19, // 0x00000013 - - /// The Page Up key. - Prior = 19, // 0x00000013 + PageUp, /// The Page Down key. - Next = 20, // 0x00000014 - - /// The Page Down key. - PageDown = 20, // 0x00000014 + PageDown, /// The End key. - End = 21, // 0x00000015 + End, /// The Home key. - Home = 22, // 0x00000016 + Home, /// The Left Arrow key. - Left = 23, // 0x00000017 + ArrowLeft, /// The Up Arrow key. - Up = 24, // 0x00000018 + ArrowUp, /// The Right Arrow key. - Right = 25, // 0x00000019 + ArrowRight, /// The Down Arrow key. - Down = 26, // 0x0000001A - - /// The Select key. - Select = 27, // 0x0000001B - - /// The Print key. - Print = 28, // 0x0000001C - - /// The Execute key. - Execute = 29, // 0x0000001D + ArrowDown, /// The Print Screen key. - PrintScreen = 30, // 0x0000001E + PrintScreen, /// The Insert key. - Insert = 31, // 0x0000001F + Insert, /// The Delete key. - Delete = 32, // 0x00000020 - - /// The Help key. - Help = 33, // 0x00000021 + Delete, /// The 0 (zero) key. - D0 = 34, // 0x00000022 + D0, /// The 1 (one) key. - D1 = 35, // 0x00000023 + D1, /// The 2 key. - D2 = 36, // 0x00000024 + D2, /// The 3 key. - D3 = 37, // 0x00000025 + D3, /// The 4 key. - D4 = 38, // 0x00000026 + D4, /// The 5 key. - D5 = 39, // 0x00000027 + D5, /// The 6 key. - D6 = 40, // 0x00000028 + D6, /// The 7 key. - D7 = 41, // 0x00000029 + D7, /// The 8 key. - D8 = 42, // 0x0000002A + D8, /// The 9 key. - D9 = 43, // 0x0000002B + D9, /// The A key. - A = 44, // 0x0000002C + A, /// The B key. - B = 45, // 0x0000002D + B, /// The C key. - C = 46, // 0x0000002E + C, /// The D key. - D = 47, // 0x0000002F + D, /// The E key. - E = 48, // 0x00000030 + E, /// The F key. - F = 49, // 0x00000031 + F, /// The G key. - G = 50, // 0x00000032 + G, /// The H key. - H = 51, // 0x00000033 + H, /// The I key. - I = 52, // 0x00000034 + I, /// The J key. - J = 53, // 0x00000035 + J, /// The K key. - K = 54, // 0x00000036 + K, /// The L key. - L = 55, // 0x00000037 + L, /// The M key. - M = 56, // 0x00000038 + M, /// The N key. - N = 57, // 0x00000039 + N, /// The O key. - O = 58, // 0x0000003A + O, /// The P key. - P = 59, // 0x0000003B + P, /// The Q key. - Q = 60, // 0x0000003C + Q, /// The R key. - R = 61, // 0x0000003D + R, /// The S key. - S = 62, // 0x0000003E + S, /// The T key. - T = 63, // 0x0000003F + T, /// The U key. - U = 64, // 0x00000040 + U, /// The V key. - V = 65, // 0x00000041 + V, /// The W key. - W = 66, // 0x00000042 + W, /// The X key. - X = 67, // 0x00000043 + X, /// The Y key. - Y = 68, // 0x00000044 + Y, /// The Z key. - Z = 69, // 0x00000045 + Z, /// The left Windows logo key (Microsoft Natural Keyboard). - LWin = 70, // 0x00000046 + LeftWin, /// The right Windows logo key (Microsoft Natural Keyboard). - RWin = 71, // 0x00000047 + RightWin, - /// - /// The Application key (Microsoft Natural Keyboard). Also known as the Menu key, as it displays an - /// application-specific context menu. - /// - Apps = 72, // 0x00000048 + /// The Application key. Displays an application-specific context menu. + Application, /// The Computer Sleep key. - Sleep = 73, // 0x00000049 + Sleep, + + /// The Num Lock key. + NumLock, /// The 0 key on the numeric keypad. - NumPad0 = 74, // 0x0000004A + NumPad0, /// The 1 key on the numeric keypad. - NumPad1 = 75, // 0x0000004B + NumPad1, /// The 2 key on the numeric keypad. - NumPad2 = 76, // 0x0000004C + NumPad2, /// The 3 key on the numeric keypad. - NumPad3 = 77, // 0x0000004D + NumPad3, /// The 4 key on the numeric keypad. - NumPad4 = 78, // 0x0000004E + NumPad4, /// The 5 key on the numeric keypad. - NumPad5 = 79, // 0x0000004F + NumPad5, /// The 6 key on the numeric keypad. - NumPad6 = 80, // 0x00000050 + NumPad6, /// The 7 key on the numeric keypad. - NumPad7 = 81, // 0x00000051 + NumPad7, /// The 8 key on the numeric keypad. - NumPad8 = 82, // 0x00000052 + NumPad8, /// The 9 key on the numeric keypad. - NumPad9 = 83, // 0x00000053 - - /// The Multiply key. - Multiply = 84, // 0x00000054 - - /// The Add key. - Add = 85, // 0x00000055 - - /// The Separator key. - Separator = 86, // 0x00000056 - - /// The Subtract key. - Subtract = 87, // 0x00000057 - - /// The Decimal key. - Decimal = 88, // 0x00000058 - - /// The Divide key. - Divide = 89, // 0x00000059 - - /// The F1 key. - F1 = 90, // 0x0000005A - - /// The F2 key. - F2 = 91, // 0x0000005B - - /// The F3 key. - F3 = 92, // 0x0000005C - - /// The F4 key. - F4 = 93, // 0x0000005D - - /// The F5 key. - F5 = 94, // 0x0000005E - - /// The F6 key. - F6 = 95, // 0x0000005F - - /// The F7 key. - F7 = 96, // 0x00000060 - - /// The F8 key. - F8 = 97, // 0x00000061 - - /// The F9 key. - F9 = 98, // 0x00000062 - - /// The F10 key. - F10 = 99, // 0x00000063 - - /// The F11 key. - F11 = 100, // 0x00000064 - - /// The F12 key. - F12 = 101, // 0x00000065 - - /// The F13 key. - F13 = 102, // 0x00000066 - - /// The F14 key. - F14 = 103, // 0x00000067 - - /// The F15 key. - F15 = 104, // 0x00000068 - - /// The F16 key. - F16 = 105, // 0x00000069 - - /// The F17 key. - F17 = 106, // 0x0000006A - - /// The F18 key. - F18 = 107, // 0x0000006B - - /// The F19 key. - F19 = 108, // 0x0000006C - - /// The F20 key. - F20 = 109, // 0x0000006D - - /// The F21 key. - F21 = 110, // 0x0000006E - - /// The F22 key. - F22 = 111, // 0x0000006F - - /// The F23 key. - F23 = 112, // 0x00000070 - - /// The F24 key. - F24 = 113, // 0x00000071 - - /// The Num Lock key. - NumLock = 114, // 0x00000072 - - /// The Scroll Lock key. - Scroll = 115, // 0x00000073 - - /// The left Shift key. - LeftShift = 116, // 0x00000074 - - /// The right Shift key. - RightShift = 117, // 0x00000075 - - /// The left CTRL key. - LeftCtrl = 118, // 0x00000076 - - /// The right CTRL key. - RightCtrl = 119, // 0x00000077 - - /// The left ALT key. - LeftAlt = 120, // 0x00000078 - - /// The right ALT key. - RightAlt = 121, // 0x00000079 - - /// The Browser Back key. - BrowserBack = 122, // 0x0000007A - - /// The Browser Forward key. - BrowserForward = 123, // 0x0000007B - - /// The Browser Refresh key. - BrowserRefresh = 124, // 0x0000007C - - /// The Browser Stop key. - BrowserStop = 125, // 0x0000007D - - /// The Browser Search key. - BrowserSearch = 126, // 0x0000007E - - /// The Browser Favorites key. - BrowserFavorites = 127, // 0x0000007F - - /// The Browser Home key. - BrowserHome = 128, // 0x00000080 - - /// The Volume Mute key. - VolumeMute = 129, // 0x00000081 - - /// The Volume Down key. - VolumeDown = 130, // 0x00000082 - - /// The Volume Up key. - VolumeUp = 131, // 0x00000083 - - /// The Media Next Track key. - MediaNextTrack = 132, // 0x00000084 - - /// The Media Previous Track key. - MediaPreviousTrack = 133, // 0x00000085 - - /// The Media Stop key. - MediaStop = 134, // 0x00000086 - - /// The Media Play Pause key. - MediaPlayPause = 135, // 0x00000087 - - /// The Launch Mail key. - LaunchMail = 136, // 0x00000088 - - /// The Select Media key. - SelectMedia = 137, // 0x00000089 - - /// The Launch Application1 key. - LaunchApplication1 = 138, // 0x0000008A - - /// The Launch Application2 key. - LaunchApplication2 = 139, // 0x0000008B - - /// The OEM Semicolon key. - OemSemicolon = 140, // 0x0000008C - - /// The OEM Addition key. - OemPlus = 141, // 0x0000008D - - /// The OEM Comma key. - OemComma = 142, // 0x0000008E - - /// The OEM Minus key. - OemMinus = 143, // 0x0000008F - - /// The OEM Period key. - OemPeriod = 144, // 0x00000091 - - /// The OEM Question key. - OemQuestion = 145, // 0x00000092 - - /// The OEM Tilde key. - OemTilde = 146, // 0x00000092 - - /// The ABNT_C1 (Brazilian) key. - AbntC1 = 147, // 0x00000093 - - /// The ABNT_C2 (Brazilian) key. - AbntC2 = 148, // 0x00000095 - - /// The OEM Open Brackets key. - OemOpenBrackets = 149, // 0x00000096 - - /// The OEM Pipe key. - OemPipe = 150, // 0x00000096 - - /// The OEM Close Brackets key. - OemCloseBrackets = 151, // 0x00000097 - - /// The OEM Quotes key. - OemQuotes = 152, // 0x00000098 - - /// The OEM Backslash key. - OemBackslash = 154, // 0x0000009A - - /// A special key masking the real key being processed by an IME. - ImeProcessed = 155, // 0x0000009B - - /// A special key masking the real key being processed as a system key. - System = 156, // 0x0000009C - - /// The OEM ATTN key. - OemAttn = 157, // 0x0000009D - - /// The OEM FINISH key. - OemFinish = 158, // 0x0000009E - - /// The OEM COPY key. - OemCopy = 159, // 0x0000009F - - /// The OEM AUTO key. - OemAuto = 160, // 0x000000A0 - - /// The OEM ENLW key. - OemEnlw = 161, // 0x000000A1 - - /// The OEM BACKTAB key. - OemBackTab = 162, // 0x000000A2 - - /// The ATTN key. - Attn = 163, // 0x000000A3 - - /// The CRSEL key. - CrSel = 164, // 0x000000A4 - - /// The EXSEL key. - ExSel = 165, // 0x000000A5 - - /// The ERASE EOF key. - EraseEof = 166, // 0x000000A6 - - /// The PLAY key. - Play = 167, // 0x000000A7 - - /// The ZOOM key. - Zoom = 168, // 0x000000A8 - - /// A constant reserved for future use. - NoName = 169, // 0x000000A9 - - /// The PA1 key. - Pa1 = 170, // 0x000000AA - - /// The OEM Clear key. - OemClear = 171, // 0x000000AB - - /// The key is used with another key to create a single combined character. - DeadCharProcessed = 172, // 0x000000AC, - + NumPad9, + /// The NumPad enter key NumPadEnter, @@ -548,4 +233,190 @@ public enum KeyboardKey /// The NumPad decimal key NumPadDecimal, + + /// The NumPad separator key (lower half of the "Add" key on some keyboards) + NumPadSeparator, + + /// The F1 key. + F1, + + /// The F2 key. + F2, + + /// The F3 key. + F3, + + /// The F4 key. + F4, + + /// The F5 key. + F5, + + /// The F6 key. + F6, + + /// The F7 key. + F7, + + /// The F8 key. + F8, + + /// The F9 key. + F9, + + /// The F10 key. + F10, + + /// The F11 key. + F11, + + /// The F12 key. + F12, + + /// The F13 key. + F13, + + /// The F14 key. + F14, + + /// The F15 key. + F15, + + /// The F16 key. + F16, + + /// The F17 key. + F17, + + /// The F18 key. + F18, + + /// The F19 key. + F19, + + /// The F20 key. + F20, + + /// The F21 key. + F21, + + /// The F22 key. + F22, + + /// The F23 key. + F23, + + /// The F24 key. + F24, + + /// The Scroll Lock key. + ScrollLock, + + /// The left Shift key. + LeftShift, + + /// The right Shift key. + RightShift, + + /// The left CTRL key. + LeftCtrl, + + /// The right CTRL key. + RightCtrl, + + /// The left ALT key. + LeftAlt, + + /// The right ALT key. + RightAlt, + + /// The Browser Back key. + BrowserBack, + + /// The Browser Forward key. + BrowserForward, + + /// The Browser Refresh key. + BrowserRefresh, + + /// The Browser Stop key. + BrowserStop, + + /// The Browser Search key. + BrowserSearch, + + /// The Browser Favorites key. + BrowserFavorites, + + /// The Browser Home key. + BrowserHome, + + /// The Volume Mute key. + VolumeMute, + + /// The Volume Down key. + VolumeDown, + + /// The Volume Up key. + VolumeUp, + + /// The Media Next Track key. + MediaNextTrack, + + /// The Media Previous Track key. + MediaPreviousTrack, + + /// The Media Stop key. + MediaStop, + + /// The Media Play Pause key. + MediaPlayPause, + + /// The Launch Mail key. + LaunchMail, + + /// The Select Media key. + SelectMedia, + + /// The Launch Application1 key. + FileBrowser, + + /// The Launch Application2 key. + Calculator, + + /// The Semicolon key. + OemSemicolon, + + /// The Addition key. + OemPlus, + + /// The Comma key. + OemComma, + + /// The Minus key. + OemMinus, + + /// The Period key. + OemPeriod, + + /// The Question key. + OemQuestion, + + /// The Tilde key. + OemTilde, + + /// The OEM Open Brackets key. + OemOpenBrackets, + + /// The OEM Close Brackets key. + OemCloseBrackets, + + /// The OEM Pipe key. The backslash key next to enter. + OemPipe, + + /// The OEM Quotes key. + OemQuotes, + + /// The OEM Backslash key. On iso, it's the key between left shift and Z + OemBackslash, } \ No newline at end of file diff --git a/src/Artemis.Core/Services/Input/InputKeyLedIdMap.cs b/src/Artemis.Core/Services/Input/InputKeyLedIdMap.cs index b240c7f51..45608664e 100644 --- a/src/Artemis.Core/Services/Input/InputKeyLedIdMap.cs +++ b/src/Artemis.Core/Services/Input/InputKeyLedIdMap.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using RGB.NET.Core; namespace Artemis.Core.Services; @@ -9,199 +10,186 @@ namespace Artemis.Core.Services; public static class InputKeyUtilities { /// - /// A dictionary of mappings between and + /// Tries to convert a to a . /// - public static readonly Dictionary KeyboardKeyLedIdMap = new() + public static bool TryGetLedIdFromKeyboardKey(KeyboardKey key, out LedId ledId) { - {KeyboardKey.None, LedId.Keyboard_Custom1}, - {KeyboardKey.Cancel, LedId.Keyboard_Custom2}, - {KeyboardKey.Back, LedId.Keyboard_Backspace}, - {KeyboardKey.Tab, LedId.Keyboard_Tab}, - {KeyboardKey.LineFeed, LedId.Keyboard_Custom3}, - {KeyboardKey.Clear, LedId.Keyboard_Custom4}, - {KeyboardKey.Enter, LedId.Keyboard_Enter}, - {KeyboardKey.Pause, LedId.Keyboard_PauseBreak}, - {KeyboardKey.CapsLock, LedId.Keyboard_CapsLock}, - {KeyboardKey.HangulMode, LedId.Keyboard_Custom4}, - {KeyboardKey.JunjaMode, LedId.Keyboard_Custom5}, - {KeyboardKey.FinalMode, LedId.Keyboard_Custom6}, - {KeyboardKey.HanjaMode, LedId.Keyboard_Custom7}, - {KeyboardKey.Escape, LedId.Keyboard_Escape}, - {KeyboardKey.ImeConvert, LedId.Keyboard_Custom8}, - {KeyboardKey.ImeNonConvert, LedId.Keyboard_Custom9}, - {KeyboardKey.ImeAccept, LedId.Keyboard_Custom10}, - {KeyboardKey.ImeModeChange, LedId.Keyboard_Custom11}, - {KeyboardKey.Space, LedId.Keyboard_Space}, - {KeyboardKey.PageUp, LedId.Keyboard_PageUp}, - {KeyboardKey.PageDown, LedId.Keyboard_PageDown}, - {KeyboardKey.End, LedId.Keyboard_End}, - {KeyboardKey.Home, LedId.Keyboard_Home}, - {KeyboardKey.Left, LedId.Keyboard_ArrowLeft}, - {KeyboardKey.Up, LedId.Keyboard_ArrowUp}, - {KeyboardKey.Right, LedId.Keyboard_ArrowRight}, - {KeyboardKey.Down, LedId.Keyboard_ArrowDown}, - {KeyboardKey.Select, LedId.Keyboard_Custom12}, - {KeyboardKey.Print, LedId.Keyboard_Custom13}, - {KeyboardKey.Execute, LedId.Keyboard_Custom14}, - {KeyboardKey.PrintScreen, LedId.Keyboard_PrintScreen}, - {KeyboardKey.Insert, LedId.Keyboard_Insert}, - {KeyboardKey.Delete, LedId.Keyboard_Delete}, - {KeyboardKey.Help, LedId.Keyboard_Custom15}, - {KeyboardKey.D0, LedId.Keyboard_0}, - {KeyboardKey.D1, LedId.Keyboard_1}, - {KeyboardKey.D2, LedId.Keyboard_2}, - {KeyboardKey.D3, LedId.Keyboard_3}, - {KeyboardKey.D4, LedId.Keyboard_4}, - {KeyboardKey.D5, LedId.Keyboard_5}, - {KeyboardKey.D6, LedId.Keyboard_6}, - {KeyboardKey.D7, LedId.Keyboard_7}, - {KeyboardKey.D8, LedId.Keyboard_8}, - {KeyboardKey.D9, LedId.Keyboard_9}, - {KeyboardKey.A, LedId.Keyboard_A}, - {KeyboardKey.B, LedId.Keyboard_B}, - {KeyboardKey.C, LedId.Keyboard_C}, - {KeyboardKey.D, LedId.Keyboard_D}, - {KeyboardKey.E, LedId.Keyboard_E}, - {KeyboardKey.F, LedId.Keyboard_F}, - {KeyboardKey.G, LedId.Keyboard_G}, - {KeyboardKey.H, LedId.Keyboard_H}, - {KeyboardKey.I, LedId.Keyboard_I}, - {KeyboardKey.J, LedId.Keyboard_J}, - {KeyboardKey.K, LedId.Keyboard_K}, - {KeyboardKey.L, LedId.Keyboard_L}, - {KeyboardKey.M, LedId.Keyboard_M}, - {KeyboardKey.N, LedId.Keyboard_N}, - {KeyboardKey.O, LedId.Keyboard_O}, - {KeyboardKey.P, LedId.Keyboard_P}, - {KeyboardKey.Q, LedId.Keyboard_Q}, - {KeyboardKey.R, LedId.Keyboard_R}, - {KeyboardKey.S, LedId.Keyboard_S}, - {KeyboardKey.T, LedId.Keyboard_T}, - {KeyboardKey.U, LedId.Keyboard_U}, - {KeyboardKey.V, LedId.Keyboard_V}, - {KeyboardKey.W, LedId.Keyboard_W}, - {KeyboardKey.X, LedId.Keyboard_X}, - {KeyboardKey.Y, LedId.Keyboard_Y}, - {KeyboardKey.Z, LedId.Keyboard_Z}, - {KeyboardKey.LWin, LedId.Keyboard_LeftGui}, - {KeyboardKey.RWin, LedId.Keyboard_RightGui}, - {KeyboardKey.Apps, LedId.Keyboard_Application}, - {KeyboardKey.Sleep, LedId.Keyboard_Custom16}, - {KeyboardKey.NumPad0, LedId.Keyboard_Num0}, - {KeyboardKey.NumPad1, LedId.Keyboard_Num1}, - {KeyboardKey.NumPad2, LedId.Keyboard_Num2}, - {KeyboardKey.NumPad3, LedId.Keyboard_Num3}, - {KeyboardKey.NumPad4, LedId.Keyboard_Num4}, - {KeyboardKey.NumPad5, LedId.Keyboard_Num5}, - {KeyboardKey.NumPad6, LedId.Keyboard_Num6}, - {KeyboardKey.NumPad7, LedId.Keyboard_Num7}, - {KeyboardKey.NumPad8, LedId.Keyboard_Num8}, - {KeyboardKey.NumPad9, LedId.Keyboard_Num9}, - {KeyboardKey.Multiply, LedId.Keyboard_NumAsterisk}, - {KeyboardKey.Add, LedId.Keyboard_NumPlus}, - {KeyboardKey.Separator, LedId.Keyboard_NumEnter}, // unverified - {KeyboardKey.Subtract, LedId.Keyboard_NumMinus}, - {KeyboardKey.Decimal, LedId.Keyboard_NumPeriodAndDelete}, - {KeyboardKey.Divide, LedId.Keyboard_NumSlash}, - {KeyboardKey.F1, LedId.Keyboard_F1}, - {KeyboardKey.F2, LedId.Keyboard_F2}, - {KeyboardKey.F3, LedId.Keyboard_F3}, - {KeyboardKey.F4, LedId.Keyboard_F4}, - {KeyboardKey.F5, LedId.Keyboard_F5}, - {KeyboardKey.F6, LedId.Keyboard_F6}, - {KeyboardKey.F7, LedId.Keyboard_F7}, - {KeyboardKey.F8, LedId.Keyboard_F8}, - {KeyboardKey.F9, LedId.Keyboard_F9}, - {KeyboardKey.F10, LedId.Keyboard_F10}, - {KeyboardKey.F11, LedId.Keyboard_F11}, - {KeyboardKey.F12, LedId.Keyboard_F12}, - {KeyboardKey.F13, LedId.Keyboard_Custom17}, - {KeyboardKey.F14, LedId.Keyboard_Custom18}, - {KeyboardKey.F15, LedId.Keyboard_Custom19}, - {KeyboardKey.F16, LedId.Keyboard_Custom20}, - {KeyboardKey.F17, LedId.Keyboard_Custom21}, - {KeyboardKey.F18, LedId.Keyboard_Custom22}, - {KeyboardKey.F19, LedId.Keyboard_Custom23}, - {KeyboardKey.F20, LedId.Keyboard_Custom24}, - {KeyboardKey.F21, LedId.Keyboard_Custom25}, - {KeyboardKey.F22, LedId.Keyboard_Custom26}, - {KeyboardKey.F23, LedId.Keyboard_Custom27}, - {KeyboardKey.F24, LedId.Keyboard_Custom28}, - {KeyboardKey.NumLock, LedId.Keyboard_NumLock}, - {KeyboardKey.Scroll, LedId.Keyboard_ScrollLock}, - {KeyboardKey.LeftShift, LedId.Keyboard_LeftShift}, - {KeyboardKey.RightShift, LedId.Keyboard_RightShift}, - {KeyboardKey.LeftCtrl, LedId.Keyboard_LeftCtrl}, - {KeyboardKey.RightCtrl, LedId.Keyboard_RightCtrl}, - {KeyboardKey.LeftAlt, LedId.Keyboard_LeftAlt}, - {KeyboardKey.RightAlt, LedId.Keyboard_RightAlt}, - {KeyboardKey.BrowserBack, LedId.Keyboard_Custom29}, - {KeyboardKey.BrowserForward, LedId.Keyboard_Custom30}, - {KeyboardKey.BrowserRefresh, LedId.Keyboard_Custom31}, - {KeyboardKey.BrowserStop, LedId.Keyboard_Custom32}, - {KeyboardKey.BrowserSearch, LedId.Keyboard_Custom33}, - {KeyboardKey.BrowserFavorites, LedId.Keyboard_Custom34}, - {KeyboardKey.BrowserHome, LedId.Keyboard_Custom35}, - {KeyboardKey.VolumeMute, LedId.Keyboard_MediaMute}, - {KeyboardKey.VolumeDown, LedId.Keyboard_MediaVolumeDown}, - {KeyboardKey.VolumeUp, LedId.Keyboard_MediaVolumeUp}, - {KeyboardKey.MediaNextTrack, LedId.Keyboard_MediaNextTrack}, - {KeyboardKey.MediaPreviousTrack, LedId.Keyboard_MediaPreviousTrack}, - {KeyboardKey.MediaStop, LedId.Keyboard_MediaStop}, - {KeyboardKey.MediaPlayPause, LedId.Keyboard_MediaPlay}, - {KeyboardKey.LaunchMail, LedId.Keyboard_Custom36}, - {KeyboardKey.SelectMedia, LedId.Keyboard_Custom37}, - {KeyboardKey.LaunchApplication1, LedId.Keyboard_Custom38}, - {KeyboardKey.LaunchApplication2, LedId.Keyboard_Custom39}, - {KeyboardKey.OemSemicolon, LedId.Keyboard_SemicolonAndColon}, - {KeyboardKey.OemPlus, LedId.Keyboard_EqualsAndPlus}, - {KeyboardKey.OemMinus, LedId.Keyboard_MinusAndUnderscore}, - {KeyboardKey.OemComma, LedId.Keyboard_CommaAndLessThan}, - {KeyboardKey.OemPeriod, LedId.Keyboard_PeriodAndBiggerThan}, - {KeyboardKey.OemQuestion, LedId.Keyboard_SlashAndQuestionMark}, - {KeyboardKey.OemTilde, LedId.Keyboard_GraveAccentAndTilde}, - {KeyboardKey.AbntC1, LedId.Keyboard_Custom40}, - {KeyboardKey.AbntC2, LedId.Keyboard_Custom41}, - {KeyboardKey.OemOpenBrackets, LedId.Keyboard_BracketLeft}, - {KeyboardKey.OemPipe, LedId.Keyboard_Backslash}, - {KeyboardKey.OemCloseBrackets, LedId.Keyboard_BracketRight}, - {KeyboardKey.OemQuotes, LedId.Keyboard_ApostropheAndDoubleQuote}, - {KeyboardKey.OemBackslash, LedId.Keyboard_NonUsBackslash}, - {KeyboardKey.ImeProcessed, LedId.Keyboard_Custom43}, - {KeyboardKey.System, LedId.Keyboard_Custom44}, - {KeyboardKey.OemAttn, LedId.Keyboard_Custom45}, - {KeyboardKey.OemFinish, LedId.Keyboard_Custom46}, - {KeyboardKey.OemCopy, LedId.Keyboard_Custom47}, - {KeyboardKey.OemAuto, LedId.Keyboard_Custom48}, - {KeyboardKey.OemEnlw, LedId.Keyboard_Custom49}, - {KeyboardKey.OemBackTab, LedId.Keyboard_Custom50}, - {KeyboardKey.Attn, LedId.Keyboard_Custom51}, - {KeyboardKey.CrSel, LedId.Keyboard_Custom52}, - {KeyboardKey.ExSel, LedId.Keyboard_Custom53}, - {KeyboardKey.EraseEof, LedId.Keyboard_Custom54}, - {KeyboardKey.Play, LedId.Keyboard_MediaPlay}, - {KeyboardKey.Zoom, LedId.Keyboard_Custom55}, - {KeyboardKey.NoName, LedId.Keyboard_Custom56}, - {KeyboardKey.Pa1, LedId.Keyboard_Custom57}, - {KeyboardKey.OemClear, LedId.Keyboard_Custom58}, - {KeyboardKey.DeadCharProcessed, LedId.Keyboard_Custom59}, - {KeyboardKey.NumPadEnter, LedId.Keyboard_NumEnter}, - {KeyboardKey.NumPadDecimal, LedId.Keyboard_NumPeriodAndDelete}, - {KeyboardKey.NumPadDivide, LedId.Keyboard_NumSlash}, - {KeyboardKey.NumPadMultiply, LedId.Keyboard_NumAsterisk}, - {KeyboardKey.NumPadSubtract, LedId.Keyboard_NumMinus}, - {KeyboardKey.NumPadAdd, LedId.Keyboard_NumPlus}, - }; - + ledId = LedIdFromKeyboardKey(key); + return ledId != LedId.Invalid; + } + /// - /// A dictionary of mappings between and + /// Tries to convert a to a . /// - public static readonly Dictionary MouseButtonLedIdMap = new() + public static bool TryGetLedIdFromMouseButton(MouseButton button, out LedId ledId) { - {MouseButton.Left, LedId.Mouse1}, - {MouseButton.Middle, LedId.Mouse2}, - {MouseButton.Right, LedId.Mouse3}, - {MouseButton.Button4, LedId.Mouse4}, - {MouseButton.Button5, LedId.Mouse5} - }; + ledId = LedIdFromMouseButton(button); + return ledId != LedId.Invalid; + } + + /// + /// Converts a to a . + /// + public static LedId LedIdFromKeyboardKey(KeyboardKey key) + { + return key switch + { + KeyboardKey.None => LedId.Keyboard_Custom1, + KeyboardKey.Backspace => LedId.Keyboard_Backspace, + KeyboardKey.Tab => LedId.Keyboard_Tab, + KeyboardKey.Clear => LedId.Keyboard_Custom4, + KeyboardKey.Enter => LedId.Keyboard_Enter, + KeyboardKey.PauseBreak => LedId.Keyboard_PauseBreak, + KeyboardKey.CapsLock => LedId.Keyboard_CapsLock, + KeyboardKey.Escape => LedId.Keyboard_Escape, + KeyboardKey.Space => LedId.Keyboard_Space, + KeyboardKey.PageUp => LedId.Keyboard_PageUp, + KeyboardKey.PageDown => LedId.Keyboard_PageDown, + KeyboardKey.End => LedId.Keyboard_End, + KeyboardKey.Home => LedId.Keyboard_Home, + KeyboardKey.ArrowLeft => LedId.Keyboard_ArrowLeft, + KeyboardKey.ArrowUp => LedId.Keyboard_ArrowUp, + KeyboardKey.ArrowRight => LedId.Keyboard_ArrowRight, + KeyboardKey.ArrowDown => LedId.Keyboard_ArrowDown, + KeyboardKey.PrintScreen => LedId.Keyboard_PrintScreen, + KeyboardKey.Insert => LedId.Keyboard_Insert, + KeyboardKey.Delete => LedId.Keyboard_Delete, + KeyboardKey.D0 => LedId.Keyboard_0, + KeyboardKey.D1 => LedId.Keyboard_1, + KeyboardKey.D2 => LedId.Keyboard_2, + KeyboardKey.D3 => LedId.Keyboard_3, + KeyboardKey.D4 => LedId.Keyboard_4, + KeyboardKey.D5 => LedId.Keyboard_5, + KeyboardKey.D6 => LedId.Keyboard_6, + KeyboardKey.D7 => LedId.Keyboard_7, + KeyboardKey.D8 => LedId.Keyboard_8, + KeyboardKey.D9 => LedId.Keyboard_9, + KeyboardKey.A => LedId.Keyboard_A, + KeyboardKey.B => LedId.Keyboard_B, + KeyboardKey.C => LedId.Keyboard_C, + KeyboardKey.D => LedId.Keyboard_D, + KeyboardKey.E => LedId.Keyboard_E, + KeyboardKey.F => LedId.Keyboard_F, + KeyboardKey.G => LedId.Keyboard_G, + KeyboardKey.H => LedId.Keyboard_H, + KeyboardKey.I => LedId.Keyboard_I, + KeyboardKey.J => LedId.Keyboard_J, + KeyboardKey.K => LedId.Keyboard_K, + KeyboardKey.L => LedId.Keyboard_L, + KeyboardKey.M => LedId.Keyboard_M, + KeyboardKey.N => LedId.Keyboard_N, + KeyboardKey.O => LedId.Keyboard_O, + KeyboardKey.P => LedId.Keyboard_P, + KeyboardKey.Q => LedId.Keyboard_Q, + KeyboardKey.R => LedId.Keyboard_R, + KeyboardKey.S => LedId.Keyboard_S, + KeyboardKey.T => LedId.Keyboard_T, + KeyboardKey.U => LedId.Keyboard_U, + KeyboardKey.V => LedId.Keyboard_V, + KeyboardKey.W => LedId.Keyboard_W, + KeyboardKey.X => LedId.Keyboard_X, + KeyboardKey.Y => LedId.Keyboard_Y, + KeyboardKey.Z => LedId.Keyboard_Z, + KeyboardKey.LeftWin => LedId.Keyboard_LeftGui, + KeyboardKey.RightWin => LedId.Keyboard_RightGui, + KeyboardKey.Application => LedId.Keyboard_Application, + KeyboardKey.Sleep => LedId.Keyboard_Custom16, + KeyboardKey.NumPad0 => LedId.Keyboard_Num0, + KeyboardKey.NumPad1 => LedId.Keyboard_Num1, + KeyboardKey.NumPad2 => LedId.Keyboard_Num2, + KeyboardKey.NumPad3 => LedId.Keyboard_Num3, + KeyboardKey.NumPad4 => LedId.Keyboard_Num4, + KeyboardKey.NumPad5 => LedId.Keyboard_Num5, + KeyboardKey.NumPad6 => LedId.Keyboard_Num6, + KeyboardKey.NumPad7 => LedId.Keyboard_Num7, + KeyboardKey.NumPad8 => LedId.Keyboard_Num8, + KeyboardKey.NumPad9 => LedId.Keyboard_Num9, + KeyboardKey.NumPadMultiply => LedId.Keyboard_NumAsterisk, + KeyboardKey.NumPadAdd => LedId.Keyboard_NumPlus, + KeyboardKey.NumPadSeparator => LedId.Keyboard_NumEnter, + KeyboardKey.NumPadSubtract => LedId.Keyboard_NumMinus, + KeyboardKey.NumPadDecimal => LedId.Keyboard_NumPeriodAndDelete, + KeyboardKey.NumPadDivide => LedId.Keyboard_NumSlash, + KeyboardKey.F1 => LedId.Keyboard_F1, + KeyboardKey.F2 => LedId.Keyboard_F2, + KeyboardKey.F3 => LedId.Keyboard_F3, + KeyboardKey.F4 => LedId.Keyboard_F4, + KeyboardKey.F5 => LedId.Keyboard_F5, + KeyboardKey.F6 => LedId.Keyboard_F6, + KeyboardKey.F7 => LedId.Keyboard_F7, + KeyboardKey.F8 => LedId.Keyboard_F8, + KeyboardKey.F9 => LedId.Keyboard_F9, + KeyboardKey.F10 => LedId.Keyboard_F10, + KeyboardKey.F11 => LedId.Keyboard_F11, + KeyboardKey.F12 => LedId.Keyboard_F12, + KeyboardKey.F13 => LedId.Keyboard_Custom17, + KeyboardKey.F14 => LedId.Keyboard_Custom18, + KeyboardKey.F15 => LedId.Keyboard_Custom19, + KeyboardKey.F16 => LedId.Keyboard_Custom20, + KeyboardKey.F17 => LedId.Keyboard_Custom21, + KeyboardKey.F18 => LedId.Keyboard_Custom22, + KeyboardKey.F19 => LedId.Keyboard_Custom23, + KeyboardKey.F20 => LedId.Keyboard_Custom24, + KeyboardKey.F21 => LedId.Keyboard_Custom25, + KeyboardKey.F22 => LedId.Keyboard_Custom26, + KeyboardKey.F23 => LedId.Keyboard_Custom27, + KeyboardKey.F24 => LedId.Keyboard_Custom28, + KeyboardKey.NumLock => LedId.Keyboard_NumLock, + KeyboardKey.ScrollLock => LedId.Keyboard_ScrollLock, + KeyboardKey.LeftShift => LedId.Keyboard_LeftShift, + KeyboardKey.RightShift => LedId.Keyboard_RightShift, + KeyboardKey.LeftCtrl => LedId.Keyboard_LeftCtrl, + KeyboardKey.RightCtrl => LedId.Keyboard_RightCtrl, + KeyboardKey.LeftAlt => LedId.Keyboard_LeftAlt, + KeyboardKey.RightAlt => LedId.Keyboard_RightAlt, + KeyboardKey.BrowserBack => LedId.Keyboard_Custom29, + KeyboardKey.BrowserForward => LedId.Keyboard_Custom30, + KeyboardKey.BrowserRefresh => LedId.Keyboard_Custom31, + KeyboardKey.BrowserStop => LedId.Keyboard_Custom32, + KeyboardKey.BrowserSearch => LedId.Keyboard_Custom33, + KeyboardKey.BrowserFavorites => LedId.Keyboard_Custom34, + KeyboardKey.BrowserHome => LedId.Keyboard_Custom35, + KeyboardKey.VolumeMute => LedId.Keyboard_MediaMute, + KeyboardKey.VolumeDown => LedId.Keyboard_MediaVolumeDown, + KeyboardKey.VolumeUp => LedId.Keyboard_MediaVolumeUp, + KeyboardKey.MediaNextTrack => LedId.Keyboard_MediaNextTrack, + KeyboardKey.MediaPreviousTrack => LedId.Keyboard_MediaPreviousTrack, + KeyboardKey.MediaStop => LedId.Keyboard_MediaStop, + KeyboardKey.MediaPlayPause => LedId.Keyboard_MediaPlay, + KeyboardKey.LaunchMail => LedId.Keyboard_Custom36, + KeyboardKey.SelectMedia => LedId.Keyboard_Custom37, + KeyboardKey.FileBrowser => LedId.Keyboard_Custom38, + KeyboardKey.Calculator => LedId.Keyboard_Custom39, + KeyboardKey.OemSemicolon => LedId.Keyboard_SemicolonAndColon, + KeyboardKey.OemPlus => LedId.Keyboard_EqualsAndPlus, + KeyboardKey.OemMinus => LedId.Keyboard_MinusAndUnderscore, + KeyboardKey.OemComma => LedId.Keyboard_CommaAndLessThan, + KeyboardKey.OemPeriod => LedId.Keyboard_PeriodAndBiggerThan, + KeyboardKey.OemQuestion => LedId.Keyboard_SlashAndQuestionMark, + KeyboardKey.OemTilde => LedId.Keyboard_GraveAccentAndTilde, + KeyboardKey.OemOpenBrackets => LedId.Keyboard_BracketLeft, + KeyboardKey.OemPipe => LedId.Keyboard_Backslash, + KeyboardKey.OemCloseBrackets => LedId.Keyboard_BracketRight, + KeyboardKey.OemQuotes => LedId.Keyboard_ApostropheAndDoubleQuote, + KeyboardKey.OemBackslash => LedId.Keyboard_NonUsBackslash, + KeyboardKey.NumPadEnter => LedId.Keyboard_NumEnter, + _ => LedId.Invalid + }; + } + + /// + /// Converts a to a + /// + public static LedId LedIdFromMouseButton(MouseButton button) + { + return button switch + { + MouseButton.Left => LedId.Mouse1, + MouseButton.Middle => LedId.Mouse2, + MouseButton.Right => LedId.Mouse3, + MouseButton.Button4 => LedId.Mouse4, + MouseButton.Button5 => LedId.Mouse5, + _ => LedId.Invalid + }; + } } \ No newline at end of file diff --git a/src/Artemis.Core/Services/Input/InputService.cs b/src/Artemis.Core/Services/Input/InputService.cs index fa6c983f4..a7502c6ef 100644 --- a/src/Artemis.Core/Services/Input/InputService.cs +++ b/src/Artemis.Core/Services/Input/InputService.cs @@ -268,7 +268,7 @@ internal class InputService : IInputService return; // Get the LED - bool foundLedId = InputKeyUtilities.KeyboardKeyLedIdMap.TryGetValue(e.Key, out LedId ledId); + bool foundLedId = InputKeyUtilities.TryGetLedIdFromKeyboardKey(e.Key, out LedId ledId); // If we find a backslash but the keyboard is ISO, we need to use the non-US backslash. // The scancode is the same, but the LED ID is different if (ledId == LedId.Keyboard_Backslash && e.Device?.PhysicalLayout == KeyboardLayoutType.ISO) @@ -355,7 +355,7 @@ internal class InputService : IInputService else modifiers &= ~KeyboardModifierKey.Shift; } - else if (key == KeyboardKey.LWin || key == KeyboardKey.RWin) + else if (key == KeyboardKey.LeftWin || key == KeyboardKey.RightWin) { if (isDown) modifiers |= KeyboardModifierKey.Windows; @@ -394,7 +394,7 @@ internal class InputService : IInputService private void InputProviderOnMouseButtonDataReceived(object? sender, InputProviderMouseButtonEventArgs e) { - bool foundLedId = InputKeyUtilities.MouseButtonLedIdMap.TryGetValue(e.Button, out LedId ledId); + bool foundLedId = InputKeyUtilities.TryGetLedIdFromMouseButton(e.Button, out LedId ledId); ArtemisLed? led = null; if (foundLedId && e.Device != null) led = e.Device.Leds.FirstOrDefault(l => l.RgbLed.Id == ledId); diff --git a/src/Artemis.UI.Linux/Utilities/InputUtilities.cs b/src/Artemis.UI.Linux/Utilities/InputUtilities.cs index 44017e602..f898ebb1e 100644 --- a/src/Artemis.UI.Linux/Utilities/InputUtilities.cs +++ b/src/Artemis.UI.Linux/Utilities/InputUtilities.cs @@ -23,7 +23,7 @@ public static class InputUtilities LinuxKeyboardKeyCodes.KEY_0 => KeyboardKey.D0, LinuxKeyboardKeyCodes.KEY_MINUS => KeyboardKey.OemMinus, LinuxKeyboardKeyCodes.KEY_EQUAL => KeyboardKey.OemPlus, - LinuxKeyboardKeyCodes.KEY_BACKSPACE => KeyboardKey.Back, + LinuxKeyboardKeyCodes.KEY_BACKSPACE => KeyboardKey.Backspace, LinuxKeyboardKeyCodes.KEY_TAB => KeyboardKey.Tab, LinuxKeyboardKeyCodes.KEY_Q => KeyboardKey.Q, LinuxKeyboardKeyCodes.KEY_W => KeyboardKey.W, @@ -79,20 +79,20 @@ public static class InputUtilities LinuxKeyboardKeyCodes.KEY_F9 => KeyboardKey.F9, LinuxKeyboardKeyCodes.KEY_F10 => KeyboardKey.F10, LinuxKeyboardKeyCodes.KEY_NUMLOCK => KeyboardKey.NumLock, - LinuxKeyboardKeyCodes.KEY_SCROLLLOCK => KeyboardKey.Scroll, + LinuxKeyboardKeyCodes.KEY_SCROLLLOCK => KeyboardKey.ScrollLock, LinuxKeyboardKeyCodes.KEY_KP7 => KeyboardKey.NumPad7, LinuxKeyboardKeyCodes.KEY_KP8 => KeyboardKey.NumPad8, LinuxKeyboardKeyCodes.KEY_KP9 => KeyboardKey.NumPad9, - LinuxKeyboardKeyCodes.KEY_KPMINUS => KeyboardKey.Subtract, + LinuxKeyboardKeyCodes.KEY_KPMINUS => KeyboardKey.NumPadSubtract, LinuxKeyboardKeyCodes.KEY_KP4 => KeyboardKey.NumPad4, LinuxKeyboardKeyCodes.KEY_KP5 => KeyboardKey.NumPad5, LinuxKeyboardKeyCodes.KEY_KP6 => KeyboardKey.NumPad6, - LinuxKeyboardKeyCodes.KEY_KPPLUS => KeyboardKey.Add, + LinuxKeyboardKeyCodes.KEY_KPPLUS => KeyboardKey.NumPadAdd, LinuxKeyboardKeyCodes.KEY_KP1 => KeyboardKey.NumPad1, LinuxKeyboardKeyCodes.KEY_KP2 => KeyboardKey.NumPad2, LinuxKeyboardKeyCodes.KEY_KP3 => KeyboardKey.NumPad3, LinuxKeyboardKeyCodes.KEY_KP0 => KeyboardKey.NumPad0, - LinuxKeyboardKeyCodes.KEY_KPDOT => KeyboardKey.Decimal, + LinuxKeyboardKeyCodes.KEY_KPDOT => KeyboardKey.NumPadDecimal, // LinuxKeyboardKeyCodes.KEY_ZENKAKUHANKAKU => expr, // LinuxKeyboardKeyCodes.KEY_102ND => expr, LinuxKeyboardKeyCodes.KEY_F11 => KeyboardKey.F11, @@ -106,17 +106,16 @@ public static class InputUtilities // LinuxKeyboardKeyCodes.KEY_KPJPCOMMA => expr, LinuxKeyboardKeyCodes.KEY_KPENTER => KeyboardKey.NumPadEnter, LinuxKeyboardKeyCodes.KEY_RIGHTCTRL => KeyboardKey.RightCtrl, - LinuxKeyboardKeyCodes.KEY_KPSLASH => KeyboardKey.Divide, + LinuxKeyboardKeyCodes.KEY_KPSLASH => KeyboardKey.NumPadDivide, LinuxKeyboardKeyCodes.KEY_SYSRQ => KeyboardKey.PrintScreen, LinuxKeyboardKeyCodes.KEY_RIGHTALT => KeyboardKey.RightAlt, - LinuxKeyboardKeyCodes.KEY_LINEFEED => KeyboardKey.LineFeed, LinuxKeyboardKeyCodes.KEY_HOME => KeyboardKey.Home, - LinuxKeyboardKeyCodes.KEY_UP => KeyboardKey.Up, + LinuxKeyboardKeyCodes.KEY_UP => KeyboardKey.ArrowUp, LinuxKeyboardKeyCodes.KEY_PAGEUP => KeyboardKey.PageUp, - LinuxKeyboardKeyCodes.KEY_LEFT => KeyboardKey.Left, - LinuxKeyboardKeyCodes.KEY_RIGHT => KeyboardKey.Right, + LinuxKeyboardKeyCodes.KEY_LEFT => KeyboardKey.ArrowLeft, + LinuxKeyboardKeyCodes.KEY_RIGHT => KeyboardKey.ArrowRight, LinuxKeyboardKeyCodes.KEY_END => KeyboardKey.End, - LinuxKeyboardKeyCodes.KEY_DOWN => KeyboardKey.Down, + LinuxKeyboardKeyCodes.KEY_DOWN => KeyboardKey.ArrowDown, LinuxKeyboardKeyCodes.KEY_PAGEDOWN => KeyboardKey.PageDown, LinuxKeyboardKeyCodes.KEY_INSERT => KeyboardKey.Insert, LinuxKeyboardKeyCodes.KEY_DELETE => KeyboardKey.Delete, @@ -127,15 +126,15 @@ public static class InputUtilities // LinuxKeyboardKeyCodes.KEY_POWER => KeyboardKey.power, LinuxKeyboardKeyCodes.KEY_KPEQUAL => KeyboardKey.NumPadEnter, //todo: ? // LinuxKeyboardKeyCodes.KEY_KPPLUSMINUS => KeyboardKey.numpad, - LinuxKeyboardKeyCodes.KEY_PAUSE => KeyboardKey.Pause, + LinuxKeyboardKeyCodes.KEY_PAUSE => KeyboardKey.PauseBreak, // LinuxKeyboardKeyCodes.KEY_SCALE => KeyboardKey.scal, // LinuxKeyboardKeyCodes.KEY_KPCOMMA => KeyboardKey.ke, // LinuxKeyboardKeyCodes.KEY_HANGEUL => expr, // LinuxKeyboardKeyCodes.KEY_HANJA => expr, // LinuxKeyboardKeyCodes.KEY_YEN => expr, - LinuxKeyboardKeyCodes.KEY_LEFTMETA => KeyboardKey.LWin, - LinuxKeyboardKeyCodes.KEY_RIGHTMETA => KeyboardKey.RWin, - LinuxKeyboardKeyCodes.KEY_COMPOSE => KeyboardKey.Apps, + LinuxKeyboardKeyCodes.KEY_LEFTMETA => KeyboardKey.LeftWin, + LinuxKeyboardKeyCodes.KEY_RIGHTMETA => KeyboardKey.RightWin, + LinuxKeyboardKeyCodes.KEY_COMPOSE => KeyboardKey.Application, LinuxKeyboardKeyCodes.KEY_STOP => KeyboardKey.MediaStop, // LinuxKeyboardKeyCodes.KEY_AGAIN => , // LinuxKeyboardKeyCodes.KEY_PROPS => expr, diff --git a/src/Artemis.UI.Windows/Providers/Input/WindowsInputProvider.cs b/src/Artemis.UI.Windows/Providers/Input/WindowsInputProvider.cs index 1adc2b292..2c375b3e4 100644 --- a/src/Artemis.UI.Windows/Providers/Input/WindowsInputProvider.cs +++ b/src/Artemis.UI.Windows/Providers/Input/WindowsInputProvider.cs @@ -105,7 +105,7 @@ public class WindowsInputProvider : InputProvider } catch (Exception e) { - _logger.Error("Failed to convert virtual key to Artemis key, please share this log with the developers. ScanCode: {scanCode} VK: {virtualKey} Flags: {flags}", + _logger.Error(e, "Failed to convert virtual key to Artemis key, please share this log with the developers. ScanCode: {scanCode} VK: {virtualKey} Flags: {flags}", keyboardData.Keyboard.ScanCode, keyboardData.Keyboard.VirutalKey, keyboardData.Keyboard.Flags); } // Debug.WriteLine($"VK: {key} ({keyboardData.Keyboard.VirutalKey}), Flags: {keyboardData.Keyboard.Flags}, Scan code: {keyboardData.Keyboard.ScanCode}"); @@ -130,9 +130,7 @@ public class WindowsInputProvider : InputProvider _logger.Warning(e, "Failed to retrieve input device by its identifier"); } - bool isDown = keyboardData.Keyboard.Flags != RawKeyboardFlags.Up && - keyboardData.Keyboard.Flags != (RawKeyboardFlags.Up | RawKeyboardFlags.KeyE0) && - keyboardData.Keyboard.Flags != (RawKeyboardFlags.Up | RawKeyboardFlags.KeyE1); + bool isDown = (keyboardData.Keyboard.Flags & RawKeyboardFlags.Up) == 0; OnKeyboardDataReceived(device, key, isDown); UpdateToggleStatus(); @@ -143,7 +141,7 @@ public class WindowsInputProvider : InputProvider OnKeyboardToggleStatusReceived(new KeyboardToggleStatus( InputUtilities.IsKeyToggled(KeyboardKey.NumLock), InputUtilities.IsKeyToggled(KeyboardKey.CapsLock), - InputUtilities.IsKeyToggled(KeyboardKey.Scroll) + InputUtilities.IsKeyToggled(KeyboardKey.ScrollLock) )); } @@ -201,39 +199,24 @@ public class WindowsInputProvider : InputProvider } // Button presses - MouseButton button = MouseButton.Left; - bool isDown = false; - - // Left - if (DetermineMouseButton(mouseData, RawMouseButtonFlags.LeftButtonDown, RawMouseButtonFlags.LeftButtonUp, ref isDown)) - button = MouseButton.Left; - // Middle - else if (DetermineMouseButton(mouseData, RawMouseButtonFlags.MiddleButtonDown, RawMouseButtonFlags.MiddleButtonUp, ref isDown)) - button = MouseButton.Middle; - // Right - else if (DetermineMouseButton(mouseData, RawMouseButtonFlags.RightButtonDown, RawMouseButtonFlags.RightButtonUp, ref isDown)) - button = MouseButton.Right; - // Button 4 - else if (DetermineMouseButton(mouseData, RawMouseButtonFlags.Button4Down, RawMouseButtonFlags.Button4Up, ref isDown)) - button = MouseButton.Button4; - else if (DetermineMouseButton(mouseData, RawMouseButtonFlags.Button5Down, RawMouseButtonFlags.Button5Up, ref isDown)) - button = MouseButton.Button5; + (MouseButton button, bool isDown) = mouseData.Mouse.Buttons switch + { + RawMouseButtonFlags.LeftButtonDown => (MouseButton.Left, true), + RawMouseButtonFlags.LeftButtonUp => (MouseButton.Left, false), + RawMouseButtonFlags.MiddleButtonDown => (MouseButton.Middle, true), + RawMouseButtonFlags.MiddleButtonUp => (MouseButton.Middle, false), + RawMouseButtonFlags.RightButtonDown => (MouseButton.Right, true), + RawMouseButtonFlags.RightButtonUp => (MouseButton.Right, false), + RawMouseButtonFlags.Button4Down => (MouseButton.Button4, true), + RawMouseButtonFlags.Button4Up => (MouseButton.Button4, false), + RawMouseButtonFlags.Button5Down => (MouseButton.Button5, true), + RawMouseButtonFlags.Button5Up => (MouseButton.Button5, false), + _ => (MouseButton.Left, false) + }; OnMouseButtonDataReceived(device, button, isDown); } - private bool DetermineMouseButton(RawInputMouseData data, RawMouseButtonFlags downButton, RawMouseButtonFlags upButton, ref bool isDown) - { - if (data.Mouse.Buttons == downButton || data.Mouse.Buttons == upButton) - { - isDown = data.Mouse.Buttons == downButton; - return true; - } - - isDown = false; - return false; - } - #endregion #region Native diff --git a/src/Artemis.UI.Windows/Utilities/InputUtilities.cs b/src/Artemis.UI.Windows/Utilities/InputUtilities.cs index d6b5a2fc6..663ec341e 100644 --- a/src/Artemis.UI.Windows/Utilities/InputUtilities.cs +++ b/src/Artemis.UI.Windows/Utilities/InputUtilities.cs @@ -14,10 +14,7 @@ public static class InputUtilities { [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] private static extern short GetKeyState(int keyCode); - - [DllImport("user32.dll")] - private static extern uint MapVirtualKey(uint uCode, MapVirtualKeyMapTypes uMapType); - + [Flags] private enum KeyStates { @@ -25,48 +22,7 @@ public static class InputUtilities Down = 1, Toggled = 2 } - - /// - /// The set of valid MapTypes used in MapVirtualKey - /// - private enum MapVirtualKeyMapTypes : uint - { - /// - /// uCode is a virtual-key code and is translated into a scan code. - /// If it is a virtual-key code that does not distinguish between left- and - /// right-hand keys, the left-hand scan code is returned. - /// If there is no translation, the function returns 0. - /// - MAPVK_VK_TO_VSC = 0x00, - /// - /// uCode is a scan code and is translated into a virtual-key code that - /// does not distinguish between left- and right-hand keys. If there is no - /// translation, the function returns 0. - /// - MAPVK_VSC_TO_VK = 0x01, - - /// - /// uCode is a virtual-key code and is translated into an unshifted - /// character value in the low-order word of the return value. Dead keys (diacritics) - /// are indicated by setting the top bit of the return value. If there is no - /// translation, the function returns 0. - /// - MAPVK_VK_TO_CHAR = 0x02, - - /// - /// Windows NT/2000/XP: uCode is a scan code and is translated into a - /// virtual-key code that distinguishes between left- and right-hand keys. If - /// there is no translation, the function returns 0. - /// - MAPVK_VSC_TO_VK_EX = 0x03, - - /// - /// Not currently documented - /// - MAPVK_VK_TO_VSC_EX = 0x04 - } - private readonly record struct KeystrokeInfo(int ScanCode, int VirtualKey, bool IsE0, bool IsE1); /// @@ -82,6 +38,12 @@ public static class InputUtilities IsE1 = (flags & 4) != 0 }; + if (info.ScanCode == 0) + { + // These keys are media or browser keys, they don't have a scan code + return KeyFromVirtualKey(info.VirtualKey); + } + return info switch { // Fake keys, usually escape sequences @@ -90,8 +52,8 @@ public static class InputUtilities { ScanCode: 56, VirtualKey: NativeMethods.VK_CONTROL, IsE0: true } => KeyboardKey.None, { ScanCode: 28, IsE0: true } => KeyboardKey.NumPadEnter, - { ScanCode: 28, IsE0: false } => KeyboardKey.Return, - { ScanCode: 29, IsE1: true } => KeyboardKey.Pause, + { ScanCode: 28, IsE0: false } => KeyboardKey.Enter, + { ScanCode: 29, IsE1: true } => KeyboardKey.PauseBreak, { ScanCode: 29, IsE0: true } => KeyboardKey.RightCtrl, { ScanCode: 29, IsE0: false } => KeyboardKey.LeftCtrl, { ScanCode: 56, IsE0: true } => KeyboardKey.RightAlt, @@ -102,19 +64,19 @@ public static class InputUtilities { ScanCode: 55, IsE0: false } => KeyboardKey.NumPadMultiply, { ScanCode: 71, IsE0: true } => KeyboardKey.Home, { ScanCode: 71, IsE0: false } => KeyboardKey.NumPad7, - { ScanCode: 72, IsE0: true } => KeyboardKey.Up, + { ScanCode: 72, IsE0: true } => KeyboardKey.ArrowUp, { ScanCode: 72, IsE0: false } => KeyboardKey.NumPad8, { ScanCode: 73, IsE0: true } => KeyboardKey.PageUp, { ScanCode: 73, IsE0: false } => KeyboardKey.NumPad9, - { ScanCode: 75, IsE0: true } => KeyboardKey.Left, + { ScanCode: 75, IsE0: true } => KeyboardKey.ArrowLeft, { ScanCode: 75, IsE0: false } => KeyboardKey.NumPad4, { ScanCode: 76, IsE0: true } => KeyboardKey.Clear, { ScanCode: 76, IsE0: false } => KeyboardKey.NumPad5, - { ScanCode: 77, IsE0: true } => KeyboardKey.Right, + { ScanCode: 77, IsE0: true } => KeyboardKey.ArrowRight, { ScanCode: 77, IsE0: false } => KeyboardKey.NumPad6, { ScanCode: 79, IsE0: true } => KeyboardKey.End, { ScanCode: 79, IsE0: false } => KeyboardKey.NumPad1, - { ScanCode: 80, IsE0: true } => KeyboardKey.Down, + { ScanCode: 80, IsE0: true } => KeyboardKey.ArrowDown, { ScanCode: 80, IsE0: false } => KeyboardKey.NumPad2, { ScanCode: 81, IsE0: true } => KeyboardKey.PageDown, { ScanCode: 81, IsE0: false } => KeyboardKey.NumPad3, @@ -125,10 +87,6 @@ public static class InputUtilities _ => KeyFromScanCode((uint)info.ScanCode), }; } - public static bool IsKeyDown(KeyboardKey key) - { - return KeyStates.Down == (GetKeyState(key) & KeyStates.Down); - } public static bool IsKeyToggled(KeyboardKey key) { @@ -160,35 +118,25 @@ public static class InputUtilities { return virtualKey switch { - NativeMethods.VK_CANCEL => KeyboardKey.Cancel, - NativeMethods.VK_BACK => KeyboardKey.Back, + NativeMethods.VK_BACK => KeyboardKey.Backspace, NativeMethods.VK_TAB => KeyboardKey.Tab, NativeMethods.VK_CLEAR => KeyboardKey.Clear, - NativeMethods.VK_RETURN => KeyboardKey.Return, - NativeMethods.VK_PAUSE => KeyboardKey.Pause, + NativeMethods.VK_RETURN => KeyboardKey.Enter, + NativeMethods.VK_PAUSE => KeyboardKey.PauseBreak, NativeMethods.VK_CAPSLOCK => KeyboardKey.CapsLock, - NativeMethods.VK_JUNJA => KeyboardKey.JunjaMode, - NativeMethods.VK_FINAL => KeyboardKey.FinalMode, NativeMethods.VK_ESCAPE => KeyboardKey.Escape, - NativeMethods.VK_CONVERT => KeyboardKey.ImeConvert, - NativeMethods.VK_NONCONVERT => KeyboardKey.ImeNonConvert, - NativeMethods.VK_ACCEPT => KeyboardKey.ImeAccept, - NativeMethods.VK_MODECHANGE => KeyboardKey.ImeModeChange, NativeMethods.VK_SPACE => KeyboardKey.Space, NativeMethods.VK_PRIOR => KeyboardKey.PageUp, NativeMethods.VK_NEXT => KeyboardKey.PageDown, NativeMethods.VK_END => KeyboardKey.End, NativeMethods.VK_HOME => KeyboardKey.Home, - NativeMethods.VK_LEFT => KeyboardKey.Left, - NativeMethods.VK_UP => KeyboardKey.Up, - NativeMethods.VK_RIGHT => KeyboardKey.Right, - NativeMethods.VK_DOWN => KeyboardKey.Down, - NativeMethods.VK_SELECT => KeyboardKey.Select, - NativeMethods.VK_PRINT => KeyboardKey.Print, - NativeMethods.VK_EXECUTE => KeyboardKey.Execute, + NativeMethods.VK_LEFT => KeyboardKey.ArrowLeft, + NativeMethods.VK_UP => KeyboardKey.ArrowUp, + NativeMethods.VK_RIGHT => KeyboardKey.ArrowRight, + NativeMethods.VK_DOWN => KeyboardKey.ArrowDown, + NativeMethods.VK_PRINT => KeyboardKey.PrintScreen, NativeMethods.VK_INSERT => KeyboardKey.Insert, NativeMethods.VK_DELETE => KeyboardKey.Delete, - NativeMethods.VK_HELP => KeyboardKey.Help, NativeMethods.VK_0 => KeyboardKey.D0, NativeMethods.VK_1 => KeyboardKey.D1, NativeMethods.VK_2 => KeyboardKey.D2, @@ -225,9 +173,9 @@ public static class InputUtilities NativeMethods.VK_X => KeyboardKey.X, NativeMethods.VK_Y => KeyboardKey.Y, NativeMethods.VK_Z => KeyboardKey.Z, - NativeMethods.VK_LWIN => KeyboardKey.LWin, - NativeMethods.VK_RWIN => KeyboardKey.RWin, - NativeMethods.VK_APPS => KeyboardKey.Apps, + NativeMethods.VK_LWIN => KeyboardKey.LeftWin, + NativeMethods.VK_RWIN => KeyboardKey.RightWin, + NativeMethods.VK_APPS => KeyboardKey.Application, NativeMethods.VK_SLEEP => KeyboardKey.Sleep, NativeMethods.VK_NUMPAD0 => KeyboardKey.NumPad0, NativeMethods.VK_NUMPAD1 => KeyboardKey.NumPad1, @@ -239,12 +187,12 @@ public static class InputUtilities NativeMethods.VK_NUMPAD7 => KeyboardKey.NumPad7, NativeMethods.VK_NUMPAD8 => KeyboardKey.NumPad8, NativeMethods.VK_NUMPAD9 => KeyboardKey.NumPad9, - NativeMethods.VK_MULTIPLY => KeyboardKey.Multiply, - NativeMethods.VK_ADD => KeyboardKey.Add, - NativeMethods.VK_SEPARATOR => KeyboardKey.Separator, - NativeMethods.VK_SUBTRACT => KeyboardKey.Subtract, - NativeMethods.VK_DECIMAL => KeyboardKey.Decimal, - NativeMethods.VK_DIVIDE => KeyboardKey.Divide, + NativeMethods.VK_MULTIPLY => KeyboardKey.NumPadMultiply, + NativeMethods.VK_ADD => KeyboardKey.NumPadAdd, + NativeMethods.VK_SEPARATOR => KeyboardKey.NumPadSeparator, + NativeMethods.VK_SUBTRACT => KeyboardKey.NumPadSubtract, + NativeMethods.VK_DECIMAL => KeyboardKey.NumPadDecimal, + NativeMethods.VK_DIVIDE => KeyboardKey.NumPadDivide, NativeMethods.VK_F1 => KeyboardKey.F1, NativeMethods.VK_F2 => KeyboardKey.F2, NativeMethods.VK_F3 => KeyboardKey.F3, @@ -270,7 +218,7 @@ public static class InputUtilities NativeMethods.VK_F23 => KeyboardKey.F23, NativeMethods.VK_F24 => KeyboardKey.F24, NativeMethods.VK_NUMLOCK => KeyboardKey.NumLock, - NativeMethods.VK_SCROLL => KeyboardKey.Scroll, + NativeMethods.VK_SCROLL => KeyboardKey.ScrollLock, NativeMethods.VK_SHIFT => KeyboardKey.LeftShift, NativeMethods.VK_LSHIFT => KeyboardKey.LeftShift, NativeMethods.VK_RSHIFT => KeyboardKey.RightShift, @@ -296,8 +244,8 @@ public static class InputUtilities NativeMethods.VK_MEDIA_PLAY_PAUSE => KeyboardKey.MediaPlayPause, NativeMethods.VK_LAUNCH_MAIL => KeyboardKey.LaunchMail, NativeMethods.VK_LAUNCH_MEDIA_SELECT => KeyboardKey.SelectMedia, - NativeMethods.VK_LAUNCH_APP1 => KeyboardKey.LaunchApplication1, - NativeMethods.VK_LAUNCH_APP2 => KeyboardKey.LaunchApplication2, + NativeMethods.VK_LAUNCH_APP1 => KeyboardKey.FileBrowser, + NativeMethods.VK_LAUNCH_APP2 => KeyboardKey.Calculator, NativeMethods.VK_OEM_1 => KeyboardKey.OemSemicolon, NativeMethods.VK_OEM_PLUS => KeyboardKey.OemPlus, NativeMethods.VK_OEM_COMMA => KeyboardKey.OemComma, @@ -310,22 +258,6 @@ public static class InputUtilities NativeMethods.VK_OEM_6 => KeyboardKey.OemCloseBrackets, NativeMethods.VK_OEM_7 => KeyboardKey.OemQuotes, NativeMethods.VK_OEM_102 => KeyboardKey.OemBackslash, - NativeMethods.VK_PROCESSKEY => KeyboardKey.ImeProcessed, - NativeMethods.VK_OEM_ATTN => KeyboardKey.Attn, - NativeMethods.VK_OEM_FINISH => KeyboardKey.OemFinish, - NativeMethods.VK_OEM_COPY => KeyboardKey.OemCopy, - NativeMethods.VK_OEM_AUTO => KeyboardKey.OemAuto, - NativeMethods.VK_OEM_ENLW => KeyboardKey.OemEnlw, - NativeMethods.VK_OEM_BACKTAB => KeyboardKey.OemBackTab, - NativeMethods.VK_ATTN => KeyboardKey.Attn, - NativeMethods.VK_CRSEL => KeyboardKey.CrSel, - NativeMethods.VK_EXSEL => KeyboardKey.ExSel, - NativeMethods.VK_EREOF => KeyboardKey.EraseEof, - NativeMethods.VK_PLAY => KeyboardKey.Play, - NativeMethods.VK_ZOOM => KeyboardKey.Zoom, - NativeMethods.VK_NONAME => KeyboardKey.NoName, - NativeMethods.VK_PA1 => KeyboardKey.Pa1, - NativeMethods.VK_OEM_CLEAR => KeyboardKey.OemClear, _ => KeyboardKey.None }; } @@ -337,35 +269,25 @@ public static class InputUtilities { return key switch { - KeyboardKey.Cancel => NativeMethods.VK_CANCEL, - KeyboardKey.Back => NativeMethods.VK_BACK, + KeyboardKey.Backspace => NativeMethods.VK_BACK, KeyboardKey.Tab => NativeMethods.VK_TAB, KeyboardKey.Clear => NativeMethods.VK_CLEAR, - KeyboardKey.Return => NativeMethods.VK_RETURN, - KeyboardKey.Pause => NativeMethods.VK_PAUSE, + KeyboardKey.Enter => NativeMethods.VK_RETURN, + KeyboardKey.PauseBreak => NativeMethods.VK_PAUSE, KeyboardKey.CapsLock => NativeMethods.VK_CAPITAL, - KeyboardKey.JunjaMode => NativeMethods.VK_JUNJA, - KeyboardKey.FinalMode => NativeMethods.VK_FINAL, KeyboardKey.Escape => NativeMethods.VK_ESCAPE, - KeyboardKey.ImeConvert => NativeMethods.VK_CONVERT, - KeyboardKey.ImeNonConvert => NativeMethods.VK_NONCONVERT, - KeyboardKey.ImeAccept => NativeMethods.VK_ACCEPT, - KeyboardKey.ImeModeChange => NativeMethods.VK_MODECHANGE, KeyboardKey.Space => NativeMethods.VK_SPACE, - KeyboardKey.Prior => NativeMethods.VK_PRIOR, - KeyboardKey.Next => NativeMethods.VK_NEXT, + KeyboardKey.PageUp => NativeMethods.VK_PRIOR, + KeyboardKey.PageDown => NativeMethods.VK_NEXT, KeyboardKey.End => NativeMethods.VK_END, KeyboardKey.Home => NativeMethods.VK_HOME, - KeyboardKey.Left => NativeMethods.VK_LEFT, - KeyboardKey.Up => NativeMethods.VK_UP, - KeyboardKey.Right => NativeMethods.VK_RIGHT, - KeyboardKey.Down => NativeMethods.VK_DOWN, - KeyboardKey.Select => NativeMethods.VK_SELECT, - KeyboardKey.Print => NativeMethods.VK_PRINT, - KeyboardKey.Execute => NativeMethods.VK_EXECUTE, + KeyboardKey.ArrowLeft => NativeMethods.VK_LEFT, + KeyboardKey.ArrowUp => NativeMethods.VK_UP, + KeyboardKey.ArrowRight => NativeMethods.VK_RIGHT, + KeyboardKey.ArrowDown => NativeMethods.VK_DOWN, + KeyboardKey.PrintScreen => NativeMethods.VK_PRINT, KeyboardKey.Insert => NativeMethods.VK_INSERT, KeyboardKey.Delete => NativeMethods.VK_DELETE, - KeyboardKey.Help => NativeMethods.VK_HELP, KeyboardKey.D0 => NativeMethods.VK_0, KeyboardKey.D1 => NativeMethods.VK_1, KeyboardKey.D2 => NativeMethods.VK_2, @@ -402,9 +324,9 @@ public static class InputUtilities KeyboardKey.X => NativeMethods.VK_X, KeyboardKey.Y => NativeMethods.VK_Y, KeyboardKey.Z => NativeMethods.VK_Z, - KeyboardKey.LWin => NativeMethods.VK_LWIN, - KeyboardKey.RWin => NativeMethods.VK_RWIN, - KeyboardKey.Apps => NativeMethods.VK_APPS, + KeyboardKey.LeftWin => NativeMethods.VK_LWIN, + KeyboardKey.RightWin => NativeMethods.VK_RWIN, + KeyboardKey.Application => NativeMethods.VK_APPS, KeyboardKey.Sleep => NativeMethods.VK_SLEEP, KeyboardKey.NumPad0 => NativeMethods.VK_NUMPAD0, KeyboardKey.NumPad1 => NativeMethods.VK_NUMPAD1, @@ -416,12 +338,12 @@ public static class InputUtilities KeyboardKey.NumPad7 => NativeMethods.VK_NUMPAD7, KeyboardKey.NumPad8 => NativeMethods.VK_NUMPAD8, KeyboardKey.NumPad9 => NativeMethods.VK_NUMPAD9, - KeyboardKey.Multiply => NativeMethods.VK_MULTIPLY, - KeyboardKey.Add => NativeMethods.VK_ADD, - KeyboardKey.Separator => NativeMethods.VK_SEPARATOR, - KeyboardKey.Subtract => NativeMethods.VK_SUBTRACT, - KeyboardKey.Decimal => NativeMethods.VK_DECIMAL, - KeyboardKey.Divide => NativeMethods.VK_DIVIDE, + KeyboardKey.NumPadMultiply => NativeMethods.VK_MULTIPLY, + KeyboardKey.NumPadAdd => NativeMethods.VK_ADD, + KeyboardKey.NumPadSeparator => NativeMethods.VK_SEPARATOR, + KeyboardKey.NumPadSubtract => NativeMethods.VK_SUBTRACT, + KeyboardKey.NumPadDecimal => NativeMethods.VK_DECIMAL, + KeyboardKey.NumPadDivide => NativeMethods.VK_DIVIDE, KeyboardKey.F1 => NativeMethods.VK_F1, KeyboardKey.F2 => NativeMethods.VK_F2, KeyboardKey.F3 => NativeMethods.VK_F3, @@ -447,7 +369,7 @@ public static class InputUtilities KeyboardKey.F23 => NativeMethods.VK_F23, KeyboardKey.F24 => NativeMethods.VK_F24, KeyboardKey.NumLock => NativeMethods.VK_NUMLOCK, - KeyboardKey.Scroll => NativeMethods.VK_SCROLL, + KeyboardKey.ScrollLock => NativeMethods.VK_SCROLL, KeyboardKey.LeftShift => NativeMethods.VK_LSHIFT, KeyboardKey.RightShift => NativeMethods.VK_RSHIFT, KeyboardKey.LeftCtrl => NativeMethods.VK_LCONTROL, @@ -470,8 +392,8 @@ public static class InputUtilities KeyboardKey.MediaPlayPause => NativeMethods.VK_MEDIA_PLAY_PAUSE, KeyboardKey.LaunchMail => NativeMethods.VK_LAUNCH_MAIL, KeyboardKey.SelectMedia => NativeMethods.VK_LAUNCH_MEDIA_SELECT, - KeyboardKey.LaunchApplication1 => NativeMethods.VK_LAUNCH_APP1, - KeyboardKey.LaunchApplication2 => NativeMethods.VK_LAUNCH_APP2, + KeyboardKey.FileBrowser => NativeMethods.VK_LAUNCH_APP1, + KeyboardKey.Calculator => NativeMethods.VK_LAUNCH_APP2, KeyboardKey.OemSemicolon => NativeMethods.VK_OEM_1, KeyboardKey.OemPlus => NativeMethods.VK_OEM_PLUS, KeyboardKey.OemComma => NativeMethods.VK_OEM_COMMA, @@ -484,29 +406,12 @@ public static class InputUtilities KeyboardKey.OemCloseBrackets => NativeMethods.VK_OEM_6, KeyboardKey.OemQuotes => NativeMethods.VK_OEM_7, KeyboardKey.OemBackslash => NativeMethods.VK_OEM_102, - KeyboardKey.ImeProcessed => NativeMethods.VK_PROCESSKEY, - KeyboardKey.OemAttn => NativeMethods.VK_ATTN, - KeyboardKey.OemFinish => NativeMethods.VK_OEM_FINISH, - KeyboardKey.OemCopy => NativeMethods.VK_OEM_COPY, - KeyboardKey.OemAuto => NativeMethods.VK_OEM_AUTO, - KeyboardKey.OemEnlw => NativeMethods.VK_OEM_ENLW, - KeyboardKey.OemBackTab => NativeMethods.VK_OEM_BACKTAB, - KeyboardKey.Attn => NativeMethods.VK_ATTN, - KeyboardKey.CrSel => NativeMethods.VK_CRSEL, - KeyboardKey.ExSel => NativeMethods.VK_EXSEL, - KeyboardKey.EraseEof => NativeMethods.VK_EREOF, - KeyboardKey.Play => NativeMethods.VK_PLAY, - KeyboardKey.Zoom => NativeMethods.VK_ZOOM, - KeyboardKey.NoName => NativeMethods.VK_NONAME, - KeyboardKey.Pa1 => NativeMethods.VK_PA1, - KeyboardKey.OemClear => NativeMethods.VK_OEM_CLEAR, - KeyboardKey.DeadCharProcessed => 0, _ => 0 }; } /// - /// Convert a scan code to a key, following US keyboard layout. + /// Convert a scan code to our Key enum, following US keyboard layout. /// This is useful because we don't care about the keyboard layout, just the key location for effects. /// public static KeyboardKey KeyFromScanCode(uint scanCode) @@ -526,7 +431,7 @@ public static class InputUtilities 11 => KeyboardKey.D0, 12 => KeyboardKey.OemMinus, 13 => KeyboardKey.OemPlus, - 14 => KeyboardKey.Back, + 14 => KeyboardKey.Backspace, 15 => KeyboardKey.Tab, 16 => KeyboardKey.Q, 17 => KeyboardKey.W, @@ -577,14 +482,14 @@ public static class InputUtilities 67 => KeyboardKey.F9, 68 => KeyboardKey.F10, 69 => KeyboardKey.NumLock, - 70 => KeyboardKey.Scroll, + 70 => KeyboardKey.ScrollLock, 74 => KeyboardKey.NumPadSubtract, 78 => KeyboardKey.NumPadAdd, - 86 => KeyboardKey.OemBackslash, //On iso, it's the key between left shift and Z + 86 => KeyboardKey.OemBackslash, 87 => KeyboardKey.F11, 88 => KeyboardKey.F12, - 91 => KeyboardKey.LWin, - 92 => KeyboardKey.RWin, + 91 => KeyboardKey.LeftWin, + 92 => KeyboardKey.RightWin, //28 = enter or numpad enter //29 = left ctrl or right ctrl diff --git a/src/Artemis.UI/Screens/Device/Tabs/InputMappingsTabViewModel.cs b/src/Artemis.UI/Screens/Device/Tabs/InputMappingsTabViewModel.cs index a2cbf9e18..355c4a117 100644 --- a/src/Artemis.UI/Screens/Device/Tabs/InputMappingsTabViewModel.cs +++ b/src/Artemis.UI/Screens/Device/Tabs/InputMappingsTabViewModel.cs @@ -68,7 +68,7 @@ public class InputMappingsTabViewModel : ActivatableViewModelBase return; // Locate the original LED the same way the InputService did it, but supply false to Device.GetLed - bool foundLedId = InputKeyUtilities.KeyboardKeyLedIdMap.TryGetValue(e.Key, out LedId ledId); + bool foundLedId = InputKeyUtilities.TryGetLedIdFromKeyboardKey(e.Key, out LedId ledId); if (!foundLedId) return; ArtemisLed? artemisLed = Device.GetLed(ledId, false);