public static void SetHotkey(IAppConfiguration appConfiguration, HotkeyAction hotkeyAction, Action actionToRegister)
        {
            // save action to reconstruct later
            dict[hotkeyAction] = actionToRegister;

            foreach (var registeredEvent in registeredEvents)
            {
                registeredEvent.Dispose();
            }


            var actionList = new List <(string key, string combination, Dictionary <string, Action> actionDictionary)>();

            AddToList(appConfiguration.CaptureHotKey, HotkeyAction.Capture, actionList);
            AddToList(appConfiguration.OverlayHotKey, HotkeyAction.Overlay, actionList);
            AddToList(appConfiguration.OverlayConfigHotKey, HotkeyAction.OverlayConfig, actionList);
            AddToList(appConfiguration.ResetHistoryHotkey, HotkeyAction.ResetHistory, actionList);

            foreach (var item in actionList)
            {
                RemoveInvalidCombinations(item.combination, item.actionDictionary, actionList.Where(x => x.key == item.key).Where(x => x.actionDictionary != item.actionDictionary).Select(x => x.combination));
            }

            foreach (var item in actionList)
            {
                var hook = Hook.GlobalEvents();
                hook.OnCXCombination(item.key, item.actionDictionary);
                registeredEvents.Add(hook);
            }
        }
 public Action Dispatch(HotkeyAction hotkeyAction)
 {
     if (actions.TryGetValue(hotkeyAction, out var action))
     {
         return(action.Execute);
     }
     throw new NotImplementedException("Action does not exist.");
 }
示例#3
0
        public HotkeyActionEditorForm(HotkeyAction action)
        {
            InitializeComponent();

            if (action.Keys != null)
            {
                hotkeyTextBox.Text = string.Join(" ", action.Keys);
            }
        }
示例#4
0
        public KeyCode?GetHotkey(HotkeyAction action)
        {
            if (_hotkeys.ContainsKey(action))
            {
                return(_hotkeys[action]);
            }

            return(null);
        }
示例#5
0
        public HotkeyControl(string text, HotkeyAction key)
        {
            _key             = key;
            CanMove          = true;
            AcceptMouseInput = true;

            Add(new Label(text, true, 0, 150, 1));

            AddNew(key);
        }
示例#6
0
 public Hotkey(string name, string id, Keys[] keys, HotkeyAction action, int sleep, bool retriggerable, params object[] args)
 {
     this.name          = name;
     this.id            = id;
     this.keys          = keys;
     this.action        = action;
     this.args          = args;
     this.sleep         = sleep;
     this.retriggerable = retriggerable;
 }
示例#7
0
        public void UnBind(HotkeyAction action)
        {
            for (int i = 0; i < _hotkeys.Count; i++)
            {
                var h = _hotkeys[i];

                if (h.KeyAction == action)
                {
                    _hotkeys.RemoveAt(i);
                    break;
                }
            }
        }
示例#8
0
        private void LoadHotkey(HotkeyAction action, KeyCode defaultKeyCode)
        {
            var kc = PlayerPrefs.GetInt(action.ToString());

            if (kc != 0)
            {
                UpdateHotkey(action, (KeyCode)kc);
            }
            else
            {
                UpdateHotkey(action, defaultKeyCode);
            }
        }
示例#9
0
        public void AddNew(HotkeyAction action)
        {
            HotkeyBox box = new HotkeyBox
            {
                X = 150
            };

            box.HotkeyChanged += (sender, e) =>
            {
                GameScene gs = Client.Game.GetScene <GameScene>();

                if (gs == null)
                {
                    return;
                }

                if (gs.Hotkeys.Bind(_key, box.Key, box.Mod))
                {
                }
                else // show a popup
                {
                    UIManager.Add(new MessageBoxGump(400, 200, ResGumps.KeyCombinationAlreadyExists, null));
                }
            };

            box.HotkeyCancelled += (sender, e) =>
            {
                GameScene gs = Client.Game.GetScene <GameScene>();

                if (gs == null)
                {
                    return;
                }

                gs.Hotkeys.UnBind(_key);
            };

            if (_hotkesBoxes.Count != 0)
            {
                box.Y = _hotkesBoxes[_hotkesBoxes.Count - 1]
                        .Bounds.Bottom;
            }


            _hotkesBoxes.Add(box);

            Add(box);
        }
示例#10
0
        public void AddNew(HotkeyAction action)
        {
            HotkeyBox box = new HotkeyBox()
            {
                X = 150,
            };

            box.HotkeyChanged += (sender, e) =>
            {
                GameScene gs = Engine.SceneManager.GetScene <GameScene>();
                if (gs == null)
                {
                    return;
                }

                if (gs.Hotkeys.Bind(_key, box.Key, box.Mod))
                {
                }
                else // show a popup
                {
                    Engine.UI.Add(new MessageBoxGump(400, 200, "Key combination already exists.", null));
                }
            };
            box.HotkeyCancelled += (sender, e) =>
            {
                GameScene gs = Engine.SceneManager.GetScene <GameScene>();
                if (gs == null)
                {
                    return;
                }

                gs.Hotkeys.UnBind(_key);
            };

            if (_hotkesBoxes.Count != 0)
            {
                box.Y = _hotkesBoxes[_hotkesBoxes.Count - 1].Bounds.Bottom;
            }


            _hotkesBoxes.Add(box);

            Add(box);
        }
示例#11
0
        public static void AddButton(HotkeyAction action, GameObject setHotkeyPrefab, GameObject hotkeyList)
        {
            var hotkey = Object.Instantiate(setHotkeyPrefab, hotkeyList.transform);

            hotkey.transform.localScale = Vector3.one;

            hotkey.transform.Find("HotkeyName").GetComponent <Text>().text = action.ToString().GetFriendlyName();
            var hotkeyText = hotkey.transform.Find("SetHotkey/KeyPressed").GetComponent <Text>();
            var kc         = GameControl.InputManager.GetHotkey(action);

            hotkeyText.text = kc != null?kc.ToString() : "<None>";

            GameControl.InputManager.HotkeyLabel[action] = hotkeyText;

            var setHotkey = hotkey.transform.Find("SetHotkey").GetComponent <Button>();
            var keyName   = action;

            setHotkey.onClick.AddListener(() => { GameControl.InputManager.RebindHotkey(keyName); });
        }
示例#12
0
        public bool Bind(HotkeyAction action, SDL.SDL_Keycode key, SDL.SDL_Keymod mod)
        {
            foreach (HotKeyCombination h in _hotkeys)
            {
                if (h.Key == key && h.Mod == mod)
                {
                    return(false);
                }
            }

            _hotkeys.Add(new HotKeyCombination
            {
                Key       = key,
                Mod       = mod,
                KeyAction = action
            });

            return(true);
        }
示例#13
0
        public bool Bind(HotkeyAction action, SDL.SDL_Keycode key, SDL.SDL_Keymod mod)
        {
            for (int i = 0; i < _hotkeys.Count; i++)
            {
                var h = _hotkeys[i];

                if (h.Key == key && h.Mod == mod)
                {
                    return(false);
                }
            }

            _hotkeys.Add(new HotKeyCombination()
            {
                Key       = key,
                Mod       = mod,
                KeyAction = action
            });

            return(true);
        }
示例#14
0
        private HotkeyAction?UpdateHotkey(HotkeyAction action, KeyCode keyCode)
        {
            HotkeyAction?removed = null;

            // Remove old hotkey mapping
            if (_keyCodes.ContainsKey(keyCode))
            {
                var oldAction = _keyCodes[keyCode];
                _keyCodes.Remove(keyCode);
                _hotkeys.Remove(oldAction);
                removed = oldAction;
            }

            // Remove old keycode mapping
            if (_hotkeys.ContainsKey(action))
            {
                _keyCodes.Remove(_hotkeys[action]);
            }

            _hotkeys[action]   = keyCode;
            _keyCodes[keyCode] = action;

            return(removed);
        }
示例#15
0
        internal void ProcessHotkey(HotkeyAction value)
        {
            switch (value)
            {
            case HotkeyAction.NextPage:
                SampleLibrary.NextPage();
                break;

            case HotkeyAction.PrevPage:
                SampleLibrary.PrevPage();
                break;

            case HotkeyAction.ToggleExtraPage:
                SampleLibrary.ToggleExtraPage();
                break;

            case HotkeyAction.NextExtraPage:
                SampleLibrary.NextExtraPage();
                break;

            case HotkeyAction.PrevExtraPage:
                SampleLibrary.PrevExtraPage();
                break;

            case HotkeyAction.PlayPool1:
                Play(SampleLibrary.GetSamplePath(1));
                break;

            case HotkeyAction.PlayPool1ModAlt:
                Play(SampleLibrary.GetSamplePath(1 + 9));
                break;

            case HotkeyAction.PlayPool1ModCtrl:
                Play(SampleLibrary.GetSamplePath(1 + 18));
                break;

            case HotkeyAction.PlayPool1ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(1 + 27));
                break;

            case HotkeyAction.PlayPool2:
                Play(SampleLibrary.GetSamplePath(2));
                break;

            case HotkeyAction.PlayPool2ModAlt:
                Play(SampleLibrary.GetSamplePath(2 + 9));
                break;

            case HotkeyAction.PlayPool2ModCtrl:
                Play(SampleLibrary.GetSamplePath(2 + 18));
                break;

            case HotkeyAction.PlayPool2ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(2 + 27));
                break;

            case HotkeyAction.PlayPool3:
                Play(SampleLibrary.GetSamplePath(3));
                break;

            case HotkeyAction.PlayPool3ModAlt:
                Play(SampleLibrary.GetSamplePath(3 + 9));
                break;

            case HotkeyAction.PlayPool3ModCtrl:
                Play(SampleLibrary.GetSamplePath(3 + 18));
                break;

            case HotkeyAction.PlayPool3ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(3 + 27));
                break;

            case HotkeyAction.PlayPool4:
                Play(SampleLibrary.GetSamplePath(4));
                break;

            case HotkeyAction.PlayPool4ModAlt:
                Play(SampleLibrary.GetSamplePath(4 + 9));
                break;

            case HotkeyAction.PlayPool4ModCtrl:
                Play(SampleLibrary.GetSamplePath(4 + 18));
                break;

            case HotkeyAction.PlayPool4ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(4 + 27));
                break;

            case HotkeyAction.PlayPool5:
                Play(SampleLibrary.GetSamplePath(5));
                break;

            case HotkeyAction.PlayPool5ModAlt:
                Play(SampleLibrary.GetSamplePath(5 + 9));
                break;

            case HotkeyAction.PlayPool5ModCtrl:
                Play(SampleLibrary.GetSamplePath(5 + 18));
                break;

            case HotkeyAction.PlayPool5ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(5 + 27));
                break;

            case HotkeyAction.PlayPool6:
                Play(SampleLibrary.GetSamplePath(6));
                break;

            case HotkeyAction.PlayPool6ModAlt:
                Play(SampleLibrary.GetSamplePath(6 + 9));
                break;

            case HotkeyAction.PlayPool6ModCtrl:
                Play(SampleLibrary.GetSamplePath(6 + 18));
                break;

            case HotkeyAction.PlayPool6ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(6 + 27));
                break;

            case HotkeyAction.PlayPool7:
                Play(SampleLibrary.GetSamplePath(7));
                break;

            case HotkeyAction.PlayPool7ModAlt:
                Play(SampleLibrary.GetSamplePath(7 + 9));
                break;

            case HotkeyAction.PlayPool7ModCtrl:
                Play(SampleLibrary.GetSamplePath(7 + 18));
                break;

            case HotkeyAction.PlayPool7ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(7 + 27));
                break;

            case HotkeyAction.PlayPool8:
                Play(SampleLibrary.GetSamplePath(8));
                break;

            case HotkeyAction.PlayPool8ModAlt:
                Play(SampleLibrary.GetSamplePath(8 + 9));
                break;

            case HotkeyAction.PlayPool8ModCtrl:
                Play(SampleLibrary.GetSamplePath(8 + 18));
                break;

            case HotkeyAction.PlayPool8ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(8 + 27));
                break;

            case HotkeyAction.PlayPool9:
                Play(SampleLibrary.GetSamplePath(9));
                break;

            case HotkeyAction.PlayPool9ModAlt:
                Play(SampleLibrary.GetSamplePath(9 + 9));
                break;

            case HotkeyAction.PlayPool9ModCtrl:
                Play(SampleLibrary.GetSamplePath(9 + 18));
                break;

            case HotkeyAction.PlayPool9ModCtrlAlt:
                Play(SampleLibrary.GetSamplePath(9 + 27));
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(value), value, null);
            }
        }
示例#16
0
 public bool GetButtonDown(HotkeyAction hotkeyAction)
 {
     return(_hotkeys.ContainsKey(hotkeyAction) && Input.GetKeyDown(_hotkeys[hotkeyAction]));
 }
 private static void AddToList(string hotkey, HotkeyAction hotkeyaction, List <(string key, string combination, Dictionary <string, Action> actionDictionary)> actionList)
示例#18
0
 public void RebindHotkey(HotkeyAction action)
 {
     _hotkeyToRebind = action;
 }
示例#19
0
 public HotkeyHandler(VirtualKey key, HotkeyAction action) : this(key, ModifierKeys.None, action) { }
示例#20
0
 public HotkeyHandler(VirtualKey key, ModifierKeys modkey, HotkeyAction action)
 {
     this.Key = key;
     this.ModKey = modkey;
     this.Action = action;
 }
示例#21
0
 private void Add(HotkeyAction action, Action handler)
 {
     _actions.Add(action, handler);
 }
示例#22
0
 public void ExecuteHotkeyAction(HotkeyAction action)
 {
 }