Пример #1
0
 static void keyDown(Keys key)
 {
     perform(WinApiConsts.Msg.WM_KEYDOWN, key);
     Yellers.ForEach(y => {
         if (key == y.ShutUpKey)
         {
             y.StartToYell();
         }
         else
         {
             if (isALT(key))
             {
                 y.Yell(y.ShutUpKey);
             }
         }
     });
 }
Пример #2
0
 static void keyUp(Keys key)
 {
     Yellers.ForEach(y => {
         if (isALT(key))
         {
             y.Yell(y.ShutUpKey);
         }
         else
         {
             y.Yell(key);
         }
     });
     if (!SendKeyUp)
     {
         return;
     }
     perform(WinApiConsts.Msg.WM_KEYUP, key);
 }
Пример #3
0
        public static void AddSpecifyKey(Keys startKey)
        {
            if (startKey == Keys.None)
            {
                specifier = null;
                return;
            }
            var s = Yellers.FirstOrDefault(y => y.Name == nameof(startKey));

            if (s != null)
            {
                if (s.IsYelling)
                {
                    return;
                }
                s.ShutUpKey = startKey;
                return;
            }
            specifier          = new Yeller(startKey);
            specifier.Name     = nameof(startKey);
            specifier.Yelling += (y, e) => {
                switch (e.Index)
                {
                case Yeller.STARTED:
                    y.Tag = new KeysQueue();
                    break;

                case Yeller.TERMINALED:
                    SpecifyFunction((KeysQueue)y.Tag);
                    y.Tag = null;
                    break;

                default:
                    var tag = (KeysQueue)y.Tag;
                    tag.Insert(e.Key);
                    y.Tag = tag;
                    return;
                }
            };
        }