3 Copyright (c) 2003, Apple, Inc. All rights reserved.
6 #import <WebKit/WebNSEventExtras.h>
8 #import <AppKit/NSKeyBindingManager.h>
10 @implementation NSEvent (WebExtras)
12 -(BOOL)_web_isKeyEvent:(unichar)key
14 int type = [self type];
15 if (type != NSKeyDown && type != NSKeyUp)
18 NSString *chars = [self charactersIgnoringModifiers];
19 if ([chars length] != 1)
22 unichar c = [chars characterAtIndex:0];
29 - (BOOL)_web_isDeleteKeyEvent
31 const unichar deleteKey = NSDeleteCharacter;
32 const unichar deleteForwardKey = NSDeleteFunctionKey;
33 return [self _web_isKeyEvent:deleteKey] || [self _web_isKeyEvent:deleteForwardKey];
36 - (BOOL)_web_isEscapeKeyEvent
38 const unichar escapeKey = 0x001b;
39 return [self _web_isKeyEvent:escapeKey];
42 - (BOOL)_web_isOptionTabKeyEvent
44 return ([self modifierFlags] & NSAlternateKeyMask) && [self _web_isTabKeyEvent];
47 - (BOOL)_web_isReturnOrEnterKeyEvent
49 const unichar enterKey = NSEnterCharacter;
50 const unichar returnKey = NSCarriageReturnCharacter;
51 return [self _web_isKeyEvent:enterKey] || [self _web_isKeyEvent:returnKey];
54 - (BOOL)_web_isTabKeyEvent
56 const unichar tabKey = 0x0009;
57 const unichar shiftTabKey = 0x0019;
58 return [self _web_isKeyEvent:tabKey] || [self _web_isKeyEvent:shiftTabKey];
61 - (BOOL)_web_keyBindingManagerHasBinding
63 NSDictionary *keyBindings = [[NSKeyBindingManager sharedKeyBindingManager] dictionary];
64 return [keyBindings objectForKey:[self characters]] != nil;