2010-07-24 12 views
8

Cocoa tiene una gran cantidad de máscaras y códigos enteros. Por ejemplo, NSCommandKeyMask o NSF1FunctionKey, que están claramente definidos y documentados en los encabezados.Entero decodificador y otras máscaras en Cocoa

Sin embargo, algunos pueden ser arcaico y cuando se accede a los atributos de accesibilidad, por ejemplo para obtener el glifo (AXMenuItemCmdGlyph), se le ofrece un número entero, como 111, que representa la F1 (0xf704), o 112 que representa F2 (hex : 0xf705).

¿Hay alguna manera fácil de manejar las máscaras y los códigos? ¿Quizás uno que puede convertir el 111 en el hexágono unívoco correspondiente 0xf704? Lo que quiero decir es que NSEvent.h asigna NSF1FunctionKey a 0xf704, pero ¿hay una asignación para 111 a NSF1FunctionKey o 0xf704?

+0

No entiendo, ¿por qué no los usa como constantes? – Maz

+0

Lo haría si pudiera encontrar las constantes en cualquiera de los archivos de encabezado. ¿Hay constantes para la tecla F1-F13, por ejemplo? Podría mapear mis propias constantes, pero no quisiera reinventar la rueda, si es que existe. – the979kid

+0

Si me dices qué archivos/clases de encabezado estás usando, lo echaré un vistazo. Supongo que hay una constante de base, como (lo estoy inventando) FUNCTION_KEY_ONE y luego para obtener F2 es FUNCTION_KEY_ONE + 1 Al hacer una copia de seguridad de su pregunta, este parece ser el caso. – Maz

Respuesta

1

Si desea el carácter Unicode para la clave del elemento del menú equivalente, en lugar del glifo, intente obtener the kAXMenuItemCmdCharAttribute attribute en lugar de kAXMenuItemCmdGlyphAttribute.

+0

Estoy buscando los glifos, kAXMenuItemCmdCharAttribute dará nulo para cualquier cosa que no sean caracteres. De todos modos, lo mejor que encontré fue básicamente asignar los códigos de glifo (111, etc.) dados por el atributo AXMenuItemCmdGlyph a sus equivalentes Unicode/NSEvent.h. No parece haber ninguna relación entre los códigos de accesibilidad dados a los glifos y los unicodes reales para estos glifos, como se indica en NSEvent.h. Si alguien sabe mejor, por favor comparte. – the979kid

+0

Si desea comparar las constantes de los caracteres, entonces está buscando caracteres. ¿Qué es un ejemplo de un elemento de menú que tiene un 'CmdGlyph' pero no un' CmdChar'? –

+0

Ejemplo: "Force Quit ..." tiene el glifo 27 y el carácter es nulo. Sin embargo, tiene un código de clave virtual 53 que corresponde a 'kVK_Escape'. –