better error handling for unknown button ids; added multi-gamepad support