Why would that be an issue? There's one state running at a time, and events get funneled down to it by the state machine. This way you know that only one state (and its parents) will be handling input at a given point in time.
With this state pattern, each behavior is self contained:
update loop, input handling, event callbacks are all in one place. This helps solve the problem of finding where code is. If I want to change the hook movement code, I know it's in the hook state. The move code, in the move state and its descendents.