Question

What is the best way to store the current mouse position (system-wide) and then (later) put the mouse at that stored point?

[NSEvent mouseLocation] gets me the position, and I can move the mouse with a CGEventMouseMoved, but they each use a different co-ordinates system (I believe y=0 is the top for NSEvent and the bottom for a CGEvent).

I'm worried about the robustness of capturing the screen height and using it to convert between the two - or is this the best approach?

Was it helpful?

Solution

Yes, using the main screen's height is the standard way of flipping screen coordinates.

OTHER TIPS

You could use a CGEventTap to get the mouse events instead of NSEvent. Then you have your choice of flipped or unflipped at the time the event arrives.

(I believe y=0 is the top for NSEvent and the bottom for a CGEvent).

You have that the wrong way around. Quartz uses flipped, which is y=0=top. AppKit uses unflipped, which is y=0=bottom. (Edit: For events, that is. Quartz 2D, the drawing API, uses unflipped coordinates, the same as AppKit does.)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top