Nine times out of ten, if you were to ask someone "What is the best way to store a key and a value in .Net?" that someone would answer something along the lines "Well, you'd probably want to use a Dictionary.".
Now, if you were to ask that same question but phrase it slightly differently to "What is the best way to store a key and a value in .Net on the Compact Framework?" you probably wouldn't get "Dictionary" in your answer.
You see, it is a common (misguided, I should add) notion that Dictionaries are, usually for garbage reasons, completely evil, and you would have to be monumentally stupid to even contemplate using them. Even worse, if you even vaguely approached the idea of using enums as your key value, most (misguided) programmers would have you tarred and feathered...and then marked with the red cross, as you have obviously contracted the plague of incompetence.
So, I went ahead and built an input manager revolving around Dictionaries, with enums as my keys.