26 @"@.":
@"cancelOperation:",
29 @"^a":
@"moveToBeginningOfParagraph:",
30 @"^$a":
@"moveToBeginningOfParagraphAndModifySelection:",
31 @"^b":
@"moveBackward:",
32 @"^$b":
@"moveBackwardAndModifySelection:",
33 @"^~b":
@"moveWordBackward:",
34 @"^~$b":
@"moveWordBackwardAndModifySelection:",
35 @"^d":
@"deleteForward:",
36 @"^e":
@"moveToEndOfParagraph:",
37 @"^$e":
@"moveToEndOfParagraphAndModifySelection:",
38 @"^f":
@"moveForward:",
39 @"^$f":
@"moveForwardAndModifySelection:",
40 @"^~f":
@"moveWordForward:",
41 @"^~$f":
@"moveWordForwardAndModifySelection:",
42 @"^h":
@"deleteBackward:",
43 @"^k":
@"deleteToEndOfParagraph:",
44 @"^l":
@"centerSelectionInVisibleArea:",
46 @"^$n":
@"moveDownAndModifySelection:",
47 @"^o": [@"insertNewlineIgnoringFieldEditor:", @"moveBackward:"],
49 @"^$p":
@"moveUpAndModifySelection:",
52 @"^$v":
@"pageDownAndModifySelection:",
110 CPStandardKeyBindings[@"~" + CPUpArrowFunctionKey] = [@"moveBackward:", @"moveToBeginningOfParagraph:"];
144 unsigned _modifierFlags;
159 + (void)createKeyBindingsFromJSObject:(JSObject)anObject
162 for (binding in anObject)
180 + (CPArray)selectorsForKey:(
CPString)aKey modifierFlags:(
unsigned)aFlag
185 - (id)initWithPhysicalKeyString:(
CPString)binding selectors:(CPArray)selectors
187 var components = binding.split(
@""),
188 modifierFlags = ([components containsObject:@"$"] ?
CPShiftKeyMask : 0) |
191 ([components containsObject:
@"@"] ? CPCommandKeyMask : 0); 193 if (![selectors isKindOfClass:CPArray]) 194 selectors = [selectors]; 196 return [self initWithKey:[components lastObject] modifierFlags:modifierFlags selectors:selectors]; 199 - (id)initWithKey:(CPString)aKey modifierFlags:(unsigned)aFlag selectors:(CPArray)selectors 206 _modifierFlags = aFlag; 208 _selectors = selectors; 210 // We normalize our key binding string in order to properly cache it. 211 // We want to ensure the modifiers are always in the same order. 214 if (_modifierFlags & CPCommandKeyMask) 215 cacheName.push(@"@"); 216 if (_modifierFlags & CPControlKeyMask) 217 cacheName.push(@"^");
218 if (_modifierFlags & CPAlternateKeyMask)
219 cacheName.push(@"~");
220 if (_modifierFlags & CPShiftKeyMask)
221 cacheName.push(@"$");
223 cacheName.push(_key);
225 _cacheName = cacheName.join(@"");
236 - (unsigned)modifierFlags
238 return _modifierFlags;
246 - (CPString)_cacheName
251 - (BOOL)isEqual:(CPKeyBinding)rhs
253 return _key === [rhs key] && _modifierFlags === [rhs modifierFlags];
256 - (CPString)description
258 return [CPString stringWithFormat:@"<KeyBinding string: '%@' modifierFlags: 0x%lx selectors: %@>", _key, _modifierFlags, _selectors];
id initWithKey:modifierFlags:selectors:(CPString aKey, [modifierFlags] unsigned aFlag, [selectors] CPArray selectors)
An immutable string (collection of characters).
void createKeyBindingsFromJSObject:(JSObject anObject)
id initWithPhysicalKeyString:selectors:(CPString binding, [selectors] CPArray selectors)
void cacheKeyBinding:(CPKeyBinding aBinding)
CPKeyBinding keyBindingForKey:modifierFlags:(CPString aKey, [modifierFlags] unsigned aFlag)