Once I had the event aggregator set up in GenesisEngine I could think about how to turn keyboard and mouse input into events that other parts of the app could respond to. The XNA framework doesn’t offer as much help in this area as you might be used to in Windows Forms or WPF. There isn’t any built-in windowing, or UI controls, or a commanding system so you pretty much have to build your own from scratch. This isn’t a terribly difficult task, I suppose, but I like the way mine turned out. XnaInputState All XNA offers for input is a KeyboardState and MouseState struct every update cycle that contain the current state of the keyboard (the current up or down state of every key) and the current state of the mouse cursor (where it currently is and whether each button is currently up or down)