Hi,
Whyt you need is create a kind ot "toggle" system, where you only send the "move event" and "idle event" when you first detect the change in movement, Just like triggers and collisions, you have a trigger Enter and trigger Exit. Here you need the same.
so, when you start, you only check if the user moves, if you detect a move you fire a global event for others to act, AND you move to a different state where you check if the user stops moving, in which case you fire that other global event AND come back to the start state.
Now, you may say: but I want to to things in that fsm. It is possible, but you are then confronted with a very common issue that ONLY ONE STATE CAN BE ACTIVE AT A TIME. So simply have that fsmdoing only just that fire global events, and then on the same GameObject perhaps, another fsm that listen to them global events and do stuff with it.
Does that make sense?
bye,
Jean