/// <inheritdoc/>> public async Task StartProcessingInputEvents() { lock (_lock) { if (_isProcessingKeyboardEvents) { throw new InvalidOperationException($"{nameof(UserInputHandler)} is already processing keyboard events"); } _isProcessingKeyboardEvents = true; } using (IKeyboardEventSource keyboard = WindowsInput.Capture.Global.KeyboardAsync()) { using (IMouseEventSource mouse = WindowsInput.Capture.Global.MouseAsync()) { mouse.ButtonScroll += OnMouseScroll; keyboard.KeyEvent += OnKeyEvent; mouse.ButtonDown += (sender, args) => OnMouseOnButtonEvent(args, MouseEventType.KeyDown); mouse.ButtonUp += (sender, args) => OnMouseOnButtonEvent(args, MouseEventType.KeyUp); _taskCompletionSource = new TaskCompletionSource <bool>(); await _taskCompletionSource.Task.ConfigureAwait(false); } } }
private void Unsubscribe() { m_Keyboard?.Dispose(); m_Keyboard = null; m_Mouse?.Dispose(); m_Mouse = null; }
private static async void Listener_Triggered(IKeyboardEventSource Keyboard, object sender, KeyChordEventArgs e) { var ToSend = WindowsInput.Simulate.Events(); ToSend.Click("You pressed the magic keys."); using (Keyboard.Suspend()) { await ToSend.Invoke(); } }
private void Subscribe(IKeyboardEventSource Keyboard) { this.m_Keyboard?.Dispose(); this.m_Keyboard = Keyboard; if (Keyboard != default) { Keyboard.KeyEvent += this.Keyboard_KeyEvent; } }
/// <inheritdoc/> public async Task <UserInputKey> WaitForKeyPress(bool blockPressedKey = false) { var taskCompletionSource = new TaskCompletionSource <UserInputKey>(); using (IKeyboardEventSource keyboard = WindowsInput.Capture.Global.KeyboardAsync()) { using (IMouseEventSource mouse = WindowsInput.Capture.Global.MouseAsync()) { mouse.ButtonScroll += (_, keyEventArgs) => { if (keyEventArgs?.Data?.Button != null) { UserInputKey mappedKey = _keyMapper.MapToUserInputKey(keyEventArgs.Data.Offset); if (blockPressedKey) { keyEventArgs.Next_Hook_Enabled = false; } taskCompletionSource.SetResult(mappedKey); } }; mouse.ButtonDown += (_, keyEventArgs) => { if (keyEventArgs?.Data?.Button != null && keyEventArgs.Data.Button != ButtonCode.VScroll && keyEventArgs.Data.Button != ButtonCode.HScroll) { UserInputKey mappedKey = _keyMapper.MapToUserInputKey(keyEventArgs.Data.Button); if (blockPressedKey) { keyEventArgs.Next_Hook_Enabled = false; } taskCompletionSource.SetResult(mappedKey); } }; keyboard.KeyEvent += (_, keyEventArgs) => { if (keyEventArgs?.Data?.KeyDown != null) { UserInputKey mappedKey = _keyMapper.MapToUserInputKey(keyEventArgs.Data.KeyDown.Key); if (blockPressedKey) { keyEventArgs.Next_Hook_Enabled = false; } taskCompletionSource.SetResult(mappedKey); } }; return(await taskCompletionSource.Task.ConfigureAwait(false)); } } }
private static async void Listener_Triggered(IKeyboardEventSource Keyboard, object sender, TextSequenceEventArgs e) { e.Input.Next_Hook_Enabled = false; var ToSend = WindowsInput.Simulate.Events(); for (int i = 1; i < e.Sequence.Text.Length; i++) { ToSend.Click(WindowsInput.Events.KeyCode.Backspace); } ToSend.Click("Always ask albert!"); //We suspend keyboard events because we don't want to accidently trigger a recursive loop if our //sending text actually had 'aaa' in it. using (Keyboard.Suspend()) { await ToSend.Invoke(); } }
public KeyChordEventSource(IKeyboardEventSource Monitor, ChordClick Chord) : base(Monitor) { this.Chord = Chord; }
public KeySequenceEventSource(IKeyboardEventSource Monitor, SequenceClick Sequence) : base(Monitor) { this.Sequence = Sequence; }
public TextSequenceEventSource(IKeyboardEventSource Monitor, TextClick Sequence, StringComparison Comparison) : base(Monitor) { this.Sequence = Sequence; this.Comparison = Comparison; }
public TextSequenceEventSource(IKeyboardEventSource Monitor, TextClick Sequence) : this(Monitor, Sequence, StringComparison.InvariantCultureIgnoreCase) { }