Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 3
0
        public static string HotkeyString(NativeMethods.KeyModifiers modifiers, Keys key)
        {
            var modifier = string.Join(" + ", HotkeyModifierStrings(modifiers));

            if (modifier == "")
            {
                return(modifier);
            }
            return(modifier + " + " + KeyToString(key));
        }
Exemplo n.º 4
0
 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");
     }
 }
Exemplo n.º 5
0
 public Hotkey(IntPtr window, int id, NativeMethods.KeyModifiers modifiers, uint key)
 {
     _window = window;
     Id      = id;
     NativeMethods.RegisterHotKey(window, id, modifiers, key);
 }