tôi thực hiện điều này trong ứng dụng của riêng tôi bởi subclassing NSApplication (và thiết lập lớp chính của ứng dụng để lớp con này). Nó bắt các phím tìm kiếm và phát/tạm dừng và dịch chúng thành các hành động cụ thể trong ủy nhiệm ứng dụng của tôi.
dòng liên quan:
#import <IOKit/hidsystem/ev_keymap.h>
- (void)sendEvent:(NSEvent *)event
{
// Catch media key events
if ([event type] == NSSystemDefined && [event subtype] == 8)
{
int keyCode = (([event data1] & 0xFFFF0000) >> 16);
int keyFlags = ([event data1] & 0x0000FFFF);
int keyState = (((keyFlags & 0xFF00) >> 8)) == 0xA;
// Process the media key event and return
[self mediaKeyEvent:keyCode state:keyState];
return;
}
// Continue on to super
[super sendEvent:event];
}
- (void)mediaKeyEvent:(int)key state:(BOOL)state
{
switch (key)
{
// Play pressed
case NX_KEYTYPE_PLAY:
if (state == NO)
[(TSAppController *)[self delegate] togglePlayPause:self];
break;
// Rewind
case NX_KEYTYPE_FAST:
if (state == YES)
[(TSAppController *)[self delegate] seekForward:self];
break;
// Previous
case NX_KEYTYPE_REWIND:
if (state == YES)
[(TSAppController *)[self delegate] seekBack:self];
break;
}
}
Nguồn
2010-10-07 20:19:35
Tôi nhận được thông báo điều khiển lạ này. Bất kỳ đầu mối tại sao? Ngoài ra, tôi đang phát nhạc và tôi chỉ muốn nó phát nút phát/tạm dừng. Khối lượng có thể được thực hiện trên hệ điều hành X GUI thông thường. – Moshe
Thông báo điều khiển lạ nào? Ngoài ra, nếu bạn muốn bắt chỉ phát/tạm dừng, thì chỉ trả lời NX_KEYTYPE_PLAY (loại bỏ các trường hợp khác). –
@Joshua Nozzi - xem chỉnh sửa của tôi. – Moshe