2010-07-24 14 views
8

Le cacao a une pléthore de masques entiers et de codes. Par exemple, NSCommandKeyMask ou NSF1FunctionKey, qui sont clairement définis et documentés dans les en-têtes. Cependant, certains peuvent être archaïques et lors de l'accès aux attributs d'accessibilité, par exemple pour obtenir le glyphe (AXMenuItemCmdGlyph), vous obtenez un nombre entier comme 111, qui représente F1 (0xf704), ou 112 qui représente F2 (hexadécimal). : 0xf705).Décoder des entiers et d'autres masques dans Cocoa

Existe-t-il un moyen facile de gérer les masques et les codes? Peut-être celui qui est capable de convertir le 111 en l'hexagone correspondant 0xf704 unicode? Ce que je veux dire, c'est que NSEvent.h mappe NSF1FunctionKey à 0xf704, mais existe-t-il un mappage pour 111 vers NSF1FunctionKey ou 0xf704?

+0

Je ne comprends pas, pourquoi ne pas les utiliser comme des constantes? – Maz

+0

Je voudrais si je pouvais trouver les constantes dans l'un des fichiers d'en-tête. Y a-t-il des constantes pour la touche F1-F13 par exemple? Je pourrais cartographier mes propres constantes, mais je ne voudrais pas réinventer la roue si elle existe. – the979kid

+0

Si vous me dites quels fichiers d'en-tête/classes vous utilisez, je vais jeter un oeil. Je suppose qu'il y a une constante de base, comme (je viens de faire cela) FUNCTION_KEY_ONE et ensuite pour obtenir F2 c'est FUNCTION_KEY_ONE + 1 Juste en regardant en arrière à votre question, cela semble être le cas. – Maz

Répondre

1

Si vous souhaitez que le caractère Unicode corresponde à l'équivalent de la clé de l'élément de menu plutôt que son glyphe, essayez d'obtenir the kAXMenuItemCmdCharAttribute attribute au lieu de kAXMenuItemCmdGlyphAttribute.

+0

Je cherche les glyphes, kAXMenuItemCmdCharAttribute donnera null pour autre chose que des caractères. Quoi qu'il en soit, la meilleure chose que j'ai trouvée consistait à mapper les codes glyphes (111, etc.) donnés par l'attribut AXMenuItemCmdGlyph à leurs équivalents unicode/NSEvent.h. Il ne semble pas y avoir de relation entre les codes d'accessibilité donnés aux glyphes et les unicodes réels pour ces glyphes comme indiqué dans NSEvent.h. Si quelqu'un sait mieux, s'il vous plaît partager. – the979kid

+0

Si vous voulez comparer aux constantes de caractères, vous recherchez des caractères. Quel est l'exemple d'un élément de menu qui a un 'CmdGlyph' mais pas un' CmdChar'? –

+0

Exemple: "Forcer à quitter ..." a le glyphe 27 et le caractère est nul. Cependant, il possède un code de clé virtuelle 53 qui correspond à 'kVK_Escape'. –