2010-01-17 4 views
39

Ich bin auf der Suche nach einer umfassenden Liste der verfügbaren Schlüsselcodes, die mit Cocoa NSEvent Klasse verwendet werden können. Die NSEvent Klasse hat eine keyCode Eigenschaft, die als unsigned short definiert ist. Der folgende Code, wenn sie in einem entsprechenden UI-Objekt platziert, wird die Tastencodes Echo, wie sie gedrückt werden:Wo finde ich eine Liste der Schlüsselcodes für Cocoas NSEvent-Klasse?

- (void)keyDown:(NSEvent *)theEvent 
{ 
    NSLog(@"%d", [theEvent keyCode]); 
} 

Von diesem Code kann ich einfach die Codes übereinstimmen bestimmte Tasten sehen, aber ich möchte ein finden offizielles Dokument irgendwo, das alle auflistet. Ich erwartete Apple eine Header-Datei irgendwo zu haben, der so aussah:

enum { 
    ... 
    NSKeyCodeLeftArrow = 123, 
    NSKeyCodeRightArrow = 124, 
    ... 
}; 

Aber wenn es eine ist, ich habe es noch zu finden.

+2

Beachten Sie, dass Medientasten und -schlüssel wie "Home", "Internet" auf massiven Tastaturen von NSSystemDefined-Ereignissen behandelt werden und keine gewöhnlichen Schlüsselereignisse. Das erklärt die fehlenden Tastencodes für diese Tasten (Windows verfügt über Tastencodes für alle Tasten, und für sie gibt es auch Tastenkürzel X11, aber die Tastencodes von Mac für Tastaturereignisse scheinen nicht alle diese Tasten zu umfassen). –

+0

[W3C DOM Level 3 KeyboardEvent Code Werte] (https://www.w3.org/TR/2015/WD-DOM-Level-3-Events-code-20150428/) – davidcondrey

Antwort

20

Soweit ich weiß, gibt es keine Aufzählung oder Liste von Schlüsselcodes. Doch ein ähnliches Verhalten zu erhalten, können Sie interpretKeyEvents: in keyDown nennen: die entsprechende Aktion Methoden aufrufen wird, die alle in NSResponder dokumentiert werden (zB moveLeft:, insertTab:, etc.)

+1

Das ist unglaublich praktisch. Vielen Dank! –

+9

Nun, da ich weiß, wonach ich suchen muss, habe ich einen Link gefunden, der all diese NSResponder-Methoden in Bezug auf die Standardschlüsselkombinationen beschreibt, die sie aufrufen: http://www.hcs.harvard.edu/~jrus/Site/System % 20Bindings.html –

+0

Diese Seite ist sehr nützlich. Schöner Fund! :) –

27

Here you go. Es ist eine Karte aller virtuellen Schlüssel - Codes auf dem erweiterten US-Tastaturlayout, aus dem alten Inside Macintosh: Text. Die meisten Tastencodes sind immer noch aktuell, obwohl ich vermute, dass die neuesten Apple-Tastaturen - mit Medienschlüsseln - einige der Funktionstasten geändert haben könnten.

Hinweis: ISO- und nicht erweiterte Tastaturen können für einige Tasten unterschiedliche Tastencodes haben. Wenn Sie eine solche Tastatur haben, versuchen Sie Peter Maurer's Key Codes Anwendung. Seine Website ist down, also here's my copy.

+0

Danke. Das erklärt sicherlich, warum keine neue Tabelle verfügbar ist.FTA: * Mac OS X verwendet dieselben virtuellen Tastencodes wie das legendäre Apple Extended Keyboard. Daher gilt die Tabelle in Inside Macintosh: Text immer noch. * –

+1

Ich schrieb den Artikel. ☺ Es gilt für US-erweiterte Tastaturen (und ist * definitiv * wahr von meiner Tastatur, da es * eine Apple Extended Keyboard II ist), aber möglicherweise nicht für nicht-erweiterte und/oder nicht-US-Tastaturen. Ich sollte dem Beitrag eine Notiz hinzufügen, dass ich keinen der beiden Fälle überprüft habe. –

+0

Ah, also hast du! Tolles Zeug. Ich kann nicht glauben, dass Sie (noch?) Diese Tastatur benutzen. :) Wenn man online liest, scheint etwas zu einer * Religion * zu gehören, die auf diesem Modell basiert. Was macht es so viel besser als alles, was derzeit auf dem Markt ist? Ich bin wirklich neugierig. –

6

Nach diesem Forum Thema sind die Konstanten in HIToolbox/Events.h

http://forums.macrumors.com/showthread.php?t=780577

Sie haben bequem kopieren + kleben auch den gesamten Satz von Konstanten in das Forum. Ansonsten ist der Header hier zur Verfügung:

/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h 
12

Um HIToolbox/Events.h enthalten (wie in Berrangé Antwort erwähnt) in XCode 4 Sie müssen nur mit Bibliotheken Link-Binaries gehen und den Carbon-Rahmen hinzufügen (die HIToolbox enthält) und importieren Sie dann den Haupt-Carbon-Header in die Datei, in der Sie die keyCodes überprüfen.

#import <Carbon/Carbon.h> 

Es hat mich eine zweite, um herauszufinden, dass ich nicht HIToolbox/Events.h direkt so importieren konnte ich dachte ich, das es jemand hilft bei Post würde.

+1

Danke - wenn Sie diese Frage finden , das ist die zu verwendende Lösung. – petert

+2

Für die Verwendung dieser Enums ist keine Verknüpfung mit dem Carbon-Framework erforderlich. Es genügt, die Kopfzeile hinzuzufügen, um sie für diesen speziellen Fall verwenden zu können (es sei denn, Sie müssen natürlich andere Carbon-Funktionen verwenden). – diegoreymendez

+0

Es ist erwähnenswert (da die Frage über 'NSEvent' war), dass zusätzlich zu den Tastencodes in 'HIToolbox/Events.h' auch die Unicode-Codepunkte in AppKit's 'NSEvent.h', wie 'NSRightArrowFunctionKey', gewünscht werden ', da diese verwendet werden, um die Eigenschaft' characters' von 'NSEvent' zu setzen. –

Verwandte Themen