123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- {$MACRO ON}
- {$define Rsc := }
- (******************************************************************************
- *
- * Copyright (c) 1994-2000 Palm, Inc. or its subsidiaries.
- * All rights reserved.
- *
- * File: SysEvtMgr.h
- *
- * Release: Palm OS SDK 4.0 (63220)
- *
- * Description:
- * Header for the System Event Manager
- *
- * History:
- * 03/22/95 RM Created by Ron Marianetti
- * 07/23/98 kwk Changed UInt16 param in EvtEnqueueKey to WChar.
- *
- *****************************************************************************)
- unit sysevtmgr;
- interface
- uses palmos, coretraps, rect, errorbase, sysevent;
- (************************************************************
- * System Event Manager Errors
- *************************************************************)
- const
- evtErrParamErr = evtErrorClass or 1;
- evtErrQueueFull = evtErrorClass or 2;
- evtErrQueueEmpty = evtErrorClass or 3;
- (************************************************************
- * Commands for EvtSetAutoOffTimer()
- *************************************************************)
- type
- EvtSetAutoOffCmd = Enum;
- const
- SetAtLeast = 0; // turn off in at least xxx seconds
- SetExactly = Succ(SetAtLeast); // turn off in xxx seconds
- SetAtMost = Succ(SetExactly); // turn off in at most xxx seconds
- SetDefault = Succ(SetAtMost); // change default auto-off timeout to xxx seconds
- ResetTimer = Succ(SetDefault); // reset the timer to the default auto-off timeout
- (************************************************************
- * Pen button info structure. This structure is used
- * to hold the bounds of each button on the silk screen and
- * the ascii code and modifiers byte that each will generate
- * when tapped by the user.
- *************************************************************)
- type
- PenBtnInfoType = record
- boundsR: RectangleType; // bounding rectangle of button
- asciiCode: WChar; // ascii code for key event
- keyCode: UInt16; // virtual key code for key event
- modifiers: UInt16; // modifiers for key event
- end;
- PenBtnInfoPtr = ^PenBtnInfoType;
- type
- PenBtnListType = record
- numButtons: UInt16; // Count of number of buttons
- buttons: array [0..0] of PenBtnInfoType; // Placeholder for one or more buttons
- end;
- (************************************************************
- * Silkscreen area info structure. An array of these structures
- * is returned by the EvtGetSilkscreenAreaList function.
- *************************************************************)
- // Different types of rectangles on the display. For new vendor areas,
- // the type should be set to the vendor's creator code, as assigned
- // by 3Com's Partner Engineering group.
- const
- silkscreenRectScreen = Rsc('scrn');
- silkscreenRectGraffiti = Rsc('graf');
- // Values for SilkscreenAreaType.index if areaType = silkscreenRectGraffiti
- alphaGraffitiSilkscreenArea = 0;
- numericGraffitiSilkscreenArea = 1;
- // One silkscreen area. The areaType field tells us which type of
- // area it is, while the index field has different meanings depending
- // on the area type.
- type
- SilkscreenAreaType = record
- bounds: RectangleType;
- areaType: UInt32; // four byte creator code.
- index: UInt16;
- end;
- SilkscreenAreaPtr = ^SilkscreenAreaType;
- (************************************************************
- * System Event Manager procedures
- *************************************************************)
- //-----------------------------------------------------------------
- // High Level Calls
- //------------------------------------------------------------------
- function EvtSysInit: Err; syscall sysTrapEvtSysInit;
- // Return next "System" event. This routine will send strokes to Graffiti as necessary
- // and return a key event. Otherwise, it will return a simple pen down or pen
- // up event, or put the processor to sleep for a max time of 'timeout' if
- // no events are available.
- procedure EvtGetSysEvent(var eventP: SysEventType; timeout: Int32); syscall sysTrapEvtGetSysEvent;
- // Return true if there is a low level system event (pen or key) available
- function EvtSysEventAvail(ignorePenUps: Boolean): Boolean; syscall sysTrapEvtSysEventAvail;
- // Translate a stroke in the silk screen area to a key event
- function EvtProcessSoftKeyStroke(var startPtP, endPtP: PointType): Err; syscall sysTrapEvtProcessSoftKeyStroke;
- //-----------------------------------------------------------------
- // Pen Queue Utilties
- //------------------------------------------------------------------
- // Replace current pen queue with another of the given size
- function EvtSetPenQueuePtr(penQueueP: MemPtr; size: UInt32): Err; syscall sysTrapEvtSetPenQueuePtr;
- // Return size of current pen queue in bytes
- function EvtPenQueueSize: UInt32; syscall sysTrapEvtPenQueueSize;
- // Flush the pen queue
- function EvtFlushPenQueue: Err; syscall sysTrapEvtFlushPenQueue;
- // Append a point to the pen queue. Passing -1 for x and y means
- // pen-up (terminate the current stroke). Called by digitizer interrupt routine
- function EvtEnqueuePenPoint(var ptP: PointType): Err; syscall sysTrapEvtEnqueuePenPoint;
- // Return the stroke info for the next stroke in the pen queue. This MUST
- // be the first call when removing a stroke from the queue
- function EvtDequeuePenStrokeInfo(var startPtP, endPtP: PointType): Err; syscall sysTrapEvtDequeuePenStrokeInfo;
- // Dequeue the next point from the pen queue. Returns non-0 if no
- // more points. The point returned will be (-1,-1) at the end
- // of the stroke.
- function EvtDequeuePenPoint(var retP: PointType): Err; syscall sysTrapEvtDequeuePenPoint;
- // Flush the entire stroke from the pen queue and dispose it
- function EvtFlushNextPenStroke: Err; syscall sysTrapEvtFlushNextPenStroke;
- //-----------------------------------------------------------------
- // Key Queue Utilties
- //------------------------------------------------------------------
- // Replace current key queue with another of the given size. This routine will
- // intialize the given key queue before installing it
- function EvtSetKeyQueuePtr(keyQueueP: MemPtr; size: UInt32): Err; syscall sysTrapEvtSetKeyQueuePtr;
- // Return size of current key queue in bytes
- function EvtKeyQueueSize: UInt32; syscall sysTrapEvtKeyQueueSize;
- // Flush the key queue
- function EvtFlushKeyQueue: Err; syscall sysTrapEvtFlushKeyQueue;
- // Append a key to the key queue.
- function EvtEnqueueKey(ascii: WChar; keycode, modifiers: UInt16): Err; syscall sysTrapEvtEnqueueKey;
- // Return true of key queue empty.
- function EvtKeyQueueEmpty: Boolean; syscall sysTrapEvtKeyQueueEmpty;
- // Pop off the next key event from the key queue and fill in the given
- // event record structure. Returns non-zero if there aren't any keys in the
- // key queue. If peek is non-zero, key will be left in key queue.
- function EvtDequeueKeyEvent(var eventP: SysEventType; peek: UInt16): Err; syscall sysTrapEvtDequeueKeyEvent;
- //-----------------------------------------------------------------
- // Silkscreen information calls
- //------------------------------------------------------------------
- // Return pointer to the pen based button list
- function EvtGetPenBtnList(var numButtons: UInt16): PenBtnInfoPtr; syscall sysTrapEvtGetPenBtnList;
- // Return pointer to the silkscreen area list
- function EvtGetSilkscreenAreaList(var numAreas: UInt16): SilkscreenAreaPtr; syscall sysTrapEvtGetSilkscreenAreaList;
- //-----------------------------------------------------------------
- // General Utilities
- //------------------------------------------------------------------
- // Force the system to wake-up. This will result in a null event being
- // sent to the current app.
- function EvtWakeup: Err; syscall sysTrapEvtWakeup;
- // Force the system to wake-up. This will NOT result in a null event being
- // sent to the current app.
- function EvtWakeupWithoutNilEvent: Err; syscall sysTrapEvtWakeupWithoutNilEvent;
- // Reset the auto-off timer. This is called by the SerialLink Manager in order
- // so we don't auto-off while receiving data over the serial port.
- function EvtResetAutoOffTimer: Err; syscall sysTrapEvtResetAutoOffTimer;
- function EvtSetAutoOffTimer(cmd: EvtSetAutoOffCmd; timeout: UInt16): Err; syscall sysTrapEvtSetAutoOffTimer;
- // Set Graffiti enabled or disabled.
- procedure EvtEnableGraffiti(enable: Boolean); syscall sysTrapEvtEnableGraffiti;
- // Force a NullEvent at or before tick
- function EvtSetNullEventTick(tick: UInt32): Boolean; syscall sysTrapEvtSetNullEventTick;
- (************************************************************
- * Assembly Function Prototypes
- *************************************************************)
- //#define _EvtEnqueuePenPoint ASM_SYS_TRAP(sysTrapEvtEnqueuePenPoint)
- implementation
- end.
|