Как ввести ввод с клавиатуры нескольких ключей с кодом в UWP - PullRequest
1 голос
/ 18 июня 2019

Попытка симулировать нажатие клавиш Tab и Shift + Tab (обратное табулирование) с помощью функций в коде сзади, чтобы их можно было использовать с кнопками или, в этом случае, с другими клавишами на клавиатуре.

ПолученоСимуляция табуляции работает, я просто не уверен, как симулировать нажатие 2 клавиш одновременно для симуляции Shift + Tab

        private void Tab(string s)
        {
            InputInjector inputInjector = InputInjector.TryCreate();
            var info = new InjectedInputKeyboardInfo();
            if (s == "Right")
            {
                info.VirtualKey = (ushort)(VirtualKey.Tab);
            }
            else if (s == "Left")
            {
                //This doesn't actually exist, but How would I do this?
                info.VirtualKey = (ushort)(VirtualKey.ShiftTab);
            }

            inputInjector.InjectKeyboardInput(new[] { info });
        }

        private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            switch (e.Key)
            {
                case VirtualKey.Number1:
                    Tab("Left");
                    break;
                case VirtualKey.Q:
                    Tab("Right");
                    break;
            }
        }

Пока что табуляция работает нормально, когда нажимается клавиша Q, я простоНужно выяснить, как сделать Shift + Tab, когда нажата клавиша Number1.Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Они называются Modifiers

VirtualKey + VirtualKeyModifiers

https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.input.keyboardaccelerator.Modifiers https://docs.microsoft.com/en-us/uwp/api/windows.system.virtualkeymodifiers

Если вы хотите использовать InputInjector посмотрите на ScanCode, поскольку они представляют уникальные идентификаторы для клавиш на клавиатуре - теперь они могут быть не одинаковыми для всех клавиатур - но клавиша Shift должна быть одинаковой.Я приложил список распространенных ScanCodes - прочитайте ScanCode, чтобы узнать, какое значение он вам дает.InputInjector принимает массив, поэтому просто укажите путь к обоим кодам, которые вы хотите ввести, или найдите объединенный код ScanCode

https://docs.microsoft.com/en-us/uwp/api/windows.ui.input.preview.injection.injectedinputkeyboardinfo https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html

Попробуйте ScanCode для Shift-Tab как 0F

0 голосов
/ 20 июня 2019

Чтобы ответить на мой собственный вопрос. После некоторой помощи от другого пользователя в похожем вопросе проще всего смоделировать нажатие нескольких кнопок следующим образом:

            InputInjector inputInjector = InputInjector.TryCreate();
            var shift = new InjectedInputKeyboardInfo();
            shift.VirtualKey = (ushort)(VirtualKey.Shift);
            shift.KeyOptions = InjectedInputKeyOptions.None;


            var tab = new InjectedInputKeyboardInfo();
            tab.VirtualKey = (ushort)(VirtualKey.Tab);
            tab.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { shift, tab });

В этом примере я использую SHIFT + Tab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...