EventTypeComplex := 6. "types for touch events" Technically the event comes up as an array of integers, this was changed to allow the 4th indexed item to be a Smalltalk Object typedef struct sqComplexEvent { int type; /* type of event; EventTypeComplex */ unsigned int timeStamp; /* time stamp */ /* the interpretation of the following fields depend on the type of the event */ int action; /* one of ComplexEventXXX (see below) */ usqInt objectPointer; /* used to point to object */ int unused1; /* */ int unused2; /* */ int unused3; /* */ int windowIndex; /* host window structure */ } sqComplexEvent; The 4th item contains the following Smalltalk Objects interpreterProxy->storePointerofObjectwithValue(0, storageArea, squeakMSTime); interpreterProxy->storePointerofObjectwithValue(1, storageArea, timeStamp); interpreterProxy->storePointerofObjectwithValue(2, storageArea, phase); interpreterProxy->storePointerofObjectwithValue(3, storageArea, tapCount); interpreterProxy->storePointerofObjectwithValue(4, storageArea, window); interpreterProxy->storePointerofObjectwithValue(5, storageArea, view); interpreterProxy->storePointerofObjectwithValue(6, storageArea, locationInViewX); interpreterProxy->storePointerofObjectwithValue(7, storageArea, locationInViewY); interpreterProxy->storePointerofObjectwithValue(8, storageArea, previousLocationInViewX); interpreterProxy->storePointerofObjectwithValue(9, storageArea, previousLocationInViewY); typedef enum { UITouchPhaseBegan, = 0 // whenever a finger touches the surface. UITouchPhaseMoved, 1 // whenever a finger moves on the surface. UITouchPhaseStationary, 2 // whenever a finger is touching the surface but hasn't moved since the previous event. UITouchPhaseEnded, 3 // whenever a finger leaves the surface. UITouchPhaseCancelled, 4 // whenever a touch doesn't end but we need to stop tracking (e.g. putting device to face) } and EventTouchDown := 1. EventTouchUp := 2. EventTouchMoved := 3. EventTouchStationary := 4. EventTouchCancelled := 5.