Provide currated list of mapping keys (for keyboard)

This commit is contained in:
Kamil Trzciński 2022-11-28 18:47:14 +01:00
parent f203459f9d
commit e683915a2c
4 changed files with 435 additions and 7 deletions

View file

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

View file

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

View file

@ -1,6 +1,5 @@
using System.ComponentModel;
using System.Configuration;
using WindowsInput;
namespace SteamController.ProfilesSettings
{

View file

@ -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
}
}