Exemple #1
0
        private void KeyDown(object sender, KeyEventArgs e)
        {
            var menuHotkeys = this.hotkeys.Where(x => x.Hotkey.Key == e.Key).ToList();

            if (menuHotkeys.Any())
            {
                if (!this.keyDownStates.TryGetValue(e.Key, out var state) || state == false)
                {
                    var pressArgs = new MenuInputEventArgs(e.Key, HotkeyFlags.Press);
                    foreach (var menuHotkey in menuHotkeys.Where(x => (x.Flags & HotkeyFlags.Press) == HotkeyFlags.Press))
                    {
                        menuHotkey.Execute(pressArgs);
                        if (pressArgs.Handled)
                        {
                            break;
                        }
                    }
                }

                var downArgs = new MenuInputEventArgs(e.Key, HotkeyFlags.Down);
                foreach (var menuHotkey in menuHotkeys.Where(x => (x.Flags & HotkeyFlags.Down) == HotkeyFlags.Down))
                {
                    menuHotkey.Execute(downArgs);
                    if (downArgs.Handled)
                    {
                        break;
                    }
                }
            }

            this.keyDownStates[e.Key] = true;
        }
Exemple #2
0
        private void KeyUp(object sender, KeyEventArgs e)
        {
            this.keyDownStates[e.Key] = false;

            var pressArgs = new MenuInputEventArgs(e.Key, HotkeyFlags.Up);

            foreach (var menuHotkey in this.hotkeys.Where(x => x.Hotkey.Key == e.Key && (x.Flags & HotkeyFlags.Up) == HotkeyFlags.Up))
            {
                menuHotkey.Execute(pressArgs);
                if (pressArgs.Handled)
                {
                    break;
                }
            }
        }
Exemple #3
0
        private void MouseClick(object sender, MouseEventArgs e)
        {
            MouseButtons button;
            bool         downEvent;

            if ((e.Buttons & MouseButtons.LeftDown) == MouseButtons.LeftDown)
            {
                button    = MouseButtons.Left;
                downEvent = true;
            }
            else if ((e.Buttons & MouseButtons.RightDown) == MouseButtons.RightDown)
            {
                button    = MouseButtons.Right;
                downEvent = true;
            }
            else if ((e.Buttons & MouseButtons.XButton1Down) == MouseButtons.XButton1Down)
            {
                button    = MouseButtons.XButton1;
                downEvent = true;
            }
            else if ((e.Buttons & MouseButtons.XButton2Down) == MouseButtons.XButton2Down)
            {
                button    = MouseButtons.XButton2;
                downEvent = true;
            }
            else if ((e.Buttons & MouseButtons.LeftUp) == MouseButtons.LeftUp)
            {
                button    = MouseButtons.Left;
                downEvent = false;
            }
            else if ((e.Buttons & MouseButtons.RightUp) == MouseButtons.RightUp)
            {
                button    = MouseButtons.Right;
                downEvent = false;
            }
            else if ((e.Buttons & MouseButtons.XButton1Up) == MouseButtons.XButton1Up)
            {
                button    = MouseButtons.XButton1;
                downEvent = false;
            }
            else if ((e.Buttons & MouseButtons.XButton2Up) == MouseButtons.XButton2Up)
            {
                button    = MouseButtons.XButton1;
                downEvent = false;
            }
            else
            {
                Log.Debug($"No button pressed in MouseClick event: {e.Buttons} ({e.Clicks})");
                return;
            }

            var menuHotkeys = this.hotkeys.Where(x => x.Hotkey.MouseButton == button).ToList();

            if (menuHotkeys.Any())
            {
                var flag       = downEvent ? HotkeyFlags.Down : HotkeyFlags.Up;
                var buttonArgs = new MenuInputEventArgs(button, flag);
                foreach (var menuHotkey in menuHotkeys.Where(x => (x.Flags & flag) == flag))
                {
                    menuHotkey.Execute(buttonArgs);
                    if (buttonArgs.Handled)
                    {
                        break;
                    }
                }
            }
        }
Exemple #4
0
 public void Execute(MenuInputEventArgs args)
 {
     // Log.Debug($"Hotkey: {this.Name} {this.Key}");
     this.action(args);
 }