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); }
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 }); }
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); }
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 }); }
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 }); }
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); } }
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); }
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); }
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 { } }
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); } }
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); } }
/*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 }); }