case State::newstate :
newstates();
if (wasPressedKeypad())
state = State::newstate;
break;
Finite statemachines only change state if you tell them to do so. Let's assume that in the above, you are in State::newstate. If the button is not pressed, nothing changes; if the button is pressed, you change to the same state so it's actually doing nothing.
You will need to change from one (or all) other states to State::newstate. Let's keep it simple for the explanation and after State::RANDOM you want to go to State::newstate
case State::RANDOM :
updateRandom();
if (wasPressedKeypad())
state = State::newstate;
break;
case State::newstate :
newstates();
if (wasPressedKeypad())
state = State::FIXTEXT;
break;
Note: enums are often written in all capitals as they are constant values; your newstate is lower case. Change it to NEWSTATE; this allows for consistency in your code.