普通はMenuを使ってコピー・ペーストなどのコマンドを実装するが、メニューバーアプリなどでMenuが使えない場合は以下のようにする。
・NSApplicationのサブクラス(MyApplicationクラスとする)を作る
・PlistのPrincipal classに「MyApplication」を設定
・MyApplicationに以下を実装
- (void) sendEvent:(NSEvent *)event { if ([event type] == NSKeyDown) { if (([event modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask) { if ([[event charactersIgnoringModifiers] isEqualToString:@"x"]) { if ([self sendAction:@selector(cut:) to:nil from:self]) return; } else if ([[event charactersIgnoringModifiers] isEqualToString:@"c"]) { if ([self sendAction:@selector(copy:) to:nil from:self]) return; } else if ([[event charactersIgnoringModifiers] isEqualToString:@"v"]) { if ([self sendAction:@selector(paste:) to:nil from:self]) return; } else if ([[event charactersIgnoringModifiers] isEqualToString:@"z"]) { if ([self sendAction:@selector(undo:) to:nil from:self]) return; } else if ([[event charactersIgnoringModifiers] isEqualToString:@"a"]) { if ([self sendAction:@selector(selectAll:) to:nil from:self]) return; } } else if (([event modifierFlags] & NSDeviceIndependentModifierFlagsMask) == (NSCommandKeyMask | NSShiftKeyMask)) { if ([[event charactersIgnoringModifiers] isEqualToString:@"Z"]) { if ([self sendAction:@selector(redo:) to:nil from:self]) return; } } } [super sendEvent:event]; }
参考:osx - Cocoa Keyboard Shortcuts in Dialog without an Edit Menu - Stack Overflow