private void DispatchEventProcessing(ConsoleInputEventInfo @event) { switch (@event.EventType) { case ConsoleInputEventType.None: // This shouldn't ever happen, but just in case... break; case ConsoleInputEventType.FocusEvent: break; case ConsoleInputEventType.KeyEvent: this.ProcessKeyEvent(@event.KeyEvent); break; case ConsoleInputEventType.MenuEvent: break; case ConsoleInputEventType.MouseEvent: this.ProcessMouseEvent(@event.MouseEvent); break; case ConsoleInputEventType.WindowBufferSizeEvent: break; default: throw new NotImplementedException( "Unrecognized console input event type."); } }
private ConsoleInputEventInfo[] ListenForEvents() { // Wait until the console notifies us that at least one event has been received WaitForSingleObject(this.handle, INFINITE); // Find out the number of console events waiting for us GetNumberOfConsoleInputEvents(this.handle, out int unreadEventCount); // Allocate an array to read events into, and then read them ConsoleInputEventInfo[] values = new ConsoleInputEventInfo[unreadEventCount]; ReadConsoleInput( this.handle, values, unreadEventCount, out _); return(values); }