コード例 #1
0
        public void SetSettings(XmlNode node)
        {
            var element = (XmlElement)node;

            GlobalHotkeysEnabled = SettingsHelper.ParseBool(element["GlobalHotkeysEnabled"]);
            CounterTextColor     = SettingsHelper.ParseColor(element["CounterTextColor"]);
            CounterValueColor    = SettingsHelper.ParseColor(element["CounterValueColor"]);
            CounterFont          = SettingsHelper.GetFontFromElement(element["CounterFont"]);
            OverrideCounterFont  = SettingsHelper.ParseBool(element["OverrideCounterFont"]);
            OverrideTextColor    = SettingsHelper.ParseBool(element["OverrideTextColor"]);
            BackgroundColor      = SettingsHelper.ParseColor(element["BackgroundColor"]);
            BackgroundColor2     = SettingsHelper.ParseColor(element["BackgroundColor2"]);
            GradientString       = SettingsHelper.ParseString(element["BackgroundGradient"]);
            CounterText          = SettingsHelper.ParseString(element["CounterText"]);
            InitialValue         = SettingsHelper.ParseInt(element["InitialValue"]);
            Increment            = SettingsHelper.ParseInt(element["Increment"]);

            XmlElement incrementElement = element["IncrementKey"];

            IncrementKey = string.IsNullOrEmpty(incrementElement.InnerText) ? null : new KeyOrButton(incrementElement.InnerText);
            XmlElement decrementElement = element["DecrementKey"];

            DecrementKey = string.IsNullOrEmpty(decrementElement.InnerText) ? null : new KeyOrButton(decrementElement.InnerText);
            XmlElement resetElement = element["ResetKey"];

            ResetKey = string.IsNullOrEmpty(resetElement.InnerText) ? null : new KeyOrButton(resetElement.InnerText);

            RegisterHotKeys();
        }
コード例 #2
0
        public static void IsKeyTest(Key?key, MouseAction?mouseAction)
        {
            // ReSharper disable once PossibleInvalidOperationException
            KeyOrButton kob = key.HasValue ? new KeyOrButton(key.Value) : new KeyOrButton(mouseAction.Value);

            Assert.That(key.HasValue ? kob.IsKey : !kob.IsKey);
        }
コード例 #3
0
        private Keybind(string id, string name, Binding type, KeyOrButton defaultKeyOrButton)
        {
            this.id   = id;
            Name      = name;
            this.type = type;

            Default = defaultKeyOrButton;
        }
コード例 #4
0
        private static Keybind Register(string id, string name, Binding type, KeyOrButton defaultKeyOrButton)
        {
            var bind = new Keybind(id, name, type, defaultKeyOrButton);

            Debug.Assert(!bindings.Contains(bind), $"The binding '{bind.id}' is already defined.");
            bindings.Add(bind);

            return(bind);
        }
コード例 #5
0
        private void RegisterScrolling(CompositeHook hook)
        {
            var mouse = hook.GetMouse();
            var name  = mouse.Information.InstanceName + " " + mouse.Information.InstanceGuid;

            ScrollUp   = new KeyOrButton(new GamepadButton(name, "Scroll_Up"));
            ScrollDown = new KeyOrButton(new GamepadButton(name, "Scroll_Down"));
            hook.RegisterHotKey(ScrollUp);
            hook.RegisterHotKey(ScrollDown);
        }
コード例 #6
0
        public static void ImplicitCastToKeyOrMouseButton_FromMouseAction()
        {
            const MouseAction mouseAction = MouseAction.XButton1;
            KeyOrButton       keyOrButton = mouseAction;

            Assert.Multiple(() =>
            {
                Assert.That(!keyOrButton.IsKey);
                Assert.That(keyOrButton.MouseButton, Is.EqualTo(mouseAction));
            });
        }
コード例 #7
0
        public static void JsonConstructor_Key()
        {
            KeyOrButton kob = new KeyOrButton(true, Key.Up, null);

            Assert.Multiple(() =>
            {
                Assert.That(kob.IsKey);
                Assert.That(kob.Key, Is.EqualTo(Key.Up));
                Assert.That(kob.MouseButton, Is.EqualTo(null));
            });
        }
コード例 #8
0
        public static void JsonConstructor_MouseAction()
        {
            KeyOrButton kob = new KeyOrButton(false, null, MouseAction.XButton1);

            Assert.Multiple(() =>
            {
                Assert.That(!kob.IsKey);
                Assert.That(kob.Key, Is.EqualTo(null));
                Assert.That(kob.MouseButton, Is.EqualTo(MouseAction.XButton1));
            });
        }
コード例 #9
0
        public void MouseButtonToKeyOrMouseButtonImplicitOperator()
        {
            const MouseAction mouseAction = MouseAction.XButton1;
            KeyOrButton       keyOrButton = mouseAction;

            Assert.Multiple(() =>
            {
                Assert.That(!keyOrButton.IsKey);
                Assert.That(keyOrButton.MouseButton, Is.EqualTo(mouseAction));
            });
        }
コード例 #10
0
        public void KeyToKeyOrMouseButtonImplicitOperator()
        {
            const Key   key = Key.A;
            KeyOrButton kob = key;

            Assert.Multiple(() =>
            {
                Assert.That(kob.IsKey);
                Assert.That(kob.Key, Is.EqualTo(key));
            });
        }
コード例 #11
0
        public static void ImplicitCastToKeyOrMouseButton_FromKey()
        {
            const Key   key = Key.A;
            KeyOrButton kob = key;

            Assert.Multiple(() =>
            {
                Assert.That(kob.IsKey);
                Assert.That(kob.Key, Is.EqualTo(key));
            });
        }
コード例 #12
0
 private void RegisterHotkey(CompositeHook hook, KeyOrButton key)
 {
     hook.RegisterHotKey(key);
     if (DeactivateHotkeysForOtherPrograms && key.IsKey && GlobalHotkeysEnabled)
     {
         var args      = new System.Windows.Forms.KeyEventArgs(key.Key);
         var modifiers = (args.Alt ? ModifierKeys.Alt : ModifierKeys.None)
                         | (args.Shift ? ModifierKeys.Shift : ModifierKeys.None)
                         | (args.Control ? ModifierKeys.Control : ModifierKeys.None);
         HotkeyHook.Instance.RegisterHotKey(modifiers, args.KeyCode);
     }
 }
コード例 #13
0
 private void RegisterHotkey(CompositeHook hook, KeyOrButton key, bool deactivateForOtherPrograms)
 {
     //hook.RegisterHotKey(key);
     if (deactivateForOtherPrograms && key.IsKey)
     {
         var args      = new Eto.Forms.KeyEventArgs(key.Key, Eto.Forms.KeyEventType.KeyUp);
         var modifiers = (args.Alt ? Eto.Forms.Keys.Alt : Eto.Forms.Keys.None)
                         | (args.Shift ? Eto.Forms.Keys.Shift : Eto.Forms.Keys.None)
                         | (args.Control ? Eto.Forms.Keys.Control : Eto.Forms.Keys.None);
         //  HotkeyHook.Instance.RegisterHotKey(modifiers, args.KeyCode);
     }
 }
コード例 #14
0
        public CounterComponentSettings()
        {
            InitializeComponent();

            Hook = new CompositeHook();

            // Set default values.
            GlobalHotkeysEnabled = false;
            CounterFont          = new Font("Segoe UI", 13, FontStyle.Regular, GraphicsUnit.Pixel);
            OverrideCounterFont  = false;
            CounterTextColor     = Color.FromArgb(255, 255, 255, 255);
            CounterValueColor    = Color.FromArgb(255, 255, 255, 255);
            OverrideTextColor    = false;
            BackgroundColor      = Color.Transparent;
            BackgroundColor2     = Color.Transparent;
            BackgroundGradient   = GradientType.Plain;
            CounterText          = "Counter:";
            InitialValue         = 0;
            Increment            = 1;

            // Hotkeys
            IncrementKey = new KeyOrButton(Keys.Add);
            DecrementKey = new KeyOrButton(Keys.Subtract);
            ResetKey     = new KeyOrButton(Keys.NumPad0);

            // Set bindings.
            txtIncrement.Text = FormatKey(IncrementKey);
            txtDecrement.Text = FormatKey(DecrementKey);
            txtReset.Text     = FormatKey(ResetKey);
            txtCounterText.DataBindings.Add("Text", this, "CounterText");
            numInitialValue.DataBindings.Add("Value", this, "InitialValue");
            numIncrement.DataBindings.Add("Value", this, "Increment");
            chkGlobalHotKeys.DataBindings.Add("Checked", this, "GlobalHotkeysEnabled", false, DataSourceUpdateMode.OnPropertyChanged);
            chkFont.DataBindings.Add("Checked", this, "OverrideCounterFont", false, DataSourceUpdateMode.OnPropertyChanged);
            lblFont.DataBindings.Add("Text", this, "CounterFontString", false, DataSourceUpdateMode.OnPropertyChanged);
            chkColor.DataBindings.Add("Checked", this, "OverrideTextColor", false, DataSourceUpdateMode.OnPropertyChanged);
            btnColor.DataBindings.Add("BackColor", this, "CounterTextColor", false, DataSourceUpdateMode.OnPropertyChanged);
            btnColor3.DataBindings.Add("BackColor", this, "CounterValueColor", false, DataSourceUpdateMode.OnPropertyChanged);
            btnColor1.DataBindings.Add("BackColor", this, "BackgroundColor", false, DataSourceUpdateMode.OnPropertyChanged);
            btnColor2.DataBindings.Add("BackColor", this, "BackgroundColor2", false, DataSourceUpdateMode.OnPropertyChanged);
            cmbGradientType.DataBindings.Add("SelectedItem", this, "GradientString", false, DataSourceUpdateMode.OnPropertyChanged);

            // Assign event handlers.
            cmbGradientType.SelectedIndexChanged += cmbGradientType_SelectedIndexChanged;
            chkFont.CheckedChanged          += chkFont_CheckedChanged;
            chkColor.CheckedChanged         += chkColor_CheckedChanged;
            chkGlobalHotKeys.CheckedChanged += chkGlobalHotKeys_CheckedChanged;

            Load += CounterSettings_Load;

            RegisterHotKeys();
        }
コード例 #15
0
        public static void Clone(Key?key, MouseAction?mouseAction)
        {
            // ReSharper disable once PossibleInvalidOperationException
            KeyOrButton kob   = key.HasValue ? new KeyOrButton(key.Value) : new KeyOrButton(mouseAction.Value);
            KeyOrButton clone = kob.Clone() as KeyOrButton;

            Assert.Multiple(() =>
            {
                Assert.That(clone, Is.Not.Null);
                Assert.That(kob.IsKey, Is.EqualTo(clone.IsKey));
                Assert.That(kob.Key, Is.EqualTo(clone.Key));
                Assert.That(kob.MouseButton, Is.EqualTo(clone.MouseButton));
            });
        }
コード例 #16
0
        void hook_KeyOrButtonPressed(object sender, KeyOrButton e)
        {
            if (_game == null || _game.HasExited || _map == null || _game.MainWindowHandle != GetForegroundWindow())
            {
                return;
            }

            foreach (KeyOrButton key in _hideMissionObjectivesKeys)
            {
                if (key == e && _map.Current.ToLower() == "mission_01")
                {
                    _shouldStart = true;
                    break;
                }
            }
        }
コード例 #17
0
        private string FormatKey(KeyOrButton key)
        {
            if (key == null)
            {
                return("None");
            }
            string str = key.ToString();

            if (key.IsButton)
            {
                int length = str.LastIndexOf(' ');
                if (length != -1)
                {
                    str = str.Substring(0, length);
                }
            }
            return(str);
        }
コード例 #18
0
        private string FormatKey(KeyOrButton key)
        {
            if (key != null)
            {
                var keyString = key.ToString();
                if (key.IsButton)
                {
                    var lastSpaceIndex = keyString.LastIndexOf(' ');
                    if (lastSpaceIndex != -1)
                    {
                        keyString = keyString.Substring(0, lastSpaceIndex);
                    }
                }

                return(keyString);
            }
            return("None");
        }
コード例 #19
0
        public static void JsonConstructor_IfBothDependsOnIsKey()
        {
            KeyOrButton kob1 = new KeyOrButton(false, Key.Up, MouseAction.XButton1);

            Assert.Multiple(() =>
            {
                Assert.That(!kob1.IsKey);
                Assert.That(kob1.Key, Is.EqualTo(null));
                Assert.That(kob1.MouseButton, Is.EqualTo(MouseAction.XButton1));
            });

            KeyOrButton kob2 = new KeyOrButton(true, Key.Up, MouseAction.XButton1);

            Assert.Multiple(() =>
            {
                Assert.That(kob2.IsKey);
                Assert.That(kob2.Key, Is.EqualTo(Key.Up));
                Assert.That(kob2.MouseButton, Is.EqualTo(null));
            });
        }
コード例 #20
0
        // Basic support for keyboard/button input.
        private void Hook_KeyOrButtonPressed(object sender, KeyOrButton e)
        {
            if ((Form.ActiveForm == state.Form && !Settings.GlobalHotkeysEnabled) ||
                Settings.GlobalHotkeysEnabled)
            {
                if (e == Settings.IncrementKey)
                {
                    Counter.Increment();
                }

                if (e == Settings.DecrementKey)
                {
                    Counter.Decrement();
                }

                if (e == Settings.ResetKey)
                {
                    Counter.Reset();
                }
            }
        }
コード例 #21
0
 public static bool EqualsTest([NotNull] KeyOrButton kob1, KeyOrButton kob2)
 {
     return(kob1.Equals(kob2));
 }
コード例 #22
0
 /// <summary>
 ///     Create a new push button.
 /// </summary>
 /// <param name="keyOrButton">The key or button to target.</param>
 /// <param name="input">The input manager.</param>
 public PushButton(KeyOrButton keyOrButton, InputManager input) : base(keyOrButton, input)
 {
 }
コード例 #23
0
        // Behaviour essentially Lifted from LiveSplit Settings.
        private void SetHotkeyHandlers(TextBox txtBox, Action <KeyOrButton> keySetCallback)
        {
            string oldText = txtBox.Text;

            txtBox.Text = "Set Hotkey...";
            txtBox.Select(0, 0);

            KeyEventHandler handlerDown  = null;
            KeyEventHandler handlerUp    = null;
            EventHandler    leaveHandler = null;
            EventHandlerT <GamepadButton> gamepadButtonPressed = null;

            // Remove Input handlers.
            Action unregisterEvents = () =>
            {
                txtBox.KeyDown -= handlerDown;
                txtBox.KeyUp   -= handlerUp;
                txtBox.Leave   -= leaveHandler;
                Hook.AnyGamepadButtonPressed -= gamepadButtonPressed;
            };

            // Handler for KeyDown
            handlerDown = (s, x) =>
            {
                KeyOrButton keyOrButton = x.KeyCode == Keys.Escape ? null : new KeyOrButton(x.KeyCode | x.Modifiers);

                // No action for special keys.
                if (x.KeyCode == Keys.ControlKey || x.KeyCode == Keys.ShiftKey || x.KeyCode == Keys.Menu)
                {
                    return;
                }

                keySetCallback(keyOrButton);
                unregisterEvents();

                // Remove Focus.
                txtBox.Select(0, 0);
                chkGlobalHotKeys.Select();

                txtBox.Text = FormatKey(keyOrButton);

                // Re-Register inputs.
                RegisterHotKeys();
            };

            // Handler for KeyUp (allows setting of special keys, shift, ctrl etc.).
            handlerUp = (s, x) =>
            {
                KeyOrButton keyOrButton = x.KeyCode == Keys.Escape ? null : new KeyOrButton(x.KeyCode | x.Modifiers);

                // No action for normal keys.
                if (x.KeyCode != Keys.ControlKey && x.KeyCode != Keys.ShiftKey && x.KeyCode != Keys.Menu)
                {
                    return;
                }

                keySetCallback(keyOrButton);
                unregisterEvents();
                txtBox.Select(0, 0);
                chkGlobalHotKeys.Select();
                txtBox.Text = FormatKey(keyOrButton);
                RegisterHotKeys();
            };

            leaveHandler = (s, x) =>
            {
                unregisterEvents();
                txtBox.Text = oldText;
            };

            // Handler for gamepad/joystick inputs.
            gamepadButtonPressed = (s, x) =>
            {
                KeyOrButton key = new KeyOrButton(x);
                keySetCallback(key);
                unregisterEvents();

                Action keyOrButton = () =>
                {
                    txtBox.Select(0, 0);
                    chkGlobalHotKeys.Select();
                    txtBox.Text = FormatKey(key);
                    RegisterHotKeys();
                };

                // May not be in the UI thread (likely).
                if (InvokeRequired)
                {
                    Invoke(keyOrButton);
                }
                else
                {
                    keyOrButton();
                }
            };

            txtBox.KeyDown += handlerDown;
            txtBox.KeyUp   += handlerUp;
            txtBox.Leave   += leaveHandler;

            Hook.AnyGamepadButtonPressed += gamepadButtonPressed;
        }
コード例 #24
0
 private void txtReset_Enter(object sender, EventArgs e)
 {
     SetHotkeyHandlers((TextBox)sender, x => ResetKey = x);
 }
コード例 #25
0
 /// <summary>
 ///     Set the binding to a different key or button.
 /// </summary>
 /// <param name="keyOrButton">The new key or button.</param>
 public void SetBinding(KeyOrButton keyOrButton)
 {
     KeyOrButton = keyOrButton;
 }
コード例 #26
0
 public static bool GetHashCodeTest([NotNull] KeyOrButton kob1, KeyOrButton kob2)
 {
     return(kob1.GetHashCode() == kob2?.GetHashCode());
 }
コード例 #27
0
 /// <summary>
 ///     Create a new toggle button.
 /// </summary>
 /// <param name="keyOrButton">The key or button to target.</param>
 /// <param name="input">The input manager providing the input.</param>
 public ToggleButton(KeyOrButton keyOrButton, InputManager input) : base(keyOrButton, input)
 {
 }
コード例 #28
0
 public static bool EqualsTest_Object([NotNull] KeyOrButton kob, object obj)
 {
     return(kob.Equals(obj));
 }
コード例 #29
0
        private void SetHotkeyHandlers(TextBox txtBox, Action <KeyOrButton> keySetCallback)
        {
            var oldText = txtBox.Text;

            txtBox.Text = "Set Hotkey...";
            txtBox.Select(0, 0);
            KeyEventHandler handlerDown  = null;
            KeyEventHandler handlerUp    = null;
            EventHandler    leaveHandler = null;
            EventHandlerT <GamepadButton> gamepadButtonPressed = null;
            Action unregisterEvents = () =>
            {
                txtBox.KeyDown -= handlerDown;
                txtBox.KeyUp   -= handlerUp;
                txtBox.Leave   -= leaveHandler;
                Hook.AnyGamepadButtonPressed -= gamepadButtonPressed;
            };

            handlerDown = (s, x) =>
            {
                var key = x.KeyCode == Keys.Escape ? null : new KeyOrButton(x.KeyCode | x.Modifiers);
                if (x.KeyCode == Keys.ControlKey || x.KeyCode == Keys.ShiftKey || x.KeyCode == Keys.Menu)
                {
                    return;
                }
                keySetCallback(key);
                unregisterEvents();
                txtBox.Select(0, 0);
                chkGlobalHotkeys.Select();
                txtBox.Text = FormatKey(key);
            };
            handlerUp = (s, x) =>
            {
                var key = x.KeyCode == Keys.Escape ? null : new KeyOrButton(x.KeyCode | x.Modifiers);
                if (x.KeyCode == Keys.ControlKey || x.KeyCode == Keys.ShiftKey || x.KeyCode == Keys.Menu)
                {
                    keySetCallback(key);
                    unregisterEvents();
                    txtBox.Select(0, 0);
                    chkGlobalHotkeys.Select();
                    txtBox.Text = FormatKey(key);
                }
            };
            leaveHandler = (s, x) =>
            {
                unregisterEvents();
                txtBox.Text = oldText;
            };
            gamepadButtonPressed = (s, x) =>
            {
                var key = new KeyOrButton(x);
                keySetCallback(key);
                unregisterEvents();
                Action action = () =>
                {
                    txtBox.Select(0, 0);
                    chkGlobalHotkeys.Select();
                    txtBox.Text = FormatKey(key);
                };
                if (InvokeRequired)
                {
                    Invoke(action);
                }
                else
                {
                    action();
                }
            };
            txtBox.KeyDown += handlerDown;
            txtBox.KeyUp   += handlerUp;
            txtBox.Leave   += leaveHandler;
            Hook.AnyGamepadButtonPressed += gamepadButtonPressed;
        }
コード例 #30
0
 /// <summary>
 ///     Create a new button.
 /// </summary>
 /// <param name="keyOrButton">The trigger key.</param>
 /// <param name="input">The input manager.</param>
 protected Button(KeyOrButton keyOrButton, InputManager input) : base(input)
 {
     KeyOrButton = keyOrButton;
 }