public static bool SendKeyboardInput(Keys key, KeyStates state) { var inputEvent = new NativeInputEvent() { Type = NativeInputType.Keyboard }; inputEvent.KeyboardInput.Key = (ushort)key; if ((state & KeyStates.Toggled) == KeyStates.Toggled) { inputEvent.KeyboardInput.Flags = NativeKeyboardEventFlags.Down; if (User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) == 0u) { return(false); } inputEvent.KeyboardInput.Flags = NativeKeyboardEventFlags.Up; return(User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) != 0u); } else if ((state & KeyStates.Down) == KeyStates.Down) { inputEvent.KeyboardInput.Flags = NativeKeyboardEventFlags.Down; return(User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) != 0u); } else { inputEvent.KeyboardInput.Flags = NativeKeyboardEventFlags.Up; return(User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) != 0u); } }
private static void Handler(NativeInputEvent inputEvent) { // button, state, IsVolumeKey var(b, s, v) = ((HardwareButton)inputEvent.Code, inputEvent.Value == 1, inputEvent.Code < 116); switch (b) { case HardwareButton.Power: OnPowerKeyStateChanged?.Invoke(inputEvent.Value == 1); break; case HardwareButton.VolumeUp: OnVolumeUpKeyStateChanged?.Invoke(inputEvent.Value == 1); break; case HardwareButton.VolumeDown: OnVolumeDownKeyStateChanged?.Invoke(inputEvent.Value == 1); break; } if (v) { OnVolumeKeyStateChanged?.Invoke(b, s); } OnKeyStateChanged?.Invoke(b, s); }
private static void Handler(NativeInputEvent inputEvent) { OnPluggedRaw?.Invoke(inputEvent); OnPlugged?.Invoke(Kind); if (inputEvent.Code == 2 && inputEvent.Value == 1) { OnPluggedIn?.Invoke(Kind); } else if (inputEvent.Code == 2 && inputEvent.Value == 0) { OnPluggedOut?.Invoke(Kind); } }
public static bool SendMouseInput(Keys key, KeyStates state) { var inputEvent = new NativeInputEvent() { Type = NativeInputType.Mouse }; if (key == Keys.XButton1) { inputEvent.MouseInput.MouseData = 1u; } if (key == Keys.XButton2) { inputEvent.MouseInput.MouseData = 2u; } if ((state & KeyStates.Toggled) == KeyStates.Toggled) { inputEvent.MouseInput.Flags = GetMouseEventFlags(key, true); if (User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) == 0u) { return(false); } inputEvent.MouseInput.Flags = GetMouseEventFlags(key, false); return(User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) != 0u); } else if ((state & KeyStates.Down) == KeyStates.Down) { inputEvent.MouseInput.Flags = GetMouseEventFlags(key, true); return(User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) != 0u); } else { inputEvent.MouseInput.Flags = GetMouseEventFlags(key, false); return(User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) != 0u); } }
public static bool SendMouseMoveInput(int x, int y, bool relative) { if (!relative) { x *= ushort.MaxValue / Screen.PrimaryScreen.Bounds.Width; y *= ushort.MaxValue / Screen.PrimaryScreen.Bounds.Height; } var inputEvent = new NativeInputEvent() { Type = NativeInputType.Mouse }; inputEvent.MouseInput.Flags = relative ? NativeMouseEventFlags.Move : NativeMouseEventFlags.Absolute | NativeMouseEventFlags.Move; inputEvent.MouseInput.X = x; inputEvent.MouseInput.Y = y; return(User32.SendInput(1u, ref inputEvent, NativeInputEvent.Size) != 0u); }