aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.RemoteDesktop/Input/KeyboardController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.RemoteDesktop/Input/KeyboardController.cs')
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Input/KeyboardController.cs79
1 files changed, 79 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Input/KeyboardController.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Input/KeyboardController.cs
new file mode 100644
index 000000000..832018dac
--- /dev/null
+++ b/Software/Visual_Studio/Tango.RemoteDesktop/Input/KeyboardController.cs
@@ -0,0 +1,79 @@
+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<VirtualKeyCode> modifierKeys = new List<VirtualKeyCode>();
+
+ 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);
+
+ if (ctrlDown || shitDown || altDown)
+ {
+ List<VirtualKeyCode> modifierKeys = new List<VirtualKeyCode>();
+
+ 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.KeyUp(virtualKey);
+ }
+ }
+ }
+}