コード例 #1
0
        public KeyInputController(IKeyboardPlugin plugin, ISession session)
        {
            _plugin  = plugin;
            _context = new KeyInputContext(UIAssistantAPI.Instance.KeyboardAPI.CreateHookHandlers(), UIAssistantAPI.Instance.KeyboardAPI.CreateKeybindManager());

            _session = session;
        }
コード例 #2
0
        public void OnKeyDown(IKeyboardPluginContext context, object sender, LowLevelKeyEventArgs e)
        {
            e.Handled = true;

            try
            {
                var keysState = e.PressedKeys;
                var input     = e.ConvertToCurrentLanguage();
                if (context.Keybinds.Contains(keysState))
                {
                    context.Keybinds.Execute(keysState, e.CurrentKeyInfo.IsKeyHoldDown);
                    _stateController.PrintState();
                    return;
                }

                if (input.Length > 0)
                {
                    _stateController.FilterHints(input);
                }
            }
            catch (Exception ex)
            {
                UIAssistantAPI.LogAPI.WriteErrorMessage(ex);
            }
        }
コード例 #3
0
        public void LoadKeybinds(IKeyboardPluginContext context)
        {
            var keybinds = context.Keybinds;

            keybinds.Clear();
            keybinds.Add(_settings.Quit, () => { _stateController.Cancel(); _stateController.Quit(); });
            keybinds.Add(_settings.Back, () => UIAssistantAPI.ViewAPI.CurrentHUD.TextBox.Backspace(), KeyState.Down, true);
            keybinds.Add(_settings.Delete, () => UIAssistantAPI.ViewAPI.CurrentHUD.TextBox.Delete(), KeyState.Down, true);
            keybinds.Add(_settings.Clear, () => UIAssistantAPI.ViewAPI.CurrentHUD.TextBox.SetText(""));

            keybinds.Add(_settings.Left, () => UIAssistantAPI.ViewAPI.CurrentHUD.TextBox.MoveCaretToLeft(1), KeyState.Down, true);
            keybinds.Add(_settings.Right, () => UIAssistantAPI.ViewAPI.CurrentHUD.TextBox.MoveCaretToRight(1), KeyState.Down, true);
            keybinds.Add(_settings.Up, () => UIAssistantAPI.ViewAPI.CurrentHUD.FocusPreviousItem(), KeyState.Down, true);
            keybinds.Add(_settings.Down, () => UIAssistantAPI.ViewAPI.CurrentHUD.FocusNextItem(), KeyState.Down, true);
            keybinds.Add(_settings.PageUp, () => UIAssistantAPI.ViewAPI.CurrentHUD.PageUp(), KeyState.Down, true);
            keybinds.Add(_settings.PageDown, () => UIAssistantAPI.ViewAPI.CurrentHUD.PageDown(), KeyState.Down, true);
            keybinds.Add(_settings.Home, () => UIAssistantAPI.ViewAPI.CurrentHUD.TextBox.MoveCaretToHead());
            keybinds.Add(_settings.End, () => UIAssistantAPI.ViewAPI.CurrentHUD.TextBox.MoveCaretToTail());
            keybinds.Add(_settings.Execute, () => _stateController.Execute());
            keybinds.Add(_settings.ShowExtraActions, () => _stateController.SwitchHUD());
            keybinds.Add(SearchByText.Settings.Expand, () =>
            {
                _stateController.Expand();
                _disposables.Clear();
                ObserveEvent(UIAssistantAPI.ViewAPI.DefaultHUD.TextBox);
                ObserveEvent(UIAssistantAPI.ViewAPI.DefaultContextHUD.TextBox);
            });
            keybinds.Add(_settings.SwitchTheme, () => _stateController.SwitchNextTheme());
            keybinds.Add(_settings.SwitchKeyboardLayout, () =>
            {
                UIAssistantAPI.KeyboardAPI.LoadAnotherKeyboardLayout();
                UIAssistantAPI.NotificationAPI.NotifyInfoMessage("Switch Keyboad Layout", string.Format(UIAssistantAPI.LocalizationAPI.Localize(TextID.SwitchKeyboardLayout), UIAssistantAPI.KeyboardAPI.KeyboardLayoutLanguage));
            });
        }
コード例 #4
0
        public void OnKeyDown(IKeyboardPluginContext context, object sender, LowLevelKeyEventArgs e)
        {
            e.Handled = true;

            var keysState = e.PressedKeys;
            var input     = e.ConvertToCurrentLanguage();

            if (context.Keybinds.Contains(keysState))
            {
                context.Keybinds.Execute(keysState, e.CurrentKeyInfo.IsKeyHoldDown);
                return;
            }

            if (string.IsNullOrEmpty(input) || char.IsControl(input[0]))
            {
                return;
            }
            _stateController.Input(input);
        }
コード例 #5
0
        public void OnKeyUp(IKeyboardPluginContext context, object sender, LowLevelKeyEventArgs e)
        {
            var keybinds = _currentKeybinds.Keybinds;

            if (e.CurrentKeyInfo.IsInjected)
            {
                e.Handled = false;
                return;
            }
            e.Handled = true;

            var key = e.CurrentKeyInfo.Key;

            var oldKeysState = new KeySet(key);

            if (_currentKeybinds.OneShotKeybinds.Contains(oldKeysState))
            {
                keybinds.Execute(oldKeysState, e.CurrentKeyInfo.IsKeyHoldDown, KeyState.Up);
                if (e.CurrentKeyInfo.IsOneShot)
                {
                    _currentKeybinds.OneShotKeybinds.Execute(oldKeysState, e.CurrentKeyInfo.IsKeyHoldDown);
                }
                return;
            }

            var keysState = GenerateKeySet(key, e.PressedKeys);

            if (keybinds.Contains(keysState, KeyState.Up))
            {
                var operation = keybinds.GetAction(keysState, KeyState.Up);
                ReleaseKeys(keysState);
                operation?.Invoke();
                return;
            }

            e.Handled = !_currentKeybinds.IsEnabledWindowsKeybinds;
            return;
        }
コード例 #6
0
 public void OnKeyUp(IKeyboardPluginContext context, object sender, LowLevelKeyEventArgs e)
 {
 }
コード例 #7
0
 public void Initialize(IKeyboardPluginContext context)
 {
     context.HookHandlers.IgnoreInjected = true;
     ObserveEvent(UIAssistantAPI.ViewAPI.DefaultHUD.TextBox);
     ObserveEvent(UIAssistantAPI.ViewAPI.DefaultContextHUD.TextBox);
 }
コード例 #8
0
 public void Cleanup(IKeyboardPluginContext context)
 {
 }
コード例 #9
0
        public void LoadKeybinds(IKeyboardPluginContext context)
        {
            var keybinds = context.Keybinds;

            keybinds.Add(UIAssistantAPI.UIAssistantSettings.Quit, () =>
            {
                _stateController.ActivateLastActiveWindow();
                _stateController.Quit();
            });
            keybinds.Add(UIAssistantAPI.UIAssistantSettings.SwitchTheme, () =>
            {
                if (_stateController.IsBusy)
                {
                    return;
                }
                _stateController.SwitchNextTheme();
            });
            keybinds.Add(UIAssistantAPI.UIAssistantSettings.Back, () => _stateController.Back(), KeyState.Down, true);
            keybinds.Add(_settings.Reload, () =>
            {
                if (_stateController.IsBusy)
                {
                    return;
                }
                _stateController.Clear();
                _stateController.Enumerate();
                _stateController.PrintState();
            });
            keybinds.Add(_settings.Reverse, () => UIAssistantAPI.ViewAPI.DefaultHUD.Items = UIAssistantAPI.ViewAPI.DefaultHUD.Items.Reverse().ToList());

            keybinds.Add(_settings.Click, () => _stateController.ChangeOperation(Consts.Click));
            keybinds.Add(_settings.RightClick, () => _stateController.ChangeOperation(Consts.RightClick));
            keybinds.Add(_settings.MiddleClick, () => _stateController.ChangeOperation(Consts.MiddleClick));
            keybinds.Add(_settings.DoubleClick, () => _stateController.ChangeOperation(Consts.DoubleClick));
            keybinds.Add(_settings.Hover, () => _stateController.ChangeOperation(Consts.Hover));
            keybinds.Add(_settings.DragAndDrop, () => _stateController.ChangeOperation(Consts.DragAndDrop));

            keybinds.Add(_settings.MouseEmulation, () => _stateController.ChangeOperation(Consts.MouseEmulation));
            keybinds.Add(UIAssistantAPI.UIAssistantSettings.SwitchKeyboardLayout, () =>
            {
                UIAssistantAPI.KeyboardAPI.LoadAnotherKeyboardLayout();
                var layoutLanguage = UIAssistantAPI.KeyboardAPI.KeyboardLayoutLanguage;
                UIAssistantAPI.NotificationAPI.NotifyInfoMessage("Switch Keyboad Layout", string.Format(UIAssistantAPI.LocalizationAPI.Localize(TextID.SwitchKeyboardLayout), layoutLanguage));
                _stateController.State.KeyboardLayoutName = layoutLanguage;
            });

            keybinds.Add(UIAssistantAPI.UIAssistantSettings.Up, () => UIAssistantAPI.ViewAPI.DefaultHUD.FocusPreviousItem(), KeyState.Down, true);
            keybinds.Add(UIAssistantAPI.UIAssistantSettings.Down, () => UIAssistantAPI.ViewAPI.DefaultHUD.FocusNextItem(), KeyState.Down, true);
            keybinds.Add(UIAssistantAPI.UIAssistantSettings.Execute, () =>
            {
                var selectedItem = UIAssistantAPI.ViewAPI.DefaultHUD.SelectedItem;
                if (selectedItem != null)
                {
                    _stateController.Invoke(selectedItem);
                }
                else if (UIAssistantAPI.ViewAPI.DefaultHUD.Items.Count == 1)
                {
                    _stateController.Invoke(UIAssistantAPI.ViewAPI.DefaultHUD.Items.ElementAt(0));
                }
            });
        }
コード例 #10
0
 public void Cleanup(IKeyboardPluginContext context)
 {
     //_keyController.Dispose();
 }
コード例 #11
0
 public void Initialize(IKeyboardPluginContext context)
 {
     _stateController.State.KeyboardLayoutName = UIAssistantAPI.KeyboardAPI.KeyboardLayoutLanguage;
 }
コード例 #12
0
        public void LoadKeybinds(IKeyboardPluginContext context)
        {
            _keybindsDic.Clear();
            foreach (var keybinds in _settings.KeybindsInMode)
            {
                var defaultKeybinds = context.Keybinds;
                defaultKeybinds = KeyboardAPI.CreateKeybindManager();
                var keybindStorage = new KeybindStorage();
                var oneShotDefined = new Dictionary <KeySet, bool>();
                foreach (var keybind in keybinds.Value.Keybinds)
                {
                    if (keybind.InputKeys == null)
                    {
                        continue;
                    }
                    var keyset           = new KeySet(keybind.InputKeys);
                    var canDefineOneShot = keybind.CanDefineOneShot;
                    if (canDefineOneShot)
                    {
                        oneShotDefined.Add(keyset, canDefineOneShot);
                    }
                    switch (keybind.Type)
                    {
                    case CommandType.SwapKey:
                        if (canDefineOneShot)
                        {
                            keybindStorage.OneShotKeybinds.Add(keyset, () =>
                            {
                                var keys = keybind.OneShot;
                                if (_stateController.Mode == Mode.Visual && ContainsMovingKey(keys))
                                {
                                    KeyboardAPI.KeyboardOperation.SendKeys(new[] { Key.RightShift }.Concat(keys).ToArray());
                                    return;
                                }
                                KeyboardAPI.KeyboardOperation.SendKeys(keys);
                            }, KeyState.Down, true);
                        }
                        defaultKeybinds.Add(keyset, () =>
                        {
                            var keys     = keybind.OutputKeys;
                            var isVisual = _stateController.Mode == Mode.Visual && ContainsMovingKey(keys);
                            if (isVisual)
                            {
                                keys = new[] { Key.RightShift }.Concat(keys).ToArray();
                            }
                            KeyboardAPI.KeyboardOperation.KeyDown(keys);
                            if (isVisual)
                            {
                                KeyboardAPI.KeyboardOperation.KeyUp(Key.RightShift);
                            }
                        }, KeyState.Down, true);
                        defaultKeybinds.Add(keyset, () =>
                        {
                            var keys = keybind.OutputKeys;
                            KeyboardAPI.KeyboardOperation.KeyUp(keys);
                        }, KeyState.Up, true);
                        break;

                    case CommandType.RunEmbeddedCommand:
                        defaultKeybinds.Add(keyset, ParseCommand(keybind.CommandText, keybind.InputKeys), KeyState.Down, true);
                        break;

                    case CommandType.RunUIAssistantCommand:
                        defaultKeybinds.Add(keyset, () =>
                        {
                            var command = keybind.CommandText;
                            if (KeybindsManiacs.UIAssistantAPI.PluginManager.Exists(command))
                            {
                                KeybindsManiacs.UIAssistantAPI.PluginManager.Execute(command);
                            }
                            else
                            {
                                UIAssistantAPI.NotificationAPI.NotifyWarnMessage("Plugin Error", string.Format(KeybindsManiacs.UIAssistantAPI.LocalizationAPI.Localize(TextID.CommandNotFound), command));
                            }
                        }, KeyState.Down, true);
                        break;

                    //case CommandType.RunExtensionCommand:
                    //    break;
                    default:
                        break;
                    }
                }
                keybindStorage.IsEnabledWindowsKeybinds = keybinds.Value.IsEnabledWindowsKeybinds;
                keybindStorage.IsPrefix       = keybinds.Value.IsPrefix;
                keybindStorage.OneShotDefined = oneShotDefined;
                keybindStorage.Keybinds       = defaultKeybinds;
                _keybindsDic.Add(keybinds.Key, keybindStorage);
            }
            SwitchMode(_settings.Mode, true);
        }
コード例 #13
0
        public void OnKeyDown(IKeyboardPluginContext context, object sender, LowLevelKeyEventArgs e)
        {
            var keybinds = _currentKeybinds.Keybinds;

            if (e.CurrentKeyInfo.IsInjected)
            {
                e.Handled = false;
                return;
            }
            e.Handled = true;

            var keysState = e.PressedKeys;
            var key       = e.CurrentKeyInfo.Key;

            _currentKeySet = keysState;

            if (keysState.Keys.Count == 1)
            {
                if (_currentKeybinds.OneShotDefined.ContainsKey(keysState))
                {
                    keybinds.Execute(keysState, e.CurrentKeyInfo.IsKeyHoldDown);
                    return;
                }
            }

            var input = e.ConvertToCurrentLanguage();

            if (input.Length > 0 && _command != null)
            {
                _command.Invoke(input, keysState);
                return;
            }
            if (keybinds.Contains(keysState))
            {
                if (e.CurrentKeyInfo.IsKeyHoldDown && !keybinds.CanActWhenKeyRepeat(keysState))
                {
                    return;
                }
                var operation = keybinds.GetAction(keysState);
                ReleaseKeys(keysState);
                operation?.Invoke();
                return;
            }

            //var keyset = new KeySet(key);
            var keyset = GenerateKeySet(key, keysState);

            if (keybinds.Contains(keyset))
            {
                if (e.CurrentKeyInfo.IsKeyHoldDown && !keybinds.CanActWhenKeyRepeat(keyset))
                {
                    return;
                }
                var operation = keybinds.GetAction(keyset);
                ReleaseKeys(keysState);
                operation?.Invoke();
                return;
            }

            e.Handled = !_currentKeybinds.IsEnabledWindowsKeybinds;
            return;
        }
コード例 #14
0
 public void Initialize(IKeyboardPluginContext context)
 {
     context.HookHandlers.IgnoreInjected = true;
 }