private void CreateInputEvent(NativeMethods.INPUT_RECORD record, out InputEvent inputEvent) { inputEvent = new InputEvent(); switch (record.EventType) { case NativeMethods.MOUSE_EVENT: inputEvent.InputType = InputEventType.Mouse; inputEvent.MouseInput = new MouseInputEvent( record.MouseEvent.dwMousePosition.X, record.MouseEvent.dwMousePosition.Y, record.MouseEvent.dwButtonState, record.MouseEvent.dwControlKeyState, record.MouseEvent.dwEventFlags ); break; case NativeMethods.KEY_EVENT: inputEvent.InputType = InputEventType.Keyboard; inputEvent.KeyboardInput = new KeyboardInputEvent( record.KeyEvent.wVirtualKeyCode, record.KeyEvent.UnicodeChar, record.KeyEvent.dwControlKeyState, record.KeyEvent.wRepeatCount, record.KeyEvent.bKeyDown ); break; default: inputEvent = null; break; } }
public InputEvent GetInput() { var record = new NativeMethods.INPUT_RECORD(); uint recordLen = 0; InputEvent inputEvent; if (!(NativeMethods.ReadConsoleInput(_handler, ref record, 1, ref recordLen))) { throw new Win32Exception(); } CreateInputEvent(record, out inputEvent); return(inputEvent); }
public InputEvent MaybeGetInput() { UInt32 events = 0; NativeMethods.GetNumberOfConsoleInputEvents(_handler, out events); InputEvent inputEvent = null; if (events > 0) { var record = new NativeMethods.INPUT_RECORD(); uint recordLen = 0; if (!(NativeMethods.ReadConsoleInput(_handler, ref record, 1, ref recordLen))) { throw new Win32Exception(); } CreateInputEvent(record, out inputEvent); } return(inputEvent); }