33 var _CPEventPeriodicEventPeriod = 0,
34 _CPEventPeriodicEventTimer = nil,
35 _CPEventUpperCaseRegex =
new RegExp(
"[A-Z]"),
36 _CPEventStartupMilliseconds =
new Date().getTime();
46 unsigned _modifierFlags;
47 CPTimeInterval _timestamp;
55 CPString _charactersIgnoringModifiers
66 float _scrollingDeltaX;
67 float _scrollingDeltaY;
68 BOOL _hasPreciseScrollingDeltas;
71 BOOL _suppressCappuccinoCut;
72 BOOL _suppressCappuccinoPaste;
83 return (
new Date().getTime() - _CPEventStartupMilliseconds) / 1000;
103 + (
CPEvent)keyEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned int)modifierFlags
104 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
105 characters:(
CPString)characters charactersIgnoringModifiers:(
CPString)unmodCharacters isARepeat:(BOOL)repeatKey keyCode:(
unsigned short)code
107 return [[
self alloc] _initKeyEventWithType:anEventType location:aPoint modifierFlags:modifierFlags
108 timestamp:aTimestamp windowNumber:aWindowNumber context:aGraphicsContext
109 characters:characters charactersIgnoringModifiers:unmodCharacters isARepeat:repeatKey keyCode:code];
127 + (id)mouseEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned)modifierFlags
128 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
129 eventNumber:(
int)anEventNumber clickCount:(
int)aClickCount pressure:(
float)aPressure
131 return [[
self alloc] _initMouseEventWithType:anEventType location:aPoint modifierFlags:modifierFlags
132 timestamp:aTimestamp windowNumber:aWindowNumber context:aGraphicsContext eventNumber:anEventNumber clickCount:aClickCount pressure:aPressure];
149 + (id)enterExitEventWithType:(CPEventType)anEventType location:(CGPoint)aPoint modifierFlags:(
unsigned)modifierFlags
150 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
151 eventNumber:(
int)anEventNumber trackingArea:(
CPTrackingArea)aTrackingArea
153 return [[
self alloc] _initEnterExitEventWithType:anEventType location:aPoint modifierFlags:modifierFlags timestamp:aTimestamp windowNumber:aWindowNumber context:aGraphicsContext eventNumber:anEventNumber trackingArea:aTrackingArea];
171 + (
CPEvent)otherEventWithType:(CPEventType)anEventType location:(CGPoint)aLocation modifierFlags:(
unsigned)modifierFlags
172 timestamp:(CPTimeInterval)aTimestamp windowNumber:(
int)aWindowNumber context:(
CPGraphicsContext)aGraphicsContext
173 subtype:(
short)aSubtype data1:(
int)aData1 data2:(
int)aData2
175 return [[
self alloc] _initOtherEventWithType:anEventType location:aLocation modifierFlags:modifierFlags
176 timestamp:aTimestamp windowNumber:aWindowNumber context:aGraphicsContext subtype:aSubtype data1:aData1 data2:aData2];
179 - (id)_initWithType:(CPEventType)anEventType
181 if (
self = [super
init])
187 _scrollingDeltaX = 0;
189 _scrollingDeltaY = 0;
201 if (
self = [
self _initWithType:anEventType])
203 _location = CGPointCreateCopy(aPoint);
205 _timestamp = aTimestamp;
206 _context = aGraphicsContext;
207 _eventNumber = anEventNumber;
208 _clickCount = aClickCount;
209 _pressure = aPressure;
210 _window = [CPApp windowWithWindowNumber:aWindowNumber];
224 if (
self = [
self _initWithType:anEventType])
226 _location = CGPointCreateCopy(aPoint);
228 _timestamp = aTimestamp;
229 _context = aGraphicsContext;
230 _eventNumber = anEventNumber;
231 _trackingArea = aTrackingArea;
232 _window = [CPApp windowWithWindowNumber:aWindowNumber];
243 if (
self = [
self _initWithType:anEventType])
245 _location = CGPointCreateCopy(aPoint);
247 _timestamp = aTimestamp;
248 _context = aGraphicsContext;
250 _charactersIgnoringModifiers = unmodCharacters;
253 _windowNumber = aWindowNumber;
262 subtype:(
short)aSubtype
data1:(int)aData1
data2:(
int)aData2
264 if (
self = [
self _initWithType:anEventType])
266 _location = CGPointCreateCopy(aPoint);
268 _timestamp = aTimestamp;
269 _context = aGraphicsContext;
273 _windowNumber = aWindowNumber;
289 return CGPointMakeCopy(_location);
294 var theWindow = [
self window],
298 return [theWindow convertBaseToGlobal:location];
308 return _modifierFlags;
333 _window = [CPApp windowWithWindowNumber:_windowNumber];
343 return _windowNumber;
383 return _charactersIgnoringModifiers;
409 var
event = [CPApp currentEvent],
410 eventWindow = [event window];
413 return [eventWindow convertBaseToGlobal:[event locationInWindow]];
415 return [event locationInWindow];
426 - (DOMEvent)_DOMEvent
468 return !!_hasPreciseScrollingDeltas;
478 return _scrollingDeltaX;
488 return _scrollingDeltaY;
491 - (BOOL)_triggersKeyEquivalent:(
CPString)aKeyEquivalent withModifierMask:aKeyEquivalentModifierMask
496 if (_CPEventUpperCaseRegex.test(aKeyEquivalent))
513 return [_characters caseInsensitiveCompare:aKeyEquivalent] ===
CPOrderedSame;
516 - (BOOL)_couldBeKeyEquivalent
521 var characterCount = _characters.
length;
531 var firstResponderIsText = [[_window firstResponder] isKindOfClass:[
CPTextField class]];
535 for (var i = 0; i < characterCount; i++)
537 var c = _characters.charAt(i);
549 return !firstResponderIsText;
560 - (BOOL)_platformIsEffectingCutOrPaste
563 return _suppressCappuccinoCut || _suppressCappuccinoPaste;
576 + (void)startPeriodicEventsAfterDelay:(CPTimeInterval)aDelay withPeriod:(CPTimeInterval)aPeriod
578 _CPEventPeriodicEventPeriod = aPeriod;
581 _CPEventPeriodicEventTimer =
window.setTimeout(
function() { _CPEventPeriodicEventTimer =
window.setInterval(_CPEventFirePeriodEvent, aPeriod * 1000.0); }, aDelay * 1000.0);
589 if (_CPEventPeriodicEventTimer === nil)
592 window.clearTimeout(_CPEventPeriodicEventTimer);
594 _CPEventPeriodicEventTimer = nil;
604 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];
614 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];
616 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];
623 [
CPException raise:CPInternalInconsistencyException
format:@"You can't call trackingArea for events of type %#x", _type]
625 return _trackingArea;
630 function _CPEventFirePeriodEvent()
637 function _CPEventFromNativeMouseEvent(aNativeEvent, anEventType, aPoint,
modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure)
641 aNativeEvent._type = anEventType;
642 aNativeEvent._location = aPoint;
644 aNativeEvent._timestamp = aTimestamp;
645 aNativeEvent._windowNumber = aWindowNumber;
646 aNativeEvent._window = nil;
647 aNativeEvent._context = aGraphicsContext;
648 aNativeEvent._eventNumber = anEventNumber;
649 aNativeEvent._clickCount = aClickCount;
650 aNativeEvent._pressure = aPressure;
Used to implement exception handling (creating & raising).
CGPoint locationInWindow()
CPString charactersIgnoringModifiers()
BOOL hasPreciseScrollingDeltas()
An immutable string (collection of characters).
void stopPeriodicEvents()
void raise:format:(CPString aName, [format] CPString aFormat, [,]...)
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)
CPInternalInconsistencyException
CPTimeInterval timestamp()
function CPBrowserIsOperatingSystem(anOperatingSystem)
id stringWithFormat:(CPString format, [,]...)
CPTimeInterval currentTimestamp()
CPCarriageReturnCharacter
CPTrackingArea trackingArea()