tags:

views:

713

answers:

3

Is there a way to globally hide the mouse cursor for all apps in Cocoa (or Carbon)? Or at least replace it with something else?

EDIT: Thanks for the input guys, but turns out Daniel Jalkut found the solution a while ago :) http://lists.apple.com/archives/carbon-dev/2006/Jan/msg00555.html

+2  A: 

Check out: http://developer.apple.com/legacy/mac/library/samplecode/CarbonCocoa%5FPictureCursor/listing2.html It's an old sample, but probably still works.

I expect that you're going to be limited to your application window, however. If you want to hide it for everyone you will probably have to make your window cover the screen.

Fun fact: The old toolbox function was simply "HideCursor()".

Seth
Thanks. Any advice on making a window cover my screen? (To be clear, I want the mouse cursor to hide for all applications as well...)
Handling a full screen window the right way means you'll have to make sure you're covering all attached screens. Look at: http://www.cocoadevcentral.com/articles/000028.php. Alternatively, you might find some sample code for a screen saver application. Screen savers generally cover the screen as well. In your case, you'll want to modify your window to be a layer below your application windows.
Seth
A: 

No, I don't believe there's a way of doing what you want, short of showing a full screen window and then obscuring absolutely everything on the desktop. That would also prevent e.g. keystrokes being sent to the right application and the like.

AlBlue
+2  A: 

You are looking for CGDisplayHideCursor, which is part of the Quartz Display Services API.

0xced
Thanks, didn't see that before."In most cases, the caller must be the foreground application to affect the cursor." So...what's the case where I *don't* have to be the foreground application? :)
I came here searching for a way to hide the cursor in my foreground application only, and this was exactly the ticket. Thanks!
e.James