/// <summary> /// Parse string hotkey to KeyModifiers and Virtual Key /// /// c# 7.0 tuples is better, but is not available on .net 4.5 /// without nuget package /// /// NOTE: Update to System.ValueTuple /// </summary> /// <param name="hotkey">String key to parse</param> /// <returns></returns> public static Tuple <NativeMethods.KeyModifiers, Keys> ParseHotkey(string hotkey) { NativeMethods.KeyModifiers modifier = NativeMethods.KeyModifiers.None; Keys key = Keys.None; var stringKeys = hotkey.Split(new string[] { " + " }, StringSplitOptions.RemoveEmptyEntries); foreach (var stringKey in stringKeys) { if (stringKey == Keys.Control.ToString() || stringKey == "Ctrl") { modifier |= NativeMethods.KeyModifiers.Control; } else if (stringKey == Keys.Shift.ToString()) { modifier |= NativeMethods.KeyModifiers.Shift; } else if (stringKey == Keys.Alt.ToString()) { modifier |= NativeMethods.KeyModifiers.Alt; } else if (stringKey == Keys.LWin.ToString()) { modifier |= NativeMethods.KeyModifiers.Win; } } key = (Keys) new KeysConverter().ConvertFromString(stringKeys.Last()); return(Tuple.Create(modifier, key)); }
public Hotkey Register(IntPtr window, NativeMethods.KeyModifiers modifiers, uint key) { var result = new Hotkey(window, _nextId, modifiers, key); _registeredHotkeys.Add(_nextId, result); IncrementNextId(); return(result); }
public static string HotkeyString(NativeMethods.KeyModifiers modifiers, Keys key) { var modifier = string.Join(" + ", HotkeyModifierStrings(modifiers)); if (modifier == "") { return(modifier); } return(modifier + " + " + KeyToString(key)); }
private static IEnumerable <string> HotkeyModifierStrings(NativeMethods.KeyModifiers modifiers) { if ((modifiers & NativeMethods.KeyModifiers.Control) == NativeMethods.KeyModifiers.Control) { yield return("Ctrl"); } if ((modifiers & NativeMethods.KeyModifiers.Alt) == NativeMethods.KeyModifiers.Alt) { yield return("Alt"); } if ((modifiers & NativeMethods.KeyModifiers.Shift) == NativeMethods.KeyModifiers.Shift) { yield return("Shift"); } }
public Hotkey(IntPtr window, int id, NativeMethods.KeyModifiers modifiers, uint key) { _window = window; Id = id; NativeMethods.RegisterHotKey(window, id, modifiers, key); }