First of all, the console I'm talking about isn't a DOS window, it's the command line interface that appears in FPS games when you press ~
I've implemented a basic console for my engine, the problem I have right now is how to get input for it, I use DirectInput, which isn't based on messages like the Win32 API, I check keyboard and mouse input every frame, and respond to it, this works fine with input for moving around in the world, but it doesn't work at all for the console, because pressing a key would definitely last for more than one frame, repeating the character several times in the console, and I have to check all the keyboard keys every frame.
The only way I could come up with is checking all the keys every frame, and storing a cool-down period for each key, which doesn't sound that efficient to me, any other suggestions?