How to detect quick thumbstick movement?

Hi, I want to implement walking and running similarly to the way it is done Super Smash Bros, where running is only triggered if and only if the thumbstick moves quickly to as far as it can go, and if the thumbstick moves slowly then the player will walk at a constant speed, even if the thumbstick is fully extended.

This is what I have so far that allows me to walk/run at constant speeds when the thumbstick axis is in certain ranges. But how can I detect if the thumbstick slowly moved and is still walking even if the the axis value has reached -1 or 1? And how can I account for running when the thumbstick quickly goes diagonally, at which neither axis reaches a length of 1, but the thumbstick is still fully extended?

Any help is very appreciated!

One possibility is to set up a check each couple of frames that measures the difference between 2 stick vectors, and if its long enough then activate you “run” function.

or more to the point, store a vector of “original_stick_pos”, then increment a “frame_int” until “target_int” is reached, (as in number of frames), then check each frame if frame_int >= target_int, if so check the distance between the current frame and the “original_stick_pos” if its long enough then then exec your run function.

Iv never played much smash so, cant say that this would be similar in feel or not - but hope it helped. ^^