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);