0

私は Cocoa で OpenGL ゲームに取り組んでおり、ユーザーが (コマンド + c またはコマンド + v を使用して) コピーまたは貼り付けを試みたときにキャプチャする必要があります。

これまでのところ、私はNSView<NSTextInputClient>の第一応答者としてを持っていNSWindowます。ASCII 以外の文字をゲームに入力できるようにすることには成功していますが (たとえば、中文維基百科)、コピー & ペーストをキャプチャしようとして失敗しました。

flagsChangedと組み合わせて使用​​すると実用的な解決策を得ることができると思いますkeyDownが、これはハックのように感じられ、誰かがより良い解決策を知っていると確信しています。:)

編集:明確にするために、私は主に事前定義されたコピーイベントまたはキーコードの存在を探しています。Copy を「Command + C」として手動で定義すると、ユーザーがキーを再マップしたり、何らかのアクセシビリティ ツールを使用したりすると、それが機能しなくなる可能性があるという論理的根拠があります。

4

1 に答える 1

0

NSEventクラスメソッドを使用できます:+ (id)addGlobalMonitorForEventsMatchingMask:(NSEventMask)mask handler:(void (^)(NSEvent*))block

またはあなたが実装することができます- (void)keyDown:(NSEvent *)theEvent

- (void)keyDown:(NSEvent *)theEvent {

    if ([theEvent modifierFlags] & NSCommandKeyMask) {
        NSString *character = [theEvent charactersIgnoringModifiers];
        if ([character isEqualToString:@"c"]) {
            NSLog(@"Capture Copy&Paste Key");
        }
    }
    [super keyDown:theEvent];
}
于 2013-03-11T06:51:10.713 に答える