Suppose you use Platform.
Then you have the expression Sprite.Platform.VectorX to compare for.
When Sprite.Platform.VectorX = zero >> play idle
When Sprite.Platform.VectorX < X or = x and not zero >> play walk (put x to your liking)
When Sprite.Platform.VectorX > x >> play run
Set the Acceleration of the platform to have enough 'walking time'.
The platform does nothing when no key pressed, so those purely run on what the character is actual dooing.
But, keep in mind that you probaly have to jump too, you dont want them running mid air.
So they can also be true when the character is jumping. In that case they need a second condition.
Like:
(condition1) When > x and (condition 2) platform is on the floor > play run
You might have to add a 'do once while true' to all that.