¿Cómo puedo obtener el tipo actual de cursor del mouse en la pantalla? (No solo en la ventana de mi aplicación, globalmente). ¿O al menos es posible detectar si el cursor predeterminado se muestra actualmente? O bien Carbon o Cocoa está bien, o incluso otras API activas, preferiblemente las oficiales.¿Cómo obtener el tipo actual de cursor del mouse en Mac OS X?
Esto es lo que he intentado:
NSCursor *sysCursor = [NSCursor currentSystemCursor];
if (sysCursor == nil) {
NSLog(@"nil");
}
if ([sysCursor isEqual: [NSCursor arrowCursor]] ||
[sysCursor isEqual: [NSCursor contextualMenuCursor]] ||
[sysCursor isEqual: [NSCursor closedHandCursor]] ||
[sysCursor isEqual: [NSCursor crosshairCursor]] ||
[sysCursor isEqual: [NSCursor disappearingItemCursor]] ||
[sysCursor isEqual: [NSCursor dragCopyCursor]] ||
[sysCursor isEqual: [NSCursor dragLinkCursor]] ||
[sysCursor isEqual: [NSCursor IBeamCursor]] ||
[sysCursor isEqual: [NSCursor openHandCursor]] ||
[sysCursor isEqual: [NSCursor operationNotAllowedCursor]] ||
[sysCursor isEqual: [NSCursor pointingHandCursor]] ||
[sysCursor isEqual: [NSCursor resizeDownCursor]] ||
[sysCursor isEqual: [NSCursor resizeLeftCursor]] ||
[sysCursor isEqual: [NSCursor resizeLeftRightCursor]] ||
[sysCursor isEqual: [NSCursor resizeRightCursor]] ||
[sysCursor isEqual: [NSCursor resizeUpCursor]] ||
[sysCursor isEqual: [NSCursor resizeUpDownCursor]] ||
[sysCursor isEqual: [NSCursor IBeamCursorForVerticalLayout]]
) {
NSLog(@"equal");
} else {
NSLog(@"not");
}
el cursor no está nil
, pero al mismo tiempo no es igual a cualquiera de los otros. Ni siquiera es igual a sí mismo:
NSLog(@"%i", [[NSCursor currentSystemCursor]
isEqual:[NSCursor currentSystemCursor]]); // 0
Ideas? Esta es una aplicación de tipo LSUIElement
, si eso es importante.
Este código funciona para mí, independientemente de si la aplicación es una aplicación del agente 'LSUIElement'. –