# Puppetmaster Easy-to-use input handling for writing games. This crate exposes different kinds of input handlers. Pick which one to use based on how your game engine provides you with input data. - `EventInputHandler` for when your game engine uses events - `PollingInputHandler` for when your game engine provides a set of the currently pressed keys - `QueryInputHandler` for when your game engine provides a function to call to query the state of a key. ## Inputs vs Controls This crate makes a distinction between *inputs* and *controls*. *Inputs* are the raw keycodes your game engine feeds to you; *controls* are what your game does about it. So, something like `Key::W` would be an input, predefined by your game engine, and you could map it to a `Control::Up` you defined in your game's code. Multiple inputs can map to the same control, but not vice versa. So, both the W key and the up arrow could map to `Control::Up`, but you couldn't have the shift key map to both Crouch and Sprint. --- The crate also includes example code for using each of the input handler types. All of these are written with GGEZ. I would like to have different game engines to show off Puppetmaster's flexibility, but unfortunately GGEZ and Macroquad conflict over versions of `alsa`. So, everything's GGEZ because you can use it with all 3 types of input handler.