To my frustration, I haven’t managed to replicate it in a smaller program–I’ve tried, but the issue doesn’t seem to turn up in the tests that I have thus far devised. :/
[edit]
Ah, I believe that I’ve found the problem!
Specifically, my DirectEntry objects had “suppressKeys” and “suppressMouse” set (I’m guessing in a previous attempt to prevent typing being interpreted as game-input).
I’m still mystified that I was getting “up” events and not “down” events, and this has introduced a new difficulty in what I’m trying to implement, but at least I have this mystery somewhat solved, it would seem!