2010-07-24 5 views
8

Cocoa hat eine Fülle von ganzzahligen Masken und Codes. Zum Beispiel NSCommandKeyMask oder NSF1FunctionKey, die in den Headern klar definiert und dokumentiert sind.Dekodierung von Integer- und anderen Masken in Cocoa

Allerdings können einige archaisch sein und beim Zugriff auf Accessibility-Attribute, zum Beispiel um die Glyphe (AXMenuItemCmdGlyph) zu erhalten, erhalten Sie eine ganze Zahl wie 111, die F1 (0xf704) darstellt, oder 112, die F2 (hex darstellt) : 0xf705).

Gibt es einen einfachen Weg, mit Masken und Codes umzugehen? Vielleicht eine, die in der Lage ist, die 111 in den entsprechenden Hex-Unicode 0xf704 umzuwandeln? Was ich meine ist, dass NSEvent.h NSF1FunctionKey zu 0xf704, aber gibt es eine Zuordnung für 111 zu NSF1FunctionKey oder 0xf704?

+0

Ich verstehe nicht, warum verwenden Sie sie nicht als Konstanten? – Maz

+0

Ich würde, wenn ich die Konstanten in einer der Header-Dateien finden könnte. Gibt es beispielsweise Konstanten für den Schlüssel F1-F13? Ich könnte meine eigenen Konstanten abbilden, aber ich möchte das Rad nicht neu erfinden, wenn es existiert. – the979kid

+0

Wenn Sie mir sagen, welche Header-Dateien/Klassen Sie verwenden, werde ich einen Blick darauf werfen. Meine Vermutung ist, dass es eine Basiskonstante gibt, wie (FUNKION_KEY_ONE), und dann, um F2 zu bekommen, ist es FUNCTION_KEY_ONE + 1 Nur wenn ich auf deine Frage zurückschaue, scheint dies der Fall zu sein. – Maz

Antwort

1

Wenn Sie das Unicode-Zeichen für das Schlüsseläquivalent des Menüelements anstelle der Glyphe dafür verwenden möchten, versuchen Sie the kAXMenuItemCmdCharAttribute attribute anstelle von kAXMenuItemCmdGlyphAttribute.

+0

Ich bin auf der Suche nach den Glyphen, KAXMenuItemCmdCharAttribute gibt null für alles andere als Zeichen. Wie auch immer, das Beste, was ich fand, war, die Glyphencodes (111 usw.), die durch das AXMenuItemCmdGlyph-Attribut gegeben wurden, im Wesentlichen ihren Unicode/NSEvent.h-Äquivalenten zuzuordnen. Es scheint keine Beziehung zwischen den Zugangscodes, die Glyphen gegeben werden, und den tatsächlichen Unicodes für diese Glyphen zu geben, wie in NSEvent.h angegeben. Wenn jemand es besser weiß, bitte teilen. – the979kid

+0

Wenn Sie mit den Charakterkonstanten vergleichen möchten, dann suchen Sie nach Zeichen. Was ist ein Beispiel für einen Menüpunkt, der einen 'CmdGlyph', aber keinen' CmdChar' hat? –

+0

Beispiel: "Force Quit ..." hat Glyph 27 und das Zeichen ist null. Es hat jedoch einen virtuellen Schlüsselcode 53, der "kVK_Escape" entspricht. –