(****************************************************************************** * * Copyright (c) 1994-2000 Palm, Inc. or its subsidiaries. * All rights reserved. * * File: Event.h * * Release: Palm OS SDK 4.0 (63220) * * Description: * This file defines UI event structures and routines. * * History: * September 26, 1994 Created by Art Lamb * 07/14/99 jesse Separated from Event.h * 09/12/99 gap Add for new multi-tap implementation * 09/14/99 gap Removed EvtGetTrapState. * 10/28/99 kwk Added EvtKeydownIsVirtual macro. * *****************************************************************************) unit event_; interface uses palmos, coretraps, sysevent, control, day, field, list, scrollbar, table; type eventsEnum = WordEnum; const nilEvent = 0; // system level penDownEvent = Succ(nilEvent); // system level penUpEvent = Succ(penDownEvent); // system level penMoveEvent = Succ(penUpEvent); // system level keyDownEvent = Succ(penMoveEvent); // system level winEnterEvent = Succ(keyDownEvent); // system level winExitEvent = Succ(winEnterEvent); // system level ctlEnterEvent = Succ(winExitEvent); ctlExitEvent = Succ(ctlEnterEvent); ctlSelectEvent = Succ(ctlExitEvent); ctlRepeatEvent = Succ(ctlSelectEvent); lstEnterEvent = Succ(ctlRepeatEvent); lstSelectEvent = Succ(lstEnterEvent); lstExitEvent = Succ(lstSelectEvent); popSelectEvent = Succ(lstExitEvent); fldEnterEvent = Succ(popSelectEvent); fldHeightChangedEvent = Succ(fldEnterEvent); fldChangedEvent = Succ(fldHeightChangedEvent); tblEnterEvent = Succ(fldChangedEvent); tblSelectEvent = Succ(tblEnterEvent); daySelectEvent = Succ(tblSelectEvent); menuEvent = Succ(daySelectEvent); appStopEvent = 22; // system level frmLoadEvent = Succ(appStopEvent); frmOpenEvent = Succ(frmLoadEvent); frmGotoEvent = Succ(frmOpenEvent); frmUpdateEvent = Succ(frmGotoEvent); frmSaveEvent = Succ(frmUpdateEvent); frmCloseEvent = Succ(frmSaveEvent); frmTitleEnterEvent = Succ(frmCloseEvent); frmTitleSelectEvent = Succ(frmTitleEnterEvent); tblExitEvent = Succ(frmTitleSelectEvent); sclEnterEvent = Succ(tblExitEvent); sclExitEvent = Succ(sclEnterEvent); sclRepeatEvent = Succ(sclExitEvent); tsmConfirmEvent = 35; // system level tsmFepButtonEvent = Succ(tsmConfirmEvent); // system level tsmFepModeEvent = Succ(tsmFepButtonEvent); // system level //DOLATER - peter: remove this: frmTitleChangedEvent, // system level attnIndicatorEnterEvent = Succ(tsmFepModeEvent); // for attention manager's indicator attnIndicatorSelectEvent = Succ(attnIndicatorEnterEvent); // for attention manager's indicator // add future UI level events in this numeric space // to save room for new system level events menuCmdBarOpenEvent = $0800; menuOpenEvent = Succ(menuCmdBarOpenEvent); menuCloseEvent = Succ(menuOpenEvent); frmGadgetEnterEvent = Succ(menuCloseEvent); frmGadgetMiscEvent = Succ(frmGadgetEnterEvent); // Equates added for library events firstINetLibEvent = $1000; firstWebLibEvent = $1100; // Changed firstUserEvent from 32767 (0x7FFF) to 0x6000 // Enums are signed ints, so 32767 technically only allowed for ONE event. firstUserEvent = $6000; lastUserEvent = $7FFF; type ctlEnter = record controlID: UInt16; pControl: ControlPtr; end; ctlExit = record controlID: UInt16; pControl: ControlPtr; end; ctlSelect = record controlID: UInt16; pControl: ControlPtr; on: Boolean; reserved1: UInt8; value: UInt16; // used for slider controls only end; ctlRepeat = record controlID: UInt16; pControl: ControlPtr; time: UInt32; value: UInt16; // used for slider controls only end; fldEnter = record fieldID: UInt16; pField: FieldPtr; end; fldHeightChanged = record fieldID: UInt16; pField: FieldPtr; newHeight: Int16; currentPos: UInt16; end; fldChanged = record fieldID: UInt16; pField: ^FieldType; end; fldExit = record fieldID: UInt16; pField: ^FieldType; end; lstEnter = record listID: UInt16; pList: ^ListType; selection: Int16; end; lstExit = record listID: UInt16; pList: ListPtr; end; lstSelect = record listID: UInt16; pList: ^ListType; selection: Int16; end; tblEnter = record tableID: UInt16; pTable: TablePtr; row: Int16; column: Int16; end; tblExit = record tableID: UInt16; pTable: TablePtr; row: Int16; column: Int16; end; tblSelect = record tableID: UInt16; pTable: TablePtr; row: Int16; column: Int16; end; frmLoad = record formID: UInt16; end; frmOpen = record formID: UInt16; end; frmGoto = record formID: UInt16; recordNum: UInt16; // index of record that contain a match matchPos: UInt16; // postion in record of the match. matchLen: UInt16; // length of match. matchFieldNum: UInt16; // field number string was found int matchCustom: UInt32; // application specific info end; frmClose = record formID: UInt16; end; frmUpdate = record formID: UInt16; updateCode: UInt16; // Application specific end; frmTitleEnter = record formID: UInt16; end; frmTitleSelect = record formID: UInt16; end; attnIndicatorEnter = record formID: UInt16; end; attnIndicatorSelect = record formID: UInt16; end; daySelect = record pSelector: ^DaySelectorType; selection: Int16; useThisDate: Boolean; reserved1: UInt8; end; menu = record itemID: UInt16; end; popSelect = record controlID: UInt16; controlP: ^ControlType; listID: UInt16; listP: ^ListType; selection: Int16; priorSelection: Int16; end; sclEnter = record scrollBarID: UInt16; pScrollBar: ^ScrollBarType; end; sclExit = record scrollBarID: UInt16; pScrollBar: ^ScrollBarType; value: Int16; newValue: Int16; end; sclRepeat = record scrollBarID: UInt16; pScrollBar: ^ScrollBarType; value: Int16; newValue: Int16; time: Int32; end; menuCmdBarOpen = record preventFieldButtons: Boolean; // set to stop the field from automatically adding cut/copy/paste reserved: UInt8; // alignment padding end; menuOpen = record menuRscID: UInt16; //struct MenuBarType *pMenu; cause: Int16; end; gadgetEnter = record gadgetID: UInt16; // must be same as gadgetMisc gadgetP: Pointer{^FormGadgetType}; // must be same as gadgetMisc end; gadgetMisc = record gadgetID: UInt16; // must be same as gadgetEnter gadgetP: Pointer{^FormGadgetType}; // must be same as gadgetEnter selector: UInt16; dataP: Pointer; end; // The event record. type EventType = record eType: eventsEnum; penDown: Boolean; tapCount: UInt8; screenX: Int16; screenY: Int16; case Integer of 1: (generic: _GenericEventType); 2: (penUp: _PenUpEventType); 3: (keyDown: _KeyDownEventType); 4: (winEnter: _WinEnterEventType); 5: (winExit: _WinExitEventType); 6: (tsmConfirm: _TSMConfirmType); 7: (tsmFepButton: _TSMFepButtonType); 8: (tsmFepMode: _TSMFepModeEventType); 9: (ctlEnter: ctlEnter); 10: (ctlSelect: ctlSelect); 11: (ctlRepeat: ctlRepeat); 12: (ctlExit: ctlExit); 13: (fldEnter: fldEnter); 14: (fldHeightChanged: fldHeightChanged); 15: (fldChanged: fldChanged); 16: (fldExit: fldExit); 17: (lstEnter: lstEnter); 18: (lstExit: lstExit); 19: (lstSelect: lstSelect); 20: (tblEnter: tblEnter); 21: (tblExit: tblExit); 22: (tblSelect: tblSelect); 23: (frmLoad: frmLoad); 24: (frmOpen: frmOpen); 25: (frmGoto: frmGoto); 26: (frmClose: frmClose); 27: (frmUpdate: frmUpdate); 28: (frmTitleEnter: frmTitleEnter); 29: (frmTitleSelect: frmTitleSelect); 30: (attnIndicatorEnter: attnIndicatorEnter); 31: (attnIndicatorSelect: attnIndicatorSelect); 32: (daySelect: daySelect); 33: (menu: menu); 34: (popSelect: popSelect); 35: (sclEnter: sclEnter); 36: (sclExit: sclExit); 37: (sclRepeat: sclRepeat); 38: (menuCmdBarOpen: menuCmdBarOpen); 39: (menuOpen: menuOpen); 40: (gadgetEnter: gadgetEnter); 41: (gadgetMisc: gadgetMisc); end; TEvent = EventType; EventPtr = ^EventType; // Evaluate to true if is a pointer to a virtual character key- // down event. We assume that the caller has already determined the event // is a keydown. WARNING!!! This macro is only safe to use on Palm OS 3.5 // or later. With earlier versions of the OS, use TxtGlueCharIsVirtual() // in PalmOSGlue.lib function EvtKeydownIsVirtual(eventP: EventPtr): Boolean; //--------------------------------------------------------------------- // Event Functions //--------------------------------------------------------------------- procedure EvtAddEventToQueue(const event: EventPtr); syscall sysTrapEvtAddEventToQueue; procedure EvtAddUniqueEventToQueue(const eventP: EventPtr; id: UInt32; inPlace: Boolean); syscall sysTrapEvtAddUniqueEventToQueue; procedure EvtCopyEvent(const source: EventPtr; dest: EventPtr); syscall sysTrapEvtCopyEvent; procedure EvtGetEvent(var event: EventType; timeout: Int32); syscall sysTrapEvtGetEvent; function EvtEventAvail: Boolean; syscall sysTrapEvtEventAvail; procedure EvtGetPen(var pScreenX, pScreenY: Int16; var pPenDown: Boolean); syscall sysTrapEvtGetPen; implementation function EvtKeydownIsVirtual(eventP: EventPtr): Boolean; begin EvtKeydownIsVirtual := (eventP^.keyDown.modifiers and virtualKeyMask) <> 0 end; end.