using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; using WindowsInput; using WindowsInput.Native; namespace Tango.RemoteDesktop.Input { public static class KeyboardController { private static InputSimulator simulator; static KeyboardController() { simulator = new InputSimulator(); } public static void KeyDown(Key key, bool ctrlDown, bool shitDown, bool altDown) { VirtualKeyCode virtualKey = (VirtualKeyCode)KeyInterop.VirtualKeyFromKey(key); if (ctrlDown || shitDown || altDown) { List modifierKeys = new List(); if (ctrlDown) { modifierKeys.Add(VirtualKeyCode.LCONTROL); } if (shitDown) { modifierKeys.Add(VirtualKeyCode.LSHIFT); } if (altDown) { modifierKeys.Add(VirtualKeyCode.MENU); } simulator.Keyboard.ModifiedKeyStroke(modifierKeys, virtualKey); } else { simulator.Keyboard.KeyDown(virtualKey); } } public static void KeyUp(Key key, bool ctrlDown, bool shitDown, bool altDown) { VirtualKeyCode virtualKey = (VirtualKeyCode)KeyInterop.VirtualKeyFromKey(key); simulator.Keyboard.KeyUp(virtualKey); } } }