Hi,
What you need to is a wrapper of the inputs so that you can redirect the input from the user to the right "controller". I do that for my excavator simulation (
www.fabrejean.net/projects/excavator/) when you switch from the outside view and the cabin view ( as well as multi way binding of inputs so that you can also control the cranes with sliders and when you pres keys the sliders moves accordingly). None of my "controller" in the game actually reference an user input axis, they all reference this wrapper instead.
So : have a fsm responsible to receive your user input, only this fsm must receive it. He will also be responsible for sending events to fsm willing to play with this input. It will also be responsible for storing your custom inputs values ( ranging from -1 to 1 like normal user inputs). you could store them in global vars, then from other fsm, use them global vars as inputs.
If you are using actions that explicitly reference user inputs, then you'll need to create similar custom actions that use a var instead of a reference to an axis ( I am thinking of getAxisEvent, or getAxis for example). If you need for that, let me know, and I'll build the custom action that you need.
Does that make sense?
Bye,
Jean