예제 #1
0
        private void KeyEvent(object sender, KeyHockEventArgs e)
        {
            if (CenterInfo.IsVisible)
            {
                CenterInfo.Visibility = Visibility.Hidden;
            }

            KeyInfo.HandleEvent(e, (info) => HandleKey(info));

            KeyCount++;
            CountInfo.Content = KeyCount;
        }
예제 #2
0
        public static KeyInfo HandleEvent(KeyHockEventArgs @event, Action <KeyInfo> action)
        {
            if (!EventList.TryGetValue(@event.VirtualKey, out var info))
            {
                info = new KeyInfo(@event, EventList.Count);
                if (info.KeyDown)
                {
                    EventList.Add(@event.VirtualKey, info);
                }
            }
            else
            {
                info.Event = @event;
            }

            if (info.KeyDown)
            {
                info.Timer.Start();
            }
            if (info.KeyUp)
            {
                info.Timer.Stop();
            }

            foreach (var keyinfo in EventList.Values)
            {
                action(keyinfo);
            }

            if (info.KeyUp)
            {
                EventList.Remove(info.VirtualKey);
            }

            return(info);
        }
예제 #3
0
 private KeyInfo(KeyHockEventArgs @event, int index)
 {
     Event      = @event;
     EventIndex = index;
 }