Key repeat filtering and related tweaks to the event system

I’ve been mucking around with the event system, looking at how [an equivalent of] D5153 might work for Windows. I haven’t seen any big platform-specific obstacles that would make feature parity an issue, but I have found some other things I could do while I’m in there.

The main opportunity I’ve spotted is a way to track how long a key has been held down. With the repeat flag we’re already looking to add, a repetition counter, and the prevclicktime value we’re already tracking for double-click events, calculating a hold time and piping it into the event system would be a relatively straightforward process.

Would it be a misstep to add a KM_LONG_PRESS event value while I’m at it? Adding an internal feature without a targeted usecase in mind is usually a bad idea, but I don’t want to bottleneck important features (repeat filtering) with tangential design tasks.