#import "GKApplication.h" @implementation GKApplication // Override NSApplication's sendEvent method - (void)sendEvent:(NSEvent *)anEvent { // Checks for a command stroke if([anEvent type] == NSKeyDown && [anEvent modifierFlags] & NSCommandKeyMask) { switch ([[anEvent characters] characterAtIndex:0]) { case 'v': [self sendSelectorToFirstResponder:@selector(paste:)]; break; case 'a': [self sendSelectorToFirstResponder:@selector(selectAll:)]; break; case 'x': [self sendSelectorToFirstResponder:@selector(cut:)]; break; case 'c': [self sendSelectorToFirstResponder:@selector(copy:)]; break; case 'w': [[self keyWindow] close]; break; } } else [super sendEvent:anEvent]; } // Sends the given selector to the first responder - (void)sendSelectorToFirstResponder:(SEL)selector { NSResponder *firstResponder = [[self keyWindow] firstResponder]; if([firstResponder respondsToSelector:selector]) [firstResponder performSelector:selector withObject:self]; } @end