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);
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
        }