diff --git a/RELEASE.md b/RELEASE.md index c8c8fe2..4277ba5 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -34,3 +34,4 @@ It does help this project on being supported. - Setting `Keyboard[KEY] = false` and `Mouse[KEY] = false` does not cancel the press - Fix crash on startup when Steam is missing - Fix crash on resume when X360 Controller is in use +- Provide currated list of mapping keys in settings (might be extended in the future) diff --git a/SteamController/Devices/KeyboardController.cs b/SteamController/Devices/KeyboardController.cs index 72bf706..e07962d 100644 --- a/SteamController/Devices/KeyboardController.cs +++ b/SteamController/Devices/KeyboardController.cs @@ -21,20 +21,56 @@ namespace SteamController.Devices { } - public bool this[VirtualKeyCode button] + public bool this[ProfilesSettings.VirtualKeyCode key] { - get { return keyCodes.ContainsKey(button); } + get { return this[(VirtualKeyCode)key]; } + set { this[(VirtualKeyCode)key] = value; } + } + + public bool this[System.Windows.Input.Key key] + { + get { return this[(VirtualKeyCode)System.Windows.Input.KeyInterop.VirtualKeyFromKey(key)]; } + set { this[(VirtualKeyCode)System.Windows.Input.KeyInterop.VirtualKeyFromKey(key)] = value; } + } + + public bool this[System.Windows.Forms.Keys key] + { + get + { + if (key.HasFlag(System.Windows.Forms.Keys.Shift) && !this[VirtualKeyCode.SHIFT]) + return false; + if (key.HasFlag(System.Windows.Forms.Keys.Alt) && !this[VirtualKeyCode.MENU]) + return false; + if (key.HasFlag(System.Windows.Forms.Keys.Control) && !this[VirtualKeyCode.CONTROL]) + return false; + return this[(VirtualKeyCode)(key & System.Windows.Forms.Keys.KeyCode)]; + } set { - if (button == VirtualKeyCode.None) + if (value) + { + this[VirtualKeyCode.SHIFT] = key.HasFlag(System.Windows.Forms.Keys.Shift); + this[VirtualKeyCode.MENU] = key.HasFlag(System.Windows.Forms.Keys.Alt); + this[VirtualKeyCode.CONTROL] = key.HasFlag(System.Windows.Forms.Keys.Control); + this[(VirtualKeyCode)(key & System.Windows.Forms.Keys.KeyCode)] = true; + } + } + } + + public bool this[VirtualKeyCode key] + { + get { return keyCodes.ContainsKey(key); } + set + { + if (key == VirtualKeyCode.None) return; if (value) { - if (keyCodes.ContainsKey(button)) + if (keyCodes.ContainsKey(key)) return; - var keyRepeat = lastKeyCodes.GetValueOrDefault(button) ?? new KeyRepeats(DateTime.Now.Add(FirstRepeat), 0); - keyCodes.Add(button, keyRepeat); + var keyRepeat = lastKeyCodes.GetValueOrDefault(key) ?? new KeyRepeats(DateTime.Now.Add(FirstRepeat), 0); + keyCodes.Add(key, keyRepeat); } } } diff --git a/SteamController/ProfilesSettings/BackPanelSettings.cs b/SteamController/ProfilesSettings/BackPanelSettings.cs index 7ed0403..0026b25 100644 --- a/SteamController/ProfilesSettings/BackPanelSettings.cs +++ b/SteamController/ProfilesSettings/BackPanelSettings.cs @@ -1,6 +1,5 @@ using System.ComponentModel; using System.Configuration; -using WindowsInput; namespace SteamController.ProfilesSettings { diff --git a/SteamController/ProfilesSettings/VirtualKeyCode.cs b/SteamController/ProfilesSettings/VirtualKeyCode.cs new file mode 100644 index 0000000..3c12abc --- /dev/null +++ b/SteamController/ProfilesSettings/VirtualKeyCode.cs @@ -0,0 +1,392 @@ +namespace SteamController.ProfilesSettings +{ + public enum VirtualKeyCode + { + None = 0, + + // + // Summary: + // BACKSPACE key + BACKSPACE = 8, + // + // Summary: + // TAB key + TAB = 9, + // + // Summary: + // ENTER key + RETURN = 13, + // + // Summary: + // SHIFT key + SHIFT = 16, + // + // Summary: + // CTRL key + CONTROL = 17, + // + // Summary: + // ALT key + ALT = 18, + // + // Summary: + // ESC key + ESCAPE = 27, + // + // Summary: + // SPACEBAR + SPACE = 32, + // + // Summary: + // PAGE UP key + PAGE_UP = 33, + // + // Summary: + // PAGE DOWN key + PAGE_DOWN = 34, + // + // Summary: + // END key + END = 35, + // + // Summary: + // HOME key + HOME = 36, + // + // Summary: + // LEFT ARROW key + LEFT = 37, + // + // Summary: + // UP ARROW key + UP = 38, + // + // Summary: + // RIGHT ARROW key + RIGHT = 39, + // + // Summary: + // DOWN ARROW key + DOWN = 40, + // + // Summary: + // PRINT SCREEN key + PRINT_SCREEN = 44, + // + // Summary: + // INS key + INSERT = 45, + // + // Summary: + // DEL key + DELETE = 46, + // + // Summary: + // 0 key + VK_0 = 48, + // + // Summary: + // 1 key + VK_1 = 49, + // + // Summary: + // 2 key + VK_2 = 50, + // + // Summary: + // 3 key + VK_3 = 51, + // + // Summary: + // 4 key + VK_4 = 52, + // + // Summary: + // 5 key + VK_5 = 53, + // + // Summary: + // 6 key + VK_6 = 54, + // + // Summary: + // 7 key + VK_7 = 55, + // + // Summary: + // 8 key + VK_8 = 56, + // + // Summary: + // 9 key + VK_9 = 57, + // + // Summary: + // A key + VK_A = 65, + // + // Summary: + // B key + VK_B = 66, + // + // Summary: + // C key + VK_C = 67, + // + // Summary: + // D key + VK_D = 68, + // + // Summary: + // E key + VK_E = 69, + // + // Summary: + // F key + VK_F = 70, + // + // Summary: + // G key + VK_G = 71, + // + // Summary: + // H key + VK_H = 72, + // + // Summary: + // I key + VK_I = 73, + // + // Summary: + // J key + VK_J = 74, + // + // Summary: + // K key + VK_K = 75, + // + // Summary: + // L key + VK_L = 76, + // + // Summary: + // M key + VK_M = 77, + // + // Summary: + // N key + VK_N = 78, + // + // Summary: + // O key + VK_O = 79, + // + // Summary: + // P key + VK_P = 80, + // + // Summary: + // Q key + VK_Q = 81, + // + // Summary: + // R key + VK_R = 82, + // + // Summary: + // S key + VK_S = 83, + // + // Summary: + // T key + VK_T = 84, + // + // Summary: + // U key + VK_U = 85, + // + // Summary: + // V key + VK_V = 86, + // + // Summary: + // W key + VK_W = 87, + // + // Summary: + // X key + VK_X = 88, + // + // Summary: + // Y key + VK_Y = 89, + // + // Summary: + // Z key + VK_Z = 90, + // + // Summary: + // Left Windows key (Microsoft Natural keyboard) + LWIN = 91, + // + // Summary: + // Right Windows key (Natural keyboard) + RWIN = 92, + // + // Summary: + // Numeric keypad 0 key + NUMPAD0 = 96, + // + // Summary: + // Numeric keypad 1 key + NUMPAD1 = 97, + // + // Summary: + // Numeric keypad 2 key + NUMPAD2 = 98, + // + // Summary: + // Numeric keypad 3 key + NUMPAD3 = 99, + // + // Summary: + // Numeric keypad 4 key + NUMPAD4 = 100, + // + // Summary: + // Numeric keypad 5 key + NUMPAD5 = 101, + // + // Summary: + // Numeric keypad 6 key + NUMPAD6 = 102, + // + // Summary: + // Numeric keypad 7 key + NUMPAD7 = 103, + // + // Summary: + // Numeric keypad 8 key + NUMPAD8 = 104, + // + // Summary: + // Numeric keypad 9 key + NUMPAD9 = 105, + // + // Summary: + // Multiply key + MULTIPLY = 106, + // + // Summary: + // Add key + ADD = 107, + // + // Summary: + // Separator key + SEPARATOR = 108, + // + // Summary: + // Subtract key + SUBTRACT = 109, + // + // Summary: + // Decimal key + DECIMAL = 110, + // + // Summary: + // Divide key + DIVIDE = 111, + // + // Summary: + // F1 key + F1 = 112, + // + // Summary: + // F2 key + F2 = 113, + // + // Summary: + // F3 key + F3 = 114, + // + // Summary: + // F4 key + F4 = 115, + // + // Summary: + // F5 key + F5 = 116, + // + // Summary: + // F6 key + F6 = 117, + // + // Summary: + // F7 key + F7 = 118, + // + // Summary: + // F8 key + F8 = 119, + // + // Summary: + // F9 key + F9 = 120, + // + // Summary: + // F10 key + F10 = 121, + // + // Summary: + // F11 key + F11 = 122, + // + // Summary: + // F12 key + F12 = 123, + // + // Summary: + // Windows 2000/XP: Volume Mute key + VOLUME_MUTE = 173, + // + // Summary: + // Windows 2000/XP: Volume Down key + VOLUME_DOWN = 174, + // + // Summary: + // Windows 2000/XP: Volume Up key + VOLUME_UP = 175, + // + // Summary: + // Windows 2000/XP: Next Track key + MEDIA_NEXT_TRACK = 176, + // + // Summary: + // Windows 2000/XP: Previous Track key + MEDIA_PREV_TRACK = 177, + // + // Summary: + // Windows 2000/XP: Stop Media key + MEDIA_STOP = 178, + // + // Summary: + // Windows 2000/XP: Play/Pause Media key + MEDIA_PLAY_PAUSE = 179, + // + // Summary: + // Windows 2000/XP: Start Mail key + LAUNCH_MAIL = 180, + // + // Summary: + // Windows 2000/XP: Select Media key + LAUNCH_MEDIA_SELECT = 181, + // + // Summary: + // Windows 2000/XP: Start Application 1 key + LAUNCH_APP1 = 182, + // + // Summary: + // Windows 2000/XP: Start Application 2 key + LAUNCH_APP2 = 183 + } +}