
Really nice input code that works at least reasonably consistently on all of your target platforms is surprisingly difficult (but interesting and rewarding). It took me so many false starts to get to what you see today, and a good chunk of the end result must be attributed to a lot of time spent trying to fix what I thought was jerkiness in the input code (it turned out to be using a frametime instead of cl.time somewhere in the view.c stuff).
There are a lot of little gotchas in that code by the way. It uses the frame time from the previous frame for rebalancing movement events (quite intentional because there is some latency between when an event actually happens and when the message arrives to your window procedure - this seems to average things out better). It relies on Sys_SendKeyEvents being run every pass through your main loop, even if you're not running a frame. There's additional code in the window procedure for handling the mouse wheel in menus and the console (because WM_INPUT messages are no longer recieved when in menus or the console in an SP game and a windowed mode).