Пример #1
0
        public static SpecialKeyState CheckModifiers()
        {
            SpecialKeyState state = new SpecialKeyState();

            if ((Keyboard.GetKeyStates(Key.LeftShift) & KeyStates.Down) > 0 ||
                (Keyboard.GetKeyStates(Key.RightShift) & KeyStates.Down) > 0)
            {
                state.ShiftPressed = true;
            }
            if ((Keyboard.GetKeyStates(Key.LWin) & KeyStates.Down) > 0 ||
                (Keyboard.GetKeyStates(Key.RWin) & KeyStates.Down) > 0)
            {
                state.WinPressed = true;
            }
            if ((Keyboard.GetKeyStates(Key.LeftCtrl) & KeyStates.Down) > 0 ||
                (Keyboard.GetKeyStates(Key.RightCtrl) & KeyStates.Down) > 0)
            {
                state.CtrlPressed = true;
            }
            if ((Keyboard.GetKeyStates(Key.LeftAlt) & KeyStates.Down) > 0 ||
                (Keyboard.GetKeyStates(Key.RightAlt) & KeyStates.Down) > 0)
            {
                state.AltPressed = true;
            }
            return(state);
        }
Пример #2
0
        void TbHotkey_OnPreviewKeyDown(object sender, KeyEventArgs e)
        {
            e.Handled        = true;
            tbMsg.Visibility = Visibility.Hidden;

            //when alt is pressed, the real key should be e.SystemKey
            Key key = (e.Key == Key.System ? e.SystemKey : e.Key);

            SpecialKeyState specialKeyState = GlobalHotkey.Instance.CheckModifiers();

            var hotkeyModel = new HotkeyModel(
                specialKeyState.AltPressed,
                specialKeyState.ShiftPressed,
                specialKeyState.WinPressed,
                specialKeyState.CtrlPressed,
                key);

            var hotkeyString = hotkeyModel.ToString();

            if (hotkeyString == tbHotkey.Text)
            {
                return;
            }

            Dispatcher.InvokeAsync(async() =>
            {
                await Task.Delay(500);
                SetHotkey(hotkeyModel);
            });
        }
Пример #3
0
        void TbHotkey_OnPreviewKeyDown(object sender, KeyEventArgs e)
        {
            e.Handled        = true;
            tbMsg.Visibility = Visibility.Hidden;

            //when alt is pressed, the real key should be e.SystemKey
            Key key = (e.Key == Key.System ? e.SystemKey : e.Key);

            SpecialKeyState specialKeyState = GlobalHotkey.Instance.CheckModifiers();

            var hotkeyModel = new HotkeyModel(
                specialKeyState.AltPressed,
                specialKeyState.ShiftPressed,
                specialKeyState.WinPressed,
                specialKeyState.CtrlPressed,
                key);

            var hotkeyString = hotkeyModel.ToString();

            if (hotkeyString == tbHotkey.Text)
            {
                return;
            }

            Dispatcher.DelayInvoke("HotkeyAvailabilityTest",
                                   o =>
            {
                SetHotkey(hotkeyModel);
            },
                                   TimeSpan.FromMilliseconds(500));
        }
Пример #4
0
        public SpecialKeyState CheckModifiers()
        {
            SpecialKeyState state = new SpecialKeyState();

            if ((InterceptKeys.GetKeyState(VK_SHIFT) & 0x8000) != 0)
            {
                //SHIFT is pressed
                state.ShiftPressed = true;
            }
            if ((InterceptKeys.GetKeyState(VK_CONTROL) & 0x8000) != 0)
            {
                //CONTROL is pressed
                state.CtrlPressed = true;
            }
            if ((InterceptKeys.GetKeyState(VK_ALT) & 0x8000) != 0)
            {
                //ALT is pressed
                state.AltPressed = true;
            }
            if ((InterceptKeys.GetKeyState(VK_WIN) & 0x8000) != 0)
            {
                //WIN is pressed
                state.WinPressed = true;
            }

            return(state);
        }
Пример #5
0
 private bool KListener_hookedKeyboardCallback(KeyEvent keyevent, int vkcode, SpecialKeyState state)
 {
     if (GlobalKeyboardEvent != null)
     {
         return(GlobalKeyboardEvent((int)keyevent, vkcode, state));
     }
     return(true);
 }
Пример #6
0
        private void SelectItem(int index)
        {
            int             zeroBasedIndex = index - 1;
            SpecialKeyState keyState       = GlobalHotkey.Instance.CheckModifiers();

            if (keyState.AltPressed || keyState.CtrlPressed)
            {
                List <Result> visibleResults = pnlResult.GetVisibleResults();
                if (zeroBasedIndex < visibleResults.Count)
                {
                    SelectResult(visibleResults[zeroBasedIndex]);
                }
            }
        }
Пример #7
0
        private bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
        {
            if (keyevent == 256 && vkcode == 68 && state.CtrlPressed && state.AltPressed) // 68 is D
            {
                var    foreGroundWindowPtr = NativeMethods.GetForegroundWindow();
                Window foreGroundWindow    = new Window(foreGroundWindowPtr);

                var quickAccessWindow = new QuickAccessKeywordAssignedWindow(foreGroundWindow);
                quickAccessWindow.ShowDialog();

                return(false);
            }
            return(true);
        }
Пример #8
0
 private bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
 {
     if (!_settings.OverrideAltTab)
     {
         return(true);
     }
     if (keyevent == (int)KeyEvent.WM_SYSKEYDOWN && vkcode == (int)Keys.Tab && state.AltPressed)
     {
         OnAltTabPressed();
         return(false);
     }
     if (keyevent == (int)KeyEvent.WM_SYSKEYUP && vkcode == (int)Keys.Tab)
     {
         //prevent system alt+tab action
         return(false);
     }
     return(true);
 }
Пример #9
0
Файл: Main.cs Проект: xieby/Wox
 bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
 {
     if (_settings.ReplaceWinR)
     {
         if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed)
         {
             WinRStroked = true;
             OnWinRPressed();
             return(false);
         }
         if (keyevent == (int)KeyEvent.WM_KEYUP && WinRStroked && vkcode == (int)Keys.LWin)
         {
             WinRStroked = false;
             return(false);
         }
     }
     return(true);
 }
Пример #10
0
Файл: Main.cs Проект: znatz/Wox
 bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
 {
     if (_settings.ReplaceWinR)
     {
         if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed)
         {
             WinRStroked = true;
             OnWinRPressed();
             return(false);
         }
         if (keyevent == (int)KeyEvent.WM_KEYUP && WinRStroked && vkcode == (int)Keys.LWin)
         {
             WinRStroked = false;
             keyboardSimulator.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.CONTROL);
             return(false);
         }
     }
     return(true);
 }
Пример #11
0
 private bool KListener_hookedKeyboardCallback(KeyEvent keyevent, int vkcode, SpecialKeyState state)
 {
     if (CommonStorage.Instance.UserSetting.ReplaceWinR)
     {
         //todo:need refatoring. move those codes to CMD file or expose events
         if (keyevent == KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed)
         {
             WinRStroked = true;
             Dispatcher.BeginInvoke(new Action(OnWinRPressed));
             return(false);
         }
         if (keyevent == KeyEvent.WM_KEYUP && WinRStroked && vkcode == (int)Keys.LWin)
         {
             WinRStroked = false;
             keyboardSimulator.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.CONTROL);
             return(false);
         }
     }
     return(true);
 }
        private void TbHotkey_OnPreviewKeyDown(object sender, KeyEventArgs e)
        {
            hotkeyUpdateSource?.Cancel();
            hotkeyUpdateSource?.Dispose();
            hotkeyUpdateSource = new();
            var token = hotkeyUpdateSource.Token;

            e.Handled = true;

            //when alt is pressed, the real key should be e.SystemKey
            Key key = e.Key == Key.System ? e.SystemKey : e.Key;

            SpecialKeyState specialKeyState = GlobalHotkey.CheckModifiers();

            var hotkeyModel = new HotkeyModel(
                specialKeyState.AltPressed,
                specialKeyState.ShiftPressed,
                specialKeyState.WinPressed,
                specialKeyState.CtrlPressed,
                key);

            var hotkeyString = hotkeyModel.ToString();

            if (hotkeyString == tbHotkey.Text)
            {
                return;
            }

            _ = Dispatcher.InvokeAsync(async() =>
            {
                await Task.Delay(500, token);
                if (!token.IsCancellationRequested)
                {
                    await SetHotkey(hotkeyModel);
                }
            });
        }
Пример #13
0
        bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
        {
            // not overriding Win+R
            // crutkas we need to earn the right for Win+R override

            /*
             * if (_settings.ReplaceWinR)
             * {
             *  if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed)
             *  {
             *      _winRStroked = true;
             *      OnWinRPressed();
             *      return false;
             *  }
             *  if (keyevent == (int)KeyEvent.WM_KEYUP && _winRStroked && vkcode == (int)Keys.LWin)
             *  {
             *      _winRStroked = false;
             *      _keyboardSimulator.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.BACK);
             *      return false;
             *  }
             * }
             */
            return(true);
        }
Пример #14
0
 bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
 {
     if (CMDStorage.Instance.ReplaceWinR)
     {
         if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed)
         {
             WinRStroked = true;
             OnWinRPressed();
             return false;
         }
         if (keyevent == (int)KeyEvent.WM_KEYUP && WinRStroked && vkcode == (int)Keys.LWin)
         {
             WinRStroked = false;
             keyboardSimulator.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.CONTROL);
             return false;
         }
     }
     return true;
 }
Пример #15
0
 bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
 {
     if (_settings.ReplaceWinR)
     {
         if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed)
         {
             WinRStroked = true;
             OnWinRPressed();
             return false;
         }
         if (keyevent == (int)KeyEvent.WM_KEYUP && WinRStroked && vkcode == (int)Keys.LWin)
         {
             WinRStroked = false;
             return false;
         }
     }
     return true;
 }