2008-09-22 6 views
9

Ich möchte eine Songbird Erweiterung schreiben bindet die Multimedia-Tasten auf allen Apple Mac OS X-Plattformen. Leider ist dies keine einfache Google-Suche und ich kann keine Dokumente finden.Wie kann ich auf die Multimediatasten (Wiedergabe/Pause) in Mac OS X zugreifen (hören)?

Kann mir jemand auf diese Schlüssel zugreifen oder mir sagen, wie es geht?

Ich habe umfangreiche Programmiererfahrung, aber dies wird mein erstes Mal in MacOSX und XUL (Firefox, etc) Codierung sein, so dass alle Tipps zu beiden sind willkommen.

Bitte beachten Sie, dass dies keine regulären Schlüsselereignisse sind. Ich nehme an, es muss eine andere Art von Systemereignis sein, das ich haken oder abonnieren muss.

Antwort

2

Dieser Blog-Eintrag hat eine Lösung:

http://www.rogueamoeba.com/utm/posts/Article/mediaKeys-2007-09-29-17-00.html

Sie müssen im Grunde NSApplication Unterklasse und für spezielle Scan-Codes suchen sendEvent,
außer Kraft setzen. Ich weiß nicht, welcher Singvogel ist, aber wenn es
keine echte Anwendung ist, dann bezweifle ich, dass Sie in der Lage sein werden, dies zu tun.

Oder vielleicht können Sie eine einfache Kategorie genügen:

@implementation NSApplication(WantMediaKeysCategoryKBye) 
- (void)sendEvent: (NSEvent*)event 
{ 
    // intercept media keys here 
} 
@end 
0

xev könnte Ihnen helfen, wenn Sie herausfinden möchten, welche Codes von Multimedia-Tasten gesendet werden.

+0

Danke für die Anregung, aber xev nicht die Multimedia-Taste Events erhalten. Dies sind keine normalen Schlüsselereignisse, Ukulele kann sie beispielsweise nicht empfangen oder neu zuweisen. –

1

Sind Sie sicher, dass Ihre Multimedia-Tasten in Ihrer Installation funktionieren? Jeder einzelne Schlüssel erzeugt einen Scan-Code, der vom Kernel in einen Schlüsselcode übersetzt wird. Wenn xev keine Tastencodes anzeigt, werden diese Scan-Codes nicht zugeordnet und der Kernel kennt sie daher nicht.

http://gentoo-wiki.com/HOWTO_Use_Multimedia_Keys hat eine nette Erklärung zum Finden von Schlüsselcodes und bietet Hilfe an, wie man rohe Scan-Codes findet und sie in Schlüsselcodes übersetzt.