How to store (and use) the current mouse position?

2019-07-19 16:12发布

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?

2条回答
Juvenile、少年°
2楼-- · 2019-07-19 16:49

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

查看更多
家丑人穷心不美
3楼-- · 2019-07-19 16:57

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.)

查看更多
登录 后发表回答