Adafruit_RGB_LCD SHIELD FINITE STATE MACHINE PROJ

    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.

1 Like