Fine, but then it's slightly more complex than what sf::Input did.
Wasn't sf::Input at least intended to behave like this (but maybe due to the sf::Event background, there were technical deviations, not to say bugs)?
Working with events and flags is a common technique, now it's just that SFML no longer does it for you.
We're spoiled, I know
In this situation, I think the programmer will track the focus events to disable many other things in the game when the window loses focus, so there's no problem in fact.
Maybe I should do that too in Thor. I could manually look for focus events and stop the realtime input if the window has no focus. If people want to react to input outside the window, they can still complain, this should be easily configurable. Relying on the user-side handling of focus events is not a good idea when callbacks are involved, because then every listener function would have to check if the call is valid.
I don't know how well you know my Action system, but the intention is to make it easy for the user to react to both one-time events and "realtime events" (that is, a condition of a realtime state is true).
So... no solution?
It seems like sf::Mouse::GetPosition() only for global state would be the cleanest solution, but be prepared for tons of questions "why doesn't this return the mouse position?"
But I'll spend some more thoughts on it... In case I have another idea (unlikely), I would inform you