36 var _CPEventPeriodicEventPeriod = 0,
37 _CPEventPeriodicEventTimer = nil,
38 _CPEventUpperCaseRegex =
new RegExp(
"[A-Z]"),
39 _CPEventStartupMilliseconds =
new Date().getTime();
49 unsigned _modifierFlags;
50 CPTimeInterval _timestamp;
58 CPString _charactersIgnoringModifiers;
69 float _scrollingDeltaX;
70 float _scrollingDeltaY;
71 BOOL _hasPreciseScrollingDeltas;
74 BOOL _suppressCappuccinoCut;
75 BOOL _suppressCappuccinoPaste;
84 + (CPTimeInterval)currentTimestamp
86 return (
new Date().getTime() - _CPEventStartupMilliseconds) / 1000;
106 + (
CPEvent)keyEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned int)modifierFlags
107 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
108 characters:(
CPString)characters charactersIgnoringModifiers:(
CPString)unmodCharacters isARepeat:(BOOL)repeatKey keyCode:(
unsigned short)code
110 return [[
self alloc] _initKeyEventWithType:anEventType location:aPoint modifierFlags:modifierFlags
111 timestamp:aTimestamp windowNumber:aWindowNumber context:aGraphicsContext
112 characters:characters charactersIgnoringModifiers:unmodCharacters isARepeat:repeatKey keyCode:code];
130 + (id)mouseEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned)modifierFlags
131 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
132 eventNumber:(
int)anEventNumber clickCount:(
int)aClickCount pressure:(
float)aPressure
134 return [[
self alloc] _initMouseEventWithType:anEventType location:aPoint modifierFlags:modifierFlags
135 timestamp:aTimestamp windowNumber:aWindowNumber context:aGraphicsContext eventNumber:anEventNumber clickCount:aClickCount pressure:aPressure];
152 + (id)enterExitEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned)modifierFlags
153 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
154 eventNumber:(
int)anEventNumber trackingArea:(
CPTrackingArea)aTrackingArea
156 return [[
self alloc] _initEnterExitEventWithType:anEventType location:aPoint modifierFlags:modifierFlags timestamp:aTimestamp windowNumber:aWindowNumber context:aGraphicsContext eventNumber:anEventNumber trackingArea:aTrackingArea];
174 + (
CPEvent)otherEventWithType:(CPEventType)anEventType location:(CGPoint)aLocation modifierFlags:(
unsigned)modifierFlags
175 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
176 subtype:(
short)aSubtype data1:(
int)aData1 data2:(
int)aData2
178 return [[
self alloc] _initOtherEventWithType:anEventType location:aLocation modifierFlags:modifierFlags
179 timestamp:aTimestamp windowNumber:aWindowNumber context:aGraphicsContext subtype:aSubtype data1:aData1 data2:aData2];
182 - (id)_initWithType:(CPEventType)anEventType
184 if (
self = [super
init])
190 _scrollingDeltaX = 0;
192 _scrollingDeltaY = 0;
200 - (id)_initMouseEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned)modifierFlags
201 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
202 eventNumber:(
int)anEventNumber clickCount:(
int)aClickCount pressure:(
float)aPressure
204 if (
self = [
self _initWithType:anEventType])
206 _location = CGPointCreateCopy(aPoint);
207 _modifierFlags = modifierFlags;
208 _timestamp = aTimestamp;
209 _context = aGraphicsContext;
210 _eventNumber = anEventNumber;
211 _clickCount = aClickCount;
212 _pressure = aPressure;
213 _window = [CPApp windowWithWindowNumber:aWindowNumber];
220 - (id)_initEnterExitEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned)modifierFlags
221 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
222 eventNumber:(
int)anEventNumber trackingArea:(
CPTrackingArea)aTrackingArea
227 if (
self = [
self _initWithType:anEventType])
229 _location = CGPointCreateCopy(aPoint);
230 _modifierFlags = modifierFlags;
231 _timestamp = aTimestamp;
232 _context = aGraphicsContext;
233 _eventNumber = anEventNumber;
234 _trackingArea = aTrackingArea;
235 _window = [CPApp windowWithWindowNumber:aWindowNumber];
242 - (id)_initKeyEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned int)modifierFlags
243 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
244 characters:(
CPString)characters charactersIgnoringModifiers:(
CPString)unmodCharacters isARepeat:(BOOL)isARepeat keyCode:(
unsigned short)code
246 if (
self = [
self _initWithType:anEventType])
248 _location = CGPointCreateCopy(aPoint);
249 _modifierFlags = modifierFlags;
250 _timestamp = aTimestamp;
251 _context = aGraphicsContext;
252 _characters = characters;
253 _charactersIgnoringModifiers = unmodCharacters;
254 _isARepeat = isARepeat;
256 _windowNumber = aWindowNumber;
263 - (id)_initOtherEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned)modifierFlags
264 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
265 subtype:(
short)aSubtype data1:(
int)aData1 data2:(
int)aData2
267 if (
self = [
self _initWithType:anEventType])
269 _location = CGPointCreateCopy(aPoint);
270 _modifierFlags = modifierFlags;
271 _timestamp = aTimestamp;
272 _context = aGraphicsContext;
276 _windowNumber = aWindowNumber;
290 - (CGPoint)locationInWindow
292 return CGPointMakeCopy(_location);
295 - (CGPoint)globalLocation
297 var theWindow = [
self window],
301 return [theWindow convertBaseToGlobal:location];
309 - (unsigned)modifierFlags
311 return _modifierFlags;
317 - (CPTimeInterval)timestamp
333 - (CPEventType)subtype
344 _window = [CPApp windowWithWindowNumber:_windowNumber];
354 return _windowNumber;
394 return _charactersIgnoringModifiers;
412 - (
unsigned short)keyCode
417 + (CGPoint)mouseLocation
420 var
event = [CPApp currentEvent],
421 eventWindow = [event window];
424 return [eventWindow convertBaseToGlobal:[event locationInWindow]];
426 return [event locationInWindow];
437 - (DOMEvent)_DOMEvent
477 - (BOOL)hasPreciseScrollingDeltas
479 return !!_hasPreciseScrollingDeltas;
487 - (float)scrollingDeltaX
489 return _scrollingDeltaX;
497 - (float)scrollingDeltaY
499 return _scrollingDeltaY;
502 - (BOOL)_triggersKeyEquivalent:(
CPString)aKeyEquivalent withModifierMask:aKeyEquivalentModifierMask
507 if (_CPEventUpperCaseRegex.test(aKeyEquivalent))
524 return [_characters caseInsensitiveCompare:aKeyEquivalent] ===
CPOrderedSame;
527 - (BOOL)_couldBeKeyEquivalent
532 var characterCount = _characters.
length;
542 var firstResponderIsText = [[_window firstResponder] isKindOfClass:[
CPTextField class]];
546 for (var i = 0; i < characterCount; i++)
548 var c = _characters.charAt(i);
560 return !firstResponderIsText;
571 - (BOOL)_platformIsEffectingCutOrPaste
574 return _suppressCappuccinoCut || _suppressCappuccinoPaste;
587 + (void)startPeriodicEventsAfterDelay:(CPTimeInterval)aDelay withPeriod:(CPTimeInterval)aPeriod
589 _CPEventPeriodicEventPeriod = aPeriod;
592 _CPEventPeriodicEventTimer = window.setTimeout(
function() { _CPEventPeriodicEventTimer = window.setInterval(_CPEventFirePeriodEvent, aPeriod * 1000.0); }, aDelay * 1000.0);
598 + (void)stopPeriodicEvents
600 if (_CPEventPeriodicEventTimer === nil)
603 window.clearTimeout(_CPEventPeriodicEventTimer);
605 _CPEventPeriodicEventTimer = nil;
615 return [
CPString stringWithFormat:@"CPEvent: type=%d loc=%@ time=%.1f flags=0x%X win=%@ winNum=%d ctxt=%@ chars=\"%@\" unmodchars=\"%@\" repeat=%d keyCode=%d", _type, CGStringFromPoint(_location), _timestamp, _modifierFlags, _window, _windowNumber, _context, _characters, _charactersIgnoringModifiers, _isARepeat, _keyCode];
625 return [
CPString stringWithFormat:@"CPEvent: type=%d loc=%@ time=%.1f flags=0x%X win=%@ winNum=%d ctxt=%@ evNum=%d click=%d buttonNumber=%d pressure=%f", _type, CGStringFromPoint(_location), _timestamp, _modifierFlags, _window, _windowNumber, _context, _eventNumber, _clickCount, [
self buttonNumber], _pressure];
627 return [
CPString stringWithFormat:@"CPEvent: type=%d loc=%@ time=%.1f flags=0x%X win=%@ winNum=%d ctxt=%@ subtype=%d data1=%d data2=%d", _type, CGStringFromPoint(_location), _timestamp, _modifierFlags, _window, _windowNumber, _context, _subtype, _data1, _data2];
634 [
CPException raise:CPInternalInconsistencyException
format:@"You can't call trackingArea for events of type %#x", _type];
636 return _trackingArea;
641 function _CPEventFirePeriodEvent()
648 function _CPEventFromNativeMouseEvent(aNativeEvent, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure)
652 aNativeEvent._type = anEventType;
653 aNativeEvent._location = aPoint;
654 aNativeEvent._modifierFlags = modifierFlags;
655 aNativeEvent._timestamp = aTimestamp;
656 aNativeEvent._windowNumber = aWindowNumber;
657 aNativeEvent._window = nil;
658 aNativeEvent._context = aGraphicsContext;
659 aNativeEvent._eventNumber = anEventNumber;
660 aNativeEvent._clickCount = aClickCount;
661 aNativeEvent._pressure = aPressure;
Used to implement exception handling (creating & raising).
void raise:format:(CPString aName, [format] CPString aFormat, [,] ...)
CGPoint locationInWindow()
void raise:reason:(CPString aName, [reason] CPString aReason)
An immutable string (collection of characters).
CPEvent otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:(CPEventType anEventType, [location] CGPoint aLocation, [modifierFlags] unsigned modifierFlags, [timestamp] CPTimeInterval aTimestamp, [windowNumber] int aWindowNumber, [context] CPGraphicsContext aGraphicsContext, [subtype] short aSubtype, [data1] int aData1, [data2] int aData2)
function CPBrowserIsOperatingSystem(anOperatingSystem)
CPTimeInterval currentTimestamp()
CPCarriageReturnCharacter
id stringWithFormat:(CPString format, [,] ...)
FrameUpdater prototype description