Currently Command.cs deals with both Keyboard and Mouse events with an hybrid solution of two constructors.
It would be better to make the Command class abstract and then create two subclasses: Keyboard (with the current keyboard constructor and dealing with keyboard events) and Mouse (with the current mouse constructor, dealing with mouse events).