Interesting. So the game registers events with the engine, and the engine maps the inputs onto the events? Or something like that?
I imagine the easiest to implement would be having the game listen for two more events for each existing one: ShipZ_FAon and ShipZ_FAoff, TargetSpeed_FAon, etc.
However, it sounds like the most consistent with your current architecture might be to have alternate input modes handled by the engine that the game doesn't even have to know about.
<CycleInputScheme Keys = "Space" />
<InputSchemes>
<InputScheme Id="A">
<Input Event = "ShipZ" Keys = "Joystick0Axis6" Type = "Axis" />
<Input Event = "ShipForward" />
<Input Event = "ShipBackward" />
<Input Event = "ShipX" />
<Input Event = "ShipLeft" Keys="Joystick0Button11" />
<Input Event = "ShipRight" Keys="Joystick0Button13" />
<Input Event = "ShipY" />
<Input Event = "TargetSpeed" />
<Input Event = "ToggleFlightAssist" Keys = "Space" />
etc
etc
</InputScheme>
<InputScheme Id="B">
<Input Event = "ShipZ"/>
<Input Event = "ShipForward" Keys = "W" />
<Input Event = "ShipBackward" Keys = "S" />
<Input Event = "ShipX" />
<Input Event = "ShipLeft" Keys="Joystick0Button11" />
<Input Event = "ShipRight" Keys="Joystick0Button13" />
<Input Event = "ShipY" />
<Input Event = "TargetSpeed" Keys = "Joystick0Axis6" Type = "Axis" />
<Input Event = "ToggleFlightAssist" Keys = "Space" />
etc
etc
</InputScheme>
</InputSchemes>
I've intentionally used Space
to toggle input scheme as well as toggle flight assist so that they switch at the same time, however you could obviously use different keys.
I'm sure an intuitive GUI can be designed, just ask your community!