What's wrong with just implementing it for mouse?
Inconsistent design.
And it works only for mouse position, everything else (mouse buttons, keyboard, joysticks, ...) would produce the kind of problems that I described in my previous posts.
I understand that the design would be slightly inconsistent, but I think that having an "elegantly designed" function that returns values other than those expected is orders of magnitude worse than having a single function whose design is inconsistent from others of the type for reasons of usability.
Anecdotally, I spent a solid off-day of programming time trying to figure out why my mouse look was degrading precisely because "GetMouseX" sounds as though it should return, with as much precision as possible, the X value of the mouse. As a client of the library, my application expects the function to work as-advertised, not to be consistent with its own internal state. One major benefit of separating interface from implementation is that, as a user, I shouldn't CARE about inconsistent implementation so long as results are consistent with expectations. In that way, I would make the argument that changing it is more elegant design.
As far as I can tell, -only- mouse coordinates would need to be changed in this way since they tend to be used for very time-sensitive tasks, none of the other variables that would produce problems would need to even be touched.
Just bear in mind that supporting mouse look is fairly important for anything that can be used as an OpenGL context.
That's right. I need to think more about this issue; providing mouse grab features would also be a solution.
Actually that isn't a solution, that's only part of the solution. Mouse grab only confines the cursor to the window area; you still need a way of resetting the cursor every-so-often so that it doesn't wind up sticking to the borders. The most-common way of doing this involves resetting it every frame to the center of the screen. Mouse grab simply ensures that at low FPS your cursor won't "flicker" off-screen before it's reset. You still need to ensure that it's reset to center (or some other location sufficiently far from the window borders) so that mouselook works properly.
If you were to provide mouse grab for mouse look support, you would also need to include an an abstracted way of returning an accurate mouse velocity per-frame. If you can think of a good way to do this without resorting to cursor reset, then you're better than me. (I also tried "wrapping" the mouse from the right border back around to the left, and top to bottom, etc., but that introduces its own set of problems)
edit: Sorry for the mild rant, and thank you for your responses