Maybe I misunderstand, but you've desctibed the problem yourself: You press "C", it exits the state and in the next state you are aslo listening for "CC", so you get an infinite look.
Shouldn't you in State 1 listen for "get C down", exit to state 2, perform whatever action you want and listen for "get C up" and return to state 1?