key string actions

I am trying to create a 3rd person interface that has less direct control of the character than usual. I want to recognize when the player has entered a chain of keys that activates a character action. I want to have a pile of different actions. I want to have a timeout so if the player types "F-I-R-E" the game instantiates a fire particle system object. But if they type"F" wait too long and then "I-R-E" the character just emotes "Angry"

How can I monitor what is being typed and compare the results to a list of actions and clear the keys being monitored after a certain idle time. I would also like to display the keys that are currently being cached onscreen somewhere. I realize the code on this one will be complicated and I'm not asking for a script, I just need to know where to start and then which direction to go from there.

Although I haven't used it myself, it seems like your best bet for this might be Input.inputString. This string will give you any ASCII characters associated with keyboard events for that update, along with 'backspace' and 'enter' key events.

For timing, you can use any of the common methods for dealing with 'timed' events (e.g. InvokeRepeating(), tracking time yourself in Update(), etc.). There are several possible solutions, so your best bet would probably just be to start coding and then ask here or on the forums if you run into problems.

The commands themselves could be stored in a dictionary (if they need to be associated with a value of some sort) or in a set, hash table, sorted array, etc. Whenever an 'ASCII' key event occurs, you can check the current buffer against the list to see if a valid command has been entered. (The buffer would be a string you'd track yourself. You would add any relevant entries in Input.inputString to it each update, and clear it whenever the 'time out' interval has elapsed.)

For displaying the current state of the buffer, GUI/GUILayout.Label() would be a logical choice.