protected override void OnDetached()
        {
            if (Control != null)
            {
                Control.PointerReleased -= PointerReleased;
            }
            else if (Container != null)
            {
                Container.PointerReleased -= PointerReleased;
            }

            if (entry != null)
            {
                entry.Focused   -= Entry_Focused;
                entry.Unfocused -= Entry_Unfocused;

                entry = null;
            }

            visualElement = null;
            inputInjector = null;

            leftWindowsDown = leftWindowsUp = null;
            periodDown      = periodUp = null;
        }
        private bool HandleVirtualKeyList(List <int> vkList)
        {
            var state = new Dictionary <int, bool>();
            var keys  = new List <InjectedInputKeyboardInfo>();

            foreach (var vk in vkList)
            {
                var key = new InjectedInputKeyboardInfo();
                key.VirtualKey = (ushort)vk;
                if (state.ContainsKey(vk))
                {
                    key.KeyOptions = InjectedInputKeyOptions.KeyUp;
                    state.Remove(vk);
                }
                else
                {
                    state.Add(vk, true);
                }
                keys.Add(key);
            }
            _injector.InjectKeyboardInput(keys);

            UpdatePredictions();
            return(true);
        }
        private async void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)
        {
            var pointerPosition = Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerPosition;
            var x = pointerPosition.X;
            var y = pointerPosition.Y;

            await NavigateMouse();

            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.Menu);
            tab.KeyOptions = InjectedInputKeyOptions.None;

            var Tab = new InjectedInputKeyboardInfo();

            Tab.VirtualKey = (ushort)(VirtualKey.A);
            Tab.KeyOptions = InjectedInputKeyOptions.None;

            inputInjector.InjectKeyboardInput(new[] { shift, tab, Tab });
            InputInjector iiinputInjector = InputInjector.TryCreate();

            shift.KeyOptions = InjectedInputKeyOptions.KeyUp;
            tab.KeyOptions   = InjectedInputKeyOptions.KeyUp;
            Tab.KeyOptions   = InjectedInputKeyOptions.KeyUp;
            inputInjector.InjectKeyboardInput(new[] { shift, tab, Tab });
            //  Window.Current.CoreWindow.PointerPosition = new Point(x, y);
        }
        private void InjectString(string str, bool addSpace)
        {
            if (addSpace)
            {
                str += " ";
            }

            var keys = new List <InjectedInputKeyboardInfo>();

            foreach (var ch in str)
            {
                var key = new InjectedInputKeyboardInfo()
                {
                    ScanCode   = ch,
                    KeyOptions = InjectedInputKeyOptions.Unicode
                };
                keys.Add(key);

                key = new InjectedInputKeyboardInfo()
                {
                    ScanCode   = ch,
                    KeyOptions = InjectedInputKeyOptions.Unicode | InjectedInputKeyOptions.KeyUp
                };
                keys.Add(key);
            }
            _injector.InjectKeyboardInput(keys);
        }
Example #5
0
        static void startTypingOnKeyboard(string textLine)
        {
            InputInjector inputInjector = InputInjector.TryCreate();

            foreach (var letter in textLine)
            {
                if (letter.ToString() == "!")
                {
                    var shift = new InjectedInputKeyboardInfo();
                    shift.VirtualKey = (ushort)(VirtualKey.Shift);
                    shift.KeyOptions = InjectedInputKeyOptions.None;


                    var one = new InjectedInputKeyboardInfo();
                    one.VirtualKey = (ushort)(VirtualKey.Number1);
                    one.KeyOptions = InjectedInputKeyOptions.None;

                    inputInjector.InjectKeyboardInput(new[] { shift, one });
                }
                else
                {
                    var info = new InjectedInputKeyboardInfo();
                    info.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey), letter.ToString(), true));
                    inputInjector.InjectKeyboardInput(new[] { info });
                }
            }

            var enter = new InjectedInputKeyboardInfo();

            enter.VirtualKey = (ushort)(VirtualKey.Enter);
            enter.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { enter });
        }
Example #6
0
        private void MaximizeWindow()
        {
            InputInjector inputInjector = InputInjector.TryCreate();

            var key1 = new InjectedInputKeyboardInfo();

            key1.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey),
                                                              VirtualKey.LeftWindows.ToString(), true));

            var key2 = new InjectedInputKeyboardInfo();

            key2.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey),
                                                              VirtualKey.Up.ToString(), true));

            var keyUp1 = new InjectedInputKeyboardInfo();

            keyUp1.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey),
                                                                VirtualKey.LeftWindows.ToString(), true));
            keyUp1.KeyOptions = InjectedInputKeyOptions.KeyUp;

            var keyUp2 = new InjectedInputKeyboardInfo();

            keyUp2.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey),
                                                                VirtualKey.Up.ToString(), true));
            keyUp2.KeyOptions = InjectedInputKeyOptions.KeyUp;

            inputInjector.InjectKeyboardInput(new[] { key1, key2, keyUp1, keyUp2 });
        }
        private async void ContextMenu_Click(object sender, RoutedEventArgs e)
        {
            var pointerPosition = Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerPosition;
            var x = pointerPosition.X;
            var y = pointerPosition.Y;

            await NavigateMouse();

            InputInjector inputInjector = InputInjector.TryCreate();
            var           info          = new InjectedInputKeyboardInfo();

            info.VirtualKey = (ushort)VirtualKey.RightShift;
            info.KeyOptions = InjectedInputKeyOptions.None;
            var tab = new InjectedInputKeyboardInfo();

            tab.VirtualKey = (ushort)VirtualKey.F10;
            tab.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { tab, info });
            tab.KeyOptions = InjectedInputKeyOptions.KeyUp;

            //and generate the key up event next, doing it this way avoids
            //the need for a delay like in Martin's sample code.
            info.KeyOptions = InjectedInputKeyOptions.KeyUp;
            inputInjector.InjectKeyboardInput(new[] { info, tab });
            //  Window.Current.CoreWindow.PointerPosition = new Point(x, y);
        }
Example #8
0
        private void InvokeKey(VirtualKey key)
        {
            InputInjector inputInjector = InputInjector.TryCreate();
            var           info          = new InjectedInputKeyboardInfo();

            info.VirtualKey = (ushort)(VirtualKey)key;
            inputInjector.InjectKeyboardInput(new[] { info });
        }
        private void SendVirtualKey(VirtualKey vk)
        {
            var key = new InjectedInputKeyboardInfo();

            key.VirtualKey = (ushort)vk;
            key.KeyOptions = InjectedInputKeyOptions.None;

            this.inputInjector.InjectKeyboardInput(new[] { key });
        }
        private void SendUnicodeKey(char unicodeKey)
        {
            // API In Background: https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-keybdinput
            var key = new InjectedInputKeyboardInfo();

            key.ScanCode   = (ushort)unicodeKey;
            key.KeyOptions = InjectedInputKeyOptions.Unicode;

            this.inputInjector.InjectKeyboardInput(new[] { key });
        }
Example #11
0
        private void PressKey(InjectedInputKeyboardInfo keyDown)
        {
            var keyUp = new InjectedInputKeyboardInfo
            {
                KeyOptions = keyDown.KeyOptions | InjectedInputKeyOptions.KeyUp,
                ScanCode   = keyDown.ScanCode,
                VirtualKey = keyDown.VirtualKey
            };

            _injector.InjectKeyboardInput(new[] { keyDown, keyUp });
        }
Example #12
0
        private bool HandleVirtualKey(int vk)
        {
            if (vk < 0)
            {
                return(false);
            }
            var key = new InjectedInputKeyboardInfo();

            key.VirtualKey = (ushort)vk;
            _injector.InjectKeyboardInput(new[] { key });
            return(true);
        }
        public override void InjectKeyboardInput(RIMNativeMethods.KeyboardInput keyboardInput)
        {
            var inputKeyboardInfo = new InjectedInputKeyboardInfo();

            inputKeyboardInfo.KeyOptions = (InjectedInputKeyOptions)(int)keyboardInput.flags;
            inputKeyboardInfo.ScanCode   = keyboardInput.scanCode;
            inputKeyboardInfo.VirtualKey = keyboardInput.virtualKeyCode;
            var inputKeyboardInfoList = new List <InjectedInputKeyboardInfo>();

            inputKeyboardInfoList.Add(item: inputKeyboardInfo);
            this.injector.InjectKeyboardInput(input: inputKeyboardInfoList);
        }
 public void SelectRelease()
 {
     if (selectPressed)
     {
         selectPressed = false;
         if (mode == 0)
         {
             var info = new InjectedInputKeyboardInfo();
             info.VirtualKey = SelectKey;
             info.KeyOptions = InjectedInputKeyOptions.KeyUp;
             inputInjector.InjectKeyboardInput(new[] { info });
         }
     }
 }
 //Select
 public void SelectPress()
 {
     if (!selectPressed)
     {
         selectPressed = true;
         //On tap code
     }
     if (mode == 0)
     {
         var info = new InjectedInputKeyboardInfo();
         info.VirtualKey = SelectKey;
         inputInjector.InjectKeyboardInput(new[] { info });
     }
 }
        private async void TypeText(String input)
        {
            //TypingTarget.Focus(FocusState.Programmatic);
            await Task.Delay(100); //we must yield the UI thread so that focus can be acquired

            InputInjector inputInjector = InputInjector.TryCreate();

            foreach (var letter in input)
            {
                var info = new InjectedInputKeyboardInfo();
                info.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey), letter.ToString(), true));
                inputInjector.InjectKeyboardInput(new[] { info });
                await Task.Delay(100);
            }
        }
Example #17
0
        public void SendKeyDown(VirtualKey virtualKey)
        {
            IEnumerable <InjectedInputKeyboardInfo> keyDown;

            if (!keyDownCache.TryGetValue(virtualKey, out keyDown))
            {
                var kd = new InjectedInputKeyboardInfo();
                kd.KeyOptions = InjectedInputKeyOptions.ScanCode;// InjectedInputKeyOptions.ScanCode;
                kd.ScanCode   = (ushort)MapVirtualKeyW((ushort)virtualKey, 0);
                //kd.VirtualKey = (ushort)virtualKey;
                keyDown = new[] { kd };
                keyDownCache[virtualKey] = keyDown;
            }

            injector.InjectKeyboardInput(keyDown);
        }
Example #18
0
        public void SendKeyUp(VirtualKey virtualKey)
        {
            IEnumerable <InjectedInputKeyboardInfo> keyUp;

            if (!keyUpCache.TryGetValue(virtualKey, out keyUp))
            {
                var ku = new InjectedInputKeyboardInfo();
                ku.KeyOptions = InjectedInputKeyOptions.KeyUp | InjectedInputKeyOptions.ScanCode;
                ku.ScanCode   = (ushort)MapVirtualKeyW((ushort)virtualKey, 0);
                //ku.VirtualKey = (ushort)virtualKey;
                keyUp = new[] { ku };
                keyUpCache[virtualKey] = keyUp;
            }

            injector.InjectKeyboardInput(keyUp);
        }
 public void InjectInputForKeyboard(string[] codesString)
 {
     InjectedInputKeyboardInfo[] info = new InjectedInputKeyboardInfo[codesString.Length];
     for (int i = 0; i < codesString.Length; i++)
     {
         info[i]            = new InjectedInputKeyboardInfo();
         info[i].VirtualKey = ushort.Parse(codesString[i]);
         info[i].KeyOptions = InjectedInputKeyOptions.None;
     }
     inputInjector.InjectKeyboardInput(info);
     for (int i = 0; i < info.Length; i++)
     {
         info[i].KeyOptions = InjectedInputKeyOptions.KeyUp;
     }
     inputInjector.InjectKeyboardInput(info);
 }
Example #20
0
        public static async void OpenTorrent()
        {
            try
            {
                await Task.Delay(10000);

                // For console = SendKeys.SendWait("{Enter}");
                InputInjector inputInjector = InputInjector.TryCreate();

                var info = new InjectedInputKeyboardInfo();
                info.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey), "{Enter}", true));
            }
            catch
            {
            }
        }
Example #21
0
        private async void UniversalButton_Click(object sender, RoutedEventArgs e)
        {
            var        pointerPosition = Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerPosition;
            var        x    = pointerPosition.X;
            var        y    = pointerPosition.Y;
            var        X    = Window.Current.Bounds.Width - 50;
            var        Y    = Window.Current.Bounds.Height - 800;
            VirtualKey Key  = VirtualKey.H;
            Button     Item = sender as Button;
            string     Name = Item.Name.ToString();

            switch (Name)
            {
            case "Find":
                Key = VirtualKey.F;
                break;

            case "Replace":
                Key = VirtualKey.H;
                break;
            }
            CodeEditor.UniversalEditor.Focus(FocusState.Pointer);
            await Task.Delay(100);

            ////
            InputInjector inputInjector = InputInjector.TryCreate();
            var           shift         = new InjectedInputKeyboardInfo();

            shift.VirtualKey = (ushort)(VirtualKey.LeftControl);
            shift.KeyOptions = InjectedInputKeyOptions.None;

            ////
            var tab = new InjectedInputKeyboardInfo();

            tab.VirtualKey = (ushort)Key;
            tab.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { shift, tab });
            InputInjector iiinputInjector = InputInjector.TryCreate();


            ////
            inputInjector.InjectKeyboardInput(new[] { shift, tab });
            shift.KeyOptions = InjectedInputKeyOptions.KeyUp;
            inputInjector.InjectKeyboardInput(new[] { shift });

            //  Window.Current.CoreWindow.PointerPosition = new Point(x, y);
        }
        private async void Tab_Click(object sender, RoutedEventArgs e)
        {
            var pointerPosition = Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerPosition;
            var x = pointerPosition.X;
            var y = pointerPosition.Y;

            await NavigateMouse();

            InputInjector inputInjector = InputInjector.TryCreate();
            var           tab           = new InjectedInputKeyboardInfo();

            tab.VirtualKey = (ushort)VirtualKey.Tab;
            tab.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { tab });
            tab.KeyOptions = InjectedInputKeyOptions.KeyUp;
            inputInjector.InjectKeyboardInput(new[] { tab });
            //  Window.Current.CoreWindow.PointerPosition = new Point(x, y);
        }
        private async void OnKeyboardButtonClick(object sender, RoutedEventArgs e)
        {
            var button = sender as ButtonBase;

            Target.Focus(FocusState.Programmatic);
            await Task.Delay(1);

            string     unicode;
            string     container;
            int        vk;
            List <int> vkList;
            bool       injected = false;

            if ((container = Keyboard.GetPageContainer(button)) != null)
            {
                HandlePageChange(container, button);
            }
            else if ((vk = Keyboard.GetVK(button)) != 0)
            {
                injected = HandleVirtualKey(vk);
            }
            else if (((vkList = Keyboard.GetVKList(button)) != null) && (vkList.Count > 0))
            {
                injected = HandleVirtualKeyList(vkList);
            }
            else if ((unicode = Keyboard.GetUnicode(button)) != null)
            {
                injected = HandleUnicodeChar(unicode);
            }
            else
            {
                var key = new InjectedInputKeyboardInfo();
                key.ScanCode   = button.Content.ToString()[0];
                key.KeyOptions = InjectedInputKeyOptions.Unicode;
                _injector.InjectKeyboardInput(new[] { key });
                UpdatePredictions();
                injected = true;
            }

            if (injected)
            {
                RevertTempPage(button);
            }
        }
 public void RightRelease()
 {
     if (rightPressed)
     {
         rightPressed = false;
         if (mode == 0)
         {
             var info = new InjectedInputKeyboardInfo();
             info.VirtualKey = RightKey;
             info.KeyOptions = InjectedInputKeyOptions.KeyUp;
             inputInjector.InjectKeyboardInput(new[] { info });
         }
         if (mode == 1)   //Gamepad input
         {
             var info = new InjectedInputGamepadInfo();
             info.LeftThumbstickX = 0.0;
             inputInjector.InjectGamepadInput(info);
         }
     }
 }
 //Right
 public void RightPress()
 {
     if (!rightPressed)
     {
         rightPressed = true;
         //On tap code
     }
     if (mode == 0)
     {
         var info = new InjectedInputKeyboardInfo();
         info.VirtualKey = RightKey;
         inputInjector.InjectKeyboardInput(new[] { info });
     }
     if (mode == 1)   //Gamepad input
     {
         var info = new InjectedInputGamepadInfo();
         info.LeftThumbstickX = 1.0;
         inputInjector.InjectGamepadInput(info);
     }
 }
Example #26
0
        private async void TypeText(string KeyIn)
        {
            InputInjector inputInjector = InputInjector.TryCreate();

            foreach (var letter in KeyIn)
            {
                if ((letter >= '0' && letter <= '9') ||
                    (letter >= 'A' && letter <= 'Z') ||
                    (letter >= 'a' && letter <= 'z'))
                {
                    var info = new InjectedInputKeyboardInfo();

                    // change character to virtual key code
                    if (letter >= '0' && letter <= '9')
                    {
                        info.VirtualKey = (ushort)letter;
                    }
                    else if (letter >= 'a' && letter <= 'z')
                    {
                        int a = (int)letter - 32;
                        info.VirtualKey = (ushort)a;
                    }
                    else if (letter >= 'A' && letter <= 'Z')
                    {
                        info.VirtualKey = (ushort)letter;
                    }

                    inputInjector.InjectKeyboardInput(new[] { info });
                    await Task.Delay(10);
                }
            }

            {
                var info = new InjectedInputKeyboardInfo();

                // change character to virtual key code
                info.VirtualKey = (ushort)13; // Enter/ Return
                inputInjector.InjectKeyboardInput(new[] { info });
                await Task.Delay(10);
            }
        }
Example #27
0
        /*private async void OnClick()
         * {
         *  show.Focus(FocusState.Programmatic);
         *  await Task.Delay(100); //we must yield the UI thread so that focus can be acquired
         *  string a = "H";
         *  InputInjector injector =  InputInjector.TryCreate();
         *  char c = a[0];
         *  InjectedInputKeyboardInfo keyinfo = new InjectedInputKeyboardInfo();
         *  keyinfo.VirtualKey = (ushort)(VirtualKey)Enum.Parse(typeof(VirtualKey), a.ToString(), true); ;
         *  InjectedInputKeyboardInfo[] infos =
         *  {
         *      keyinfo
         *  };
         *  // 让文本框获得键盘焦点,不然输不进去
         *
         *  injector.InjectKeyboardInput(infos);
         *  await Task.Delay(100);
         * }*/
        private async void ShowOne(string mystring)
        {
            show.Focus(FocusState.Programmatic);
            await Task.Delay(100);

            InputInjector injector = InputInjector.TryCreate();
            List <InjectedInputKeyboardInfo> inputs           = new List <InjectedInputKeyboardInfo>();
            InjectedInputKeyboardInfo        leftshiftkeydown = new InjectedInputKeyboardInfo();

            for (int i = 0; i < mystring.Length; i++)
            {
                if (i == 0)
                {
                    leftshiftkeydown.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey), "LeftShift", true));
                    leftshiftkeydown.KeyOptions = InjectedInputKeyOptions.None;
                    inputs.Add(leftshiftkeydown);
                    await Task.Delay(100);

                    InjectedInputKeyboardInfo hkey = new InjectedInputKeyboardInfo();
                    hkey.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey), mystring[i].ToString(), true));
                    hkey.KeyOptions = InjectedInputKeyOptions.None;
                    inputs.Add(hkey);
                    await Task.Delay(100);

                    InjectedInputKeyboardInfo leftshiftkeyup = new InjectedInputKeyboardInfo();
                    leftshiftkeyup.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey), "LeftShift", true));
                    leftshiftkeyup.KeyOptions = InjectedInputKeyOptions.KeyUp;
                    inputs.Add(leftshiftkeyup);
                    await Task.Delay(100);

                    injector.InjectKeyboardInput(inputs);
                }
                else
                {
                    var info = new InjectedInputKeyboardInfo();
                    info.VirtualKey = (ushort)(VirtualKey)Enum.Parse(typeof(VirtualKey), mystring[i].ToString(), true);
                    injector.InjectKeyboardInput(new[] { info });
                    await Task.Delay(100);
                }
            }
        }
        private async void UniversalToolBarButton_Click(object sender, RoutedEventArgs e)
        {
            var    pointerPosition = Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerPosition;
            var    x = pointerPosition.X;
            var    y = pointerPosition.Y;
            string TextSelected;
            Button b = sender as Button;

            TextSelected = b.Content.ToString();
            CodeEditor.UniversalEditor.SelectedText = TextSelected;
            await NavigateMouse();

            InputInjector inputInjector = InputInjector.TryCreate();
            var           tab           = new InjectedInputKeyboardInfo();

            tab.VirtualKey = (ushort)VirtualKey.Left;
            tab.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { tab });
            tab.KeyOptions = InjectedInputKeyOptions.KeyUp;
            inputInjector.InjectKeyboardInput(new[] { tab });
        }
        private async void UniversalSelectionMenuFlyoutItem_Click(object sender, RoutedEventArgs e)
        {
            var            pointerPosition = Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerPosition;
            var            x          = pointerPosition.X;
            var            y          = pointerPosition.Y;
            MenuFlyoutItem Item       = sender as MenuFlyoutItem;
            string         Tag        = Item.Tag.ToString();
            VirtualKey     FirstKeyV  = VirtualKey.A;
            VirtualKey     SecondKeyV = VirtualKey.Menu;
            VirtualKey     ThirdKeyV  = VirtualKey.A;

            if (Tag.Contains("Ctrl"))
            {
                FirstKeyV = VirtualKey.LeftControl;
            }
            else if (Tag.Contains("Shift"))
            {
                FirstKeyV = VirtualKey.Shift;
            }
            else
            {
                FirstKeyV = VirtualKey.None;
            }

            if (Tag.Contains("UpArrow"))
            {
                ThirdKeyV = VirtualKey.Up;
            }
            else if (Tag.Contains("DownArrow"))
            {
                ThirdKeyV = VirtualKey.Down;
            }
            else if (Tag.Contains("RightArrow"))
            {
                ThirdKeyV = VirtualKey.Down;
            }
            else if (Tag.Contains("L"))
            {
                ThirdKeyV = VirtualKey.L;
            }
            else if (Tag.Contains("I"))
            {
                ThirdKeyV = VirtualKey.I;
            }
            else
            {
                ThirdKeyV = VirtualKey.Left;
            }
            if (Tag.Contains("Shift") && FirstKeyV == VirtualKey.LeftControl)
            {
                SecondKeyV = VirtualKey.RightShift;
            }
            await NavigateMouse();

            ////
            InputInjector inputInjector = InputInjector.TryCreate();
            var           FirstKey      = new InjectedInputKeyboardInfo();

            FirstKey.VirtualKey = (ushort)FirstKeyV;
            FirstKey.KeyOptions = InjectedInputKeyOptions.None;

            ////
            var SecondKey = new InjectedInputKeyboardInfo();

            SecondKey.VirtualKey = (ushort)SecondKeyV;
            SecondKey.KeyOptions = InjectedInputKeyOptions.None;
            var ThirdKey = new InjectedInputKeyboardInfo();

            ThirdKey.VirtualKey = (ushort)ThirdKeyV;
            ThirdKey.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { FirstKey, SecondKey, ThirdKey });
            ////
            inputInjector.InjectKeyboardInput(new[] { FirstKey, SecondKey, ThirdKey });
            FirstKey.KeyOptions  = InjectedInputKeyOptions.KeyUp;
            SecondKey.KeyOptions = InjectedInputKeyOptions.KeyUp;
            ThirdKey.KeyOptions  = InjectedInputKeyOptions.KeyUp;
            inputInjector.InjectKeyboardInput(new[] { FirstKey, SecondKey, ThirdKey });
            //  Window.Current.CoreWindow.PointerPosition = new Point(x, y);
        }
        private void DisplayEmojiSelector()
        {
            // Ensure to be on Main UI Thread
            if (!MainThread.IsMainThread)
            {
                MainThread.BeginInvokeOnMainThread(() => DisplayEmojiSelector());
                return;
            }

            if (inputInjector == null)
            {
                try
                {
                    inputInjector = InputInjector.TryCreate();
                }
                catch
                {
                    // Nothing to do
                }
            }

            // If we cannot create InputInjector, we display Emoji Selector in a different way
            if (inputInjector == null)
            {
                CoreInputView.GetForCurrentView().TryShow(CoreInputViewKind.Emoji);
                return;
            }

            // If necessary create first input keyboard info
            if (leftWindowsDown == null)
            {
                leftWindowsDown            = new InjectedInputKeyboardInfo();
                leftWindowsDown.VirtualKey = (ushort)(VirtualKey.LeftWindows);
                leftWindowsDown.KeyOptions = InjectedInputKeyOptions.None;
            }

            if (leftWindowsUp == null)
            {
                leftWindowsUp            = new InjectedInputKeyboardInfo();
                leftWindowsUp.VirtualKey = (ushort)(VirtualKey.LeftWindows);
                leftWindowsUp.KeyOptions = InjectedInputKeyOptions.KeyUp;
            }

            if (periodDown == null)
            {
                periodDown            = new InjectedInputKeyboardInfo();
                periodDown.VirtualKey = 0xBE;
                periodDown.KeyOptions = InjectedInputKeyOptions.None;
            }

            if (periodUp == null)
            {
                periodUp            = new InjectedInputKeyboardInfo();
                periodUp.VirtualKey = 0xBE;
                periodUp.KeyOptions = InjectedInputKeyOptions.KeyUp;
            }


            // Send keyboard inputs
            inputInjector.InjectKeyboardInput(new[] { leftWindowsDown, periodDown, periodUp, leftWindowsUp });
        }